Plan 도메인 요구사항 명세서
1. 기능 요구사항
1.1 플랜(Plan) 생명주기 관리
백엔드 요구사항
- PLN-FR-BE-001: 플랜을 생성, 조회, 수정, 삭제할 수 있어야 한다. (CRUD)
- PLN-FR-BE-002: 플랜은 이름, 설명, 상태(활성/비활성) 등의 메타데이터를 가져야 한다. (CRUD)
- PLN-FR-BE-003: 플랜의 활성/비활성 상태를 관리할 수 있어야 한다. (상태 관리)
- PLN-FR-BE-004: 플랜 변경 이력을 관리할 수 있어야 한다. (상태 관리)
- PLN-FR-BE-005: 플랜 생성, 수정, 삭제에 대한 감사 로그를 기록해야 한다. ([Audit 도메인] 의존, 상태 관리)
- PLN-FR-BE-006: 플랜의 버전 관리를 지원해야 한다. (버전 관리)
- PLN-FR-BE-007: 플랜 템플릿을 관리하여 신규 플랜 생성을 용이하게 해야 한다. (템플릿 관리)
1.2 플랜 유형 및 분류 관리
백엔드 요구사항
- PLN-FR-BE-008: 서비스 플랜 유형을 정의하고 관리할 수 있어야 한다. (플랜 유형 관리)
- 치료 플랜 (Therapeutic Plan): 불면증 진단을 받은 사용자를 대상으로 하는 기본 치료 플랜
- 제한 플랜 (Limited Access Plan): 치료 플랜 기간이 만료된 사용자를 위한 제한된 기능 플랜
- 샘플 플랜 (Sample Plan): 체험용 또는 데모용 플랜
- 게스트 플랜 (Guest Access Plan): 인증 연동 없이 약관 동의만으로 온보딩한 사용자를 위한 제한 플랜
- 개발 플랜 (Development Plan): 개발 및 테스트 환경용 플랜
- 클리니션 플랜 (Clinician Plan): 의료진용 전문 플랜
- PLN-FR-BE-009: 플랜별 서비스 기간을 정의하고 관리할 수 있어야 한다. (서비스 기간 관리)
- PLN-FR-BE-010: 플랜별 기능 접근 범위를 정의하고 관리할 수 있어야 한다. (기능 범위 관리)
- PLN-FR-BE-011: 사용자 유형별 플랜을 구분하여 관리해야 한다:
- 고객(환자) 플랜: 치료 과정, 기능 접근 범위 등 서비스 이용 수준 정의
- 내부 운영자 플랜: 관리자, 의료진 등 내부 직원의 권한 패키지 정의
1.3 플랜-역할 관계 관리
백엔드 요구사항
- PLN-FR-BE-012: 하나의 플랜은 여러 개의 역할(Role)을 포함할 수 있어야 한다. (플랜-역할 관계)
- PLN-FR-BE-013: 플랜에 역할을 추가하거나 제거하는 기능을 제공해야 한다. (플랜-역할 관계)
- PLN-FR-BE-014: 특정 플랜에 포함된 역할 목록을 조회할 수 있어야 한다. (플랜-역할 관계)
- PLN-FR-BE-015: 플랜-역할 관계의 변경 이력을 추적할 수 있어야 한다. (관계 이력 관리)
- PLN-FR-BE-016: 플랜-역할 할당 시 검증 규칙을 적용할 수 있어야 한다. (비즈니스 규칙 검증)
1.4 플랜 기능 및 제한사항 관리
백엔드 요구사항
- PLN-FR-BE-017: 플랜별 사용 가능한 기능 목록을 정의하고 관리할 수 있어야 한다. (기능 관리)
- PLN-FR-BE-018: 플랜별 기능 사용 제한사항을 설정할 수 있어야 한다. (제한사항 관리)
- API 호출 횟수 제한
- 데이터 저장 용량 제한
- 동시 접속자 수 제한
- 특정 기능 접근 시간대 제한
- PLN-FR-BE-019: 플랜별 서비스 품질(QoS) 수준을 정의할 수 있어야 한다. (QoS 관리)
- PLN-FR-BE-020: Feature Flag를 통한 플랜별 기능 제어를 지원해야 한다. (Feature Flag 연동)
- PLN-FR-BE-061: 시스템은 게스트 플랜에 대한 제한 사항과 승격 조건을 정의해야 한다.
- 게스트 플랜은 건강 데이터 열람, 치료 플로우 진행, 메시징 등 민감 기능에 접근할 수 없어야 한다.
- 게스트 플랜 사용자는 업그레이드 시 요구되는 추가 동의와 인증 수단을 안내받아야 한다.
- 게스트 플랜의 제한 사항은 Feature Flag 및 IAM 권한과 연동되어 일관되게 적용되어야 한다.
1.5 플랜 할당 및 변경 관리
백엔드 요구사항
- PLN-FR-BE-021: 사용자에게 플랜을 직접 할당할 수 있어야 한다. (플랜 할당)
- PLN-FR-BE-022: 플랜 할당 이력을 추적하고 관리할 수 있어야 한다. (할당 이력 관리)
- PLN-FR-BE-023: 플랜 변경(업그레이드/다운그레이드) 로직을 지원해야 한다. (플랜 변경)
- PLN-FR-BE-024: 플랜 변경 시 사용자의 그룹 멤버십은 영향을 받지 않아야 한다. (독립적 변경)
- PLN-FR-BE-025: 플랜 변경 시 데이터 마이그레이션을 지원해야 한다. (데이터 마이그레이션)
- PLN-FR-BE-026: 플랜 변경 시 기존 사용자 데이터의 영향도를 분석할 수 있어야 한다. (영향도 분석)
- PLN-FR-BE-027: 플랜 만료 처리 로직을 지원해야 한다. (만료 처리)
1.6 플랜 모니터링 및 분석
백엔드 요구사항
- PLN-FR-BE-028: 플랜별 사용 통계를 수집하고 분석할 수 있어야 한다. (사용량 분석)
- PLN-FR-BE-029: 플랜별 사용자 행동 패턴을 분석할 수 있어야 한다. (행동 분석)
- PLN-FR-BE-030: 플랜 성능 지표를 모니터링할 수 있어야 한다. (성능 모니터링)
- PLN-FR-BE-031: 플랜 변경 추천 로직을 지원해야 한다. (추천 시스템)
- PLN-FR-BE-032: 플랜별 수익성 분석을 지원해야 한다. ([Billing 도메인] 연동, 수익성 분석)
1.7 플랜 규칙 및 정책 관리
백엔드 요구사항
- PLN-FR-BE-033: 플랜별 비즈니스 규칙을 정의하고 관리할 수 있어야 한다. (비즈니스 규칙)
- PLN-FR-BE-034: 플랜 간 호환성 규칙을 정의할 수 있어야 한다. (호환성 관리)
- PLN-FR-BE-035: 플랜 변경 시 적용되는 정책을 관리할 수 있어야 한다. (변경 정책)
- PLN-FR-BE-036: 플랜별 데이터 보존 정책을 정의할 수 있어야 한다. (데이터 보존 정책)
- PLN-FR-BE-037: 플랜별 GDPR 준수 규칙을 적용할 수 있어야 한다. (GDPR 준수)
1.8 플랜 통합 및 연동
백엔드 요구사항
- PLN-FR-BE-038: IAM 도메인과의 연동을 통해 플랜 기반 권한 제어를 지원해야 한다. ([IAM 도메인] 연동)
- PLN-FR-BE-039: Billing 도메인과의 연동을 통해 플랜별 과금을 지원해야 한다. ([Billing 도메인] 연동)
- PLN-FR-BE-040: User 도메인과의 연동을 통해 사용자별 플랜 정보를 제공해야 한다. ([User 도메인] 연동)
- PLN-FR-BE-041: 사용자-플랜 연결은 User 도메인에서 직접 관리되며, Group과 독립적으로 운영된다. (독립적 연동)
- PLN-FR-BE-042: 외부 시스템과의 플랜 정보 동기화를 지원해야 한다. (외부 연동)
2. 비기능 요구사항
2.1 보안
접근 제어
- PLN-NFR-001: 모든 플랜 관리 API 요청은 인증 및 인가를 거쳐야 한다.
- PLN-NFR-002: 플랜 정보 접근은 역할 기반 접근 제어(RBAC)를 통해 제어되어야 한다.
- PLN-NFR-003: 플랜별 민감 정보는 암호화하여 저장해야 한다.
- PLN-NFR-004: 플랜 데이터의 무결성을 보장해야 한다.
데이터 보안
- PLN-NFR-005: 플랜 설정 정보는 암호화하여 저장해야 한다.
- PLN-NFR-006: 플랜 변경 이력은 변조 방지를 위해 해시 체인으로 관리해야 한다.
- PLN-NFR-007: 플랜 정보에 대한 모든 접근 및 변경은 감사 로그로 기록되어야 한다.
API 보안
- PLN-NFR-008: 플랜 관리 API는 입력값 검증을 통해 Injection 공격을 방지해야 한다.
- PLN-NFR-009: 플랜 조회 API는 Rate Limiting을 적용해야 한다.
- PLN-NFR-010: 플랜 변경 API는 추가적인 보안 검증을 수행해야 한다.
2.2 성능
응답 시간
- PLN-NFR-011: 플랜 조회 API 평균 응답 시간: < 50ms
- PLN-NFR-012: 플랜 목록 조회 API 평균 응답 시간: < 100ms
- PLN-NFR-013: 플랜 생성/수정 API 평균 응답 시간: < 200ms
- PLN-NFR-014: 플랜 삭제 API 평균 응답 시간: < 300ms
- PLN-NFR-015: 플랜-역할 관계 조회 API 평균 응답 시간: < 150ms
처리량
- PLN-NFR-016: 초당 최소 2000건의 플랜 조회 요청을 처리할 수 있어야 한다.
- PLN-NFR-017: 초당 최소 100건의 플랜 수정 요청을 처리할 수 있어야 한다.
- PLN-NFR-018: 초당 최소 50건의 플랜 생성 요청을 처리할 수 있어야 한다.
- PLN-NFR-019: 초당 최소 200건의 플랜-역할 관계 조회 요청을 처리할 수 있어야 한다.
캐싱 전략
- PLN-NFR-020: 플랜 정보를 캐싱하여 조회 성능을 향상시켜야 한다.
- PLN-NFR-021: 플랜-역할 관계 정보를 캐싱해야 한다.
- PLN-NFR-022: 플랜별 기능 목록을 캐싱해야 한다.
- PLN-NFR-023: 캐시 데이터의 일관성을 유지하기 위한 적절한 무효화 전략을 사용해야 한다.
2.3 가용성
서비스 가용성
- (공통 정책 참조) 가용성/복구/무중단 배포는
Platform도메인 기준을 따른다: PLT-NFR-004, PLT-NFR-005, PLT-NFR-007
데이터 가용성
- (공통 정책 참조) 백업/복구는
Platform도메인 기준을 따른다: PLT-NFR-006
2.4 확장성
수평적 확장
- (공통 정책 참조) 확장성/로드 밸런싱은
Platform도메인 기준을 따른다: PLT-NFR-001, PLT-NFR-003
기능 확장성
- PLN-NFR-032: 새로운 플랜 유형을 쉽게 추가할 수 있어야 한다.
- PLN-NFR-033: 플랜별 사용자 정의 속성을 추가할 수 있도록 확장 가능해야 한다.
- PLN-NFR-034: 외부 시스템과의 연동이 용이해야 한다.
2.5 사용자 유형별 플랜 관리
- PLN-NFR-035: 모든 플랜 설정을 관리할 수 있어야 한다. (System Admin)
- PLN-NFR-036: 모든 플랜의 상태를 관리할 수 있어야 한다. (System Admin)
- PLN-NFR-037: 플랜 생성, 수정, 삭제가 가능해야 한다. (System Admin)
- PLN-NFR-038: API 호출 제한 없이 사용할 수 있어야 한다. (System Admin)
- PLN-NFR-039: 할당된 범위 내 플랜의 상태를 관리할 수 있어야 한다. (Plan Admin)
- PLN-NFR-040: 플랜 정보를 조회하고 수정할 수 있어야 한다. (Plan Admin)
- PLN-NFR-041: 시간당 최대 5,000 요청으로 제한되어야 한다. (Plan Admin)
- PLN-NFR-042: 플랜 정보를 조회할 수 있어야 한다. (Service Account)
- PLN-NFR-043: 플랜-역할 관계를 조회할 수 있어야 한다. (Service Account)
- PLN-NFR-044: 시간당 최대 50,000 요청으로 제한되어야 한다. (Service Account)
- PLN-NFR-045: 자신이 속한 플랜 정보만 조회할 수 있어야 한다. (Regular User)
- PLN-NFR-046: 시간당 최대 50 요청으로 제한되어야 한다. (Regular User)
3. 제약사항
3.1 데이터 제약사항
플랜 데이터
- PLN-CR-001: 플랜 이름은 시스템 내에서 고유해야 한다.
- PLN-CR-002: 플랜 식별자는 생성 후 변경할 수 없다.
- PLN-CR-003: 하나의 플랜에 할당될 수 있는 역할의 최대 개수는 100개로 제한한다.
- PLN-CR-004: 플랜 설명의 최대 길이는 1000자로 제한한다.
플랜-역할 관계 데이터
- PLN-CR-005: 플랜과 역할 간의 관계는 순환 참조를 허용하지 않는다.
- PLN-CR-006: 하나의 역할은 최대 50개의 플랜에 할당될 수 있다.
- PLN-CR-007: 플랜-역할 관계의 메타데이터 최대 크기는 1KB로 제한한다.
플랜 기능 데이터
- PLN-CR-008: 플랜별 기능 목록의 최대 개수는 200개로 제한한다.
- PLN-CR-009: 기능별 제한사항 설정의 최대 크기는 2KB로 제한한다.
3.2 API 호출 제한
System Admin 제한사항
- PLN-CR-010: Rate Limit: 무제한
- PLN-CR-011: 권한 검증 결과 캐시의 TTL은 1분으로 설정한다.
- PLN-CR-012: 최대 동시 요청 수는 무제한이다.
Plan Admin 제한사항
- PLN-CR-013: Rate Limit: 시간당 5,000 요청으로 제한한다.
- PLN-CR-014: 권한 검증 결과 캐시의 TTL은 5분으로 설정한다.
- PLN-CR-015: 최대 동시 요청 수는 50개로 제한한다.
Service Account 제한사항
- PLN-CR-016: Rate Limit: 시간당 50,000 요청으로 제한한다.
- PLN-CR-017: 권한 검증 결과 캐시의 TTL은 10분으로 설정한다.
- PLN-CR-018: 최대 동시 요청 수는 100개로 제한한다.
Regular User 제한사항
- PLN-CR-019: Rate Limit: 시간당 50 요청으로 제한한다.
- PLN-CR-020: 권한 검증 결과 캐시의 TTL은 30분으로 설정한다.
- PLN-CR-021: 최대 동시 요청 수는 5개로 제한한다.
3.3 데이터 저장 제약
- PLN-CR-022: 플랜 정보는 'plan' 스키마에 저장해야 한다.
- PLN-CR-023: 플랜-역할 관계 정보는 'plan' 스키마에 저장해야 한다.
- PLN-CR-024: 플랜 변경 이력은 'plan' 스키마에 저장해야 한다.
- PLN-CR-025: 플랜별 기능 및 제한사항 정보는 'plan' 스키마에 저장해야 한다.
- PLN-CR-026: 민감 정보는 항상 암호화되어 저장되어야 한다.
4. 가정사항
4.1 시스템 환경
- PLN-AR-001: 시스템은 마이크로서비스 아키텍처 기반으로 구축된다.
- PLN-AR-002: 시스템은 클라우드 환경(예: GCP)에서 운영된다.
- PLN-AR-003: Event-driven 아키텍처를 통해 다른 도메인과 통신한다.
4.2 사용자 환경
- PLN-AR-004: 관리자는 별도의 관리 콘솔을 통해 플랜을 관리한다.
- PLN-AR-005: 일반 사용자는 자신의 플랜 정보를 조회할 수 있다.
- PLN-AR-006: 서비스 계정은 다른 시스템과의 연동을 위해 플랜 정보 API를 호출한다.
4.3 비즈니스 환경
- PLN-AR-007: 플랜은 비즈니스 요구사항에 따라 동적으로 변경될 수 있다.
- PLN-AR-008: 플랜 변경은 사용자에게 영향을 최소화하는 방향으로 수행된다.
- PLN-AR-009: 플랜별 차별화된 서비스 제공이 비즈니스 핵심 가치이다.
5. 의존성
5.1 내부 의존성
- PLN-DR-001: IAM 도메인: 플랜-역할 관계 정보 제공, 플랜 기반 권한 검증
- PLN-DR-002: User 도메인: 사용자별 플랜 할당 정보 참조 및 관리
- PLN-DR-003: Billing 도메인: 플랜별 과금 정보 연동, 결제 상태 확인
- PLN-DR-004: Audit 도메인: 플랜 변경, 할당 등 주요 작업에 대한 감사 로그 기록
- PLN-DR-005: Analytics 도메인: 플랜 사용량 분석, 플랜 성능 지표 수집
5.2 외부 의존성
- PLN-DR-006: Feature Flag 시스템: 플랜별 기능 제어를 위한 외부 Feature Flag 서비스
- PLN-DR-007: 결제 시스템: 플랜 변경 시 결제 처리를 위한 외부 결제 게이트웨이
- PLN-DR-008: 알림 시스템: 플랜 변경, 만료 등의 이벤트 알림 전송
6. GDPR 컴플라이언스 (개인정보 보호)
6.1 플랜별 개인정보 처리
백엔드 요구사항
- PLN-FR-BE-045: 시스템은 플랜별 개인정보 처리 범위를 정의해야 한다.
- 플랜별 수집 가능 데이터 정의
- 플랜 변경 시 데이터 처리 영향 평가
- 플랜별 보관 기간 차별화
- 플랜 다운그레이드 시 데이터 처리
- PLN-FR-BE-046: 시스템은 플랜 만료 시 데이터를 처리해야 한다.
- Limited Access 전환 시 데이터 보존
- 서비스 종료 시 데이터 보관/삭제
- 플랜별 데이터 익명화 규칙
- 사용자 통지 자동화
6.2 플랜 변경과 개인정보
백엔드 요구사항
- PLN-FR-BE-047: 시스템은 플랜 변경 시 개인정보 영향을 평가해야 한다.
- 업그레이드 시 추가 데이터 수집 동의
- 다운그레이드 시 기능 제한 경고
- 데이터 이전 필요성 평가
- 변경 전 백업 생성
6.3 플랜별 데이터 주체 권리
백엔드 요구사항
- PLN-FR-BE-055: 시스템은 플랜별 데이터 주체 권리를 차별화해야 한다.
- Therapeutic Plan: 의료 데이터 열람권 강화
- Limited Access: 제한된 데이터 접근 권리
- Sample Plan: 체험용 데이터 즉시 삭제 가능
- 플랜별 데이터 이동권 범위 정의
- PLN-FR-BE-056: 시스템은 플랜 기반 동의 관리를 지원해야 한다.
- 플랜별 필수/선택 동의 항목 차별화
- 플랜 변경 시 새로운 동의 획득
- 동의 철회 시 플랜 자동 조정
- 부분 동의 시 제한된 플랜 제공
6.4 지역별 플랜 규제 준수
백엔드 요구사항
- PLN-FR-BE-057: 시스템은 지역별 규제에 맞는 플랜을 제공해야 한다.
- EU 지역: GDPR 완전 준수 플랜
- 한국 지역: 개인정보보호법 준수 플랜
- 미국 지역: HIPAA 준수 의료 플랜
- 지역별 데이터 로컬라이제이션
- PLN-FR-BE-058: 시스템은 국경 간 플랜 이전을 관리해야 한다.
- 적절성 결정 국가 간 자동 이전
- SCC 기반 플랜 이전 절차
- 이전 불가 국가 플랜 제한
- 이전 기록 및 감사 추적
6.5 플랜 데이터 거버넌스
백엔드 요구사항
- PLN-FR-BE-059: 시스템은 플랜별 데이터 라이프사이클을 관리해야 한다.
- 플랜별 데이터 수집 정책
- 보관 기간 자동 적용
- 만료 데이터 자동 익명화
- 플랜 종료 시 데이터 처리 절차
- PLN-FR-BE-060: 시스템은 플랜 기반 개인정보 영향평가를 지원해야 한다.
- 신규 플랜 출시 전 DPIA 수행
- 플랜 변경 시 영향 평가
- 위험 등급별 플랜 분류
- DPIA 결과 기반 플랜 조정
7. ISO27001 정보보호 관리
7.1 플랜 기반 보안
백엔드 요구사항
- PLN-FR-BE-048: 시스템은 플랜별 보안 수준을 차별화해야 한다.
- Therapeutic: 의료 데이터 보호 강화
- Limited Access: 제한된 기능 접근
- Sample: 테스트 데이터 분리
- 플랜별 암호화 수준
- PLN-FR-BE-049: 시스템은 플랜 관리 체계를 보호해야 한다.
- 플랜 생성/수정 권한 통제
- 플랜 변경 승인 프로세스
- 변경 이력 감사 로그
- 비인가 변경 방지
7.2 플랜 연속성 관리
백엔드 요구사항
- PLN-FR-BE-050: 시스템은 플랜 서비스 연속성을 보장해야 한다.
- 플랜 만료 사전 경고 (30일, 7일, 1일 전)
- 자동 갱신 메커니즘
- 플랜 전환 중 서비스 중단 방지
- 장애 시 비상 플랜 적용
변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 1.0.0 | 2025-04-27 | bok@weltcorp.com | 최초 문서 생성 (IAM 도메인에서 Plan 관련 요구사항 분리) |
| 1.1.0 | 2025-07-16 | bok@weltcorp.com | Group-Plan 독립성 확보 - 사용자가 플랜을 직접 가지도록 변경, Group 의존성 제거 |
| 1.2.0 | 2025-08-07 | bok@weltcorp.com | 요구사항 ID 체계 적용 - PLN 도메인 코드 적용 (PLN-FR-BE-xxx, PLN-NFR-xxx, PLN-CR-xxx, PLN-AR-xxx, PLN-DR-xxx) |
| 1.3.0 | 2025-08-12 | bok@weltcorp.com | GDPR 및 ISO27001 컴플라이언스 요구사항 추가 (섹션 6, 7) - 플랜별 개인정보 처리, 플랜 기반 보안 |
| 1.4.0 | 2025-10-27 | bok@weltcorp.com | 게스트 플랜 유형과 제한/승격 요구사항 추가 (1.2, 1.4절) |