Mobile 도메인 요구사항
1. 기능 요구사항
1.1 Mobile App 초기화 시 시스템 설정 및 정책 정보 조회/캐싱
Mobile App은 초기화 과정(예: 스플래시 화면 표시 중)에서 시스템 전반의 설정, 정책 및 주요 콘텐츠의 최신 버전 정보를 단일 엔드포인트 호출을 통해 통합적으로 가져와 로컬에 캐싱한다. 이 정보는 사용자 인증과 무관하게 App Token을 사용하여 조회한다. 이를 통해 초기 로딩 시간을 최적화하고, 네트워크 요청 횟수를 최소화하며, 앱 실행에 필요한 기본 환경 정보를 일관성 있게 확보한다. Mobile Domain은 이 통합 엔드포인트를 제공해야 한다.
- MOB-FR-BE-001: dta-wide 서비스의 주요 시스템 설정 정보를 제공해야 하며, 이 정보에는 다음을 반드시 포함해야 한다:
- 주요 기능의 활성화/비활성화 상태를 나타내는 기능 플래그(Feature Flags) 목록
- Android 모바일 앱의 최소 지원 버전
- iOS 모바일 앱의 최소 지원 버전
- 시스템에서 지원하는 사용자 인증 방식 목록 (예: 이메일/비밀번호, 소셜 로그인 등)
- 정보 소스: Configuration 도메인.
- MOB-FR-BE-002: 현재 활성화된 약관(Agreements)의 최신 버전 정보.
- 참고: 앱은 캐싱된 버전 정보를 기반으로, 이후 사용자 동의가 필요한 시점 또는 사용자가 요청 시 해당 버전의 약관 상세 내용을 별도 조회한다.
- 정보 소스: Agreement 도메인과 연동.
- MOB-FR-BE-003: 현재 활성화된 설문지(Questionnaire)의 최신 버전 정보.
- 참고: 앱은 캐싱된 버전 정보를 기반으로, 이후 특정 조건(예: 사용자 가입 시, 주기적 업데이트)에 따라 해당 버전의 설문지 상세 구조를 별도 조회하여 사용할 수 있다.
- 정보 소스: Questionnaire 도메인과 연동.
- MOB-FR-BE-004: 최신 시스템 공지사항의 요약 또는 새로운 공지 존재 여부.
- 참고: 앱은 캐싱된 정보를 바탕으로 사용자에게 공지사항을 안내하고, 필요시 상세 내용을 별도 조회하여 표시할 수 있다.
- 정보 소스: Notification/Announcement 도메인(가칭, 추후 정의)과 연동.
1.2 새로운 치료주기 시작 시 Mobile App 설정 초기화
User의 새로운 치료주기(cycle)가 시작되면, Mobile App의 사용자별 설정을 기본값으로 초기화한다. 이를 통해 각 치료주기마다 일관된 사용자 경험을 제공하고, 이전 주기의 설정이 새로운 치료 과정에 영향을 주지 않도록 한다.
- MOB-FR-BE-005: 스크린샷 허용 설정 초기화
- 개발환경: 기본값
true(허용) - 프로덕션환경: 기본값
false(비허용)
- 개발환경: 기본값
- MOB-FR-BE-006: 앱 알림(App Notification) 허용 설정 초기화
- 기본값: 사용자가 새로 설정하도록 유도 (또는 시스템 정책에 따른 기본값 적용)
- MOB-FR-BE-007: 시스템 알림(System Notification) 허용 설정 초기화
- 기본값: 사용자가 새로 설정하도록 유도 (또는 시스템 정책에 따른 기본값 적용)
- MOB-FR-BE-008: Analytics 설정 초기화
isEnabled: 기본값trueviewStateTypes: 기본값['all']componentCategories: 기본값['all']componentTypes: 기본값['all']- 참고: Analytics 설정 구조는
AnalyticsConfigurationDto클래스 명세를 따른다.
- MOB-FR-BE-009: Health 데이터 접근 권한 설정 초기화
- iOS HealthKit 접근 권한: 기본값 비허용 (사용자가 새로 설정하도록 유도)
- Android Health Connect 접근 권한: 기본값 비허용 (사용자가 새로 설정하도록 유도)
- 참고: 플랫폼별 Health 데이터 접근 권한은 각 OS의 시스템 설정과 연동되며, 앱에서는 권한 요청 상태만 관리한다.
- MOB-FR-BE-010: 위치 접근 권한 설정 초기화
- 날씨정보 제공을 위한 위치 접근 권한: 기본값 비허용 (사용자가 새로 설정하도록 유도)
- 참고: 위치 접근 권한은 각 OS의 시스템 설정과 연동되며, 앱에서는 권한 요청 상태만 관리한다.
1.3 AppSettings 변경 이력 추적 및 관리
AppSettings에 대한 모든 변경 사항을 추적하고 관리하여 감사 목적과 시스템 운영의 투명성을 보장한다. 변경 이력을 통해 문제 발생 시 원인 파악과 롤백이 가능하도록 한다.
-
MOB-FR-BE-011: 변경 이력 자동 기록
- AppSettings는 Immutable 구조로 관리되며, 새 버전 생성 시 기존 버전을 AppSettingsHistory로 자동 이관
- 변경자 정보, 변경 시점, 변경 사유, 변경 내용 전체 스냅샷 저장
- 시스템 변경과 사용자 변경을 구분하여 기록
- AppSettings 테이블에는 항상 최신 버전만 유지
-
MOB-FR-BE-012: 버전 관리
- 동일 AppSettings ID에 대해 순차적 버전 번호 자동 할당 (1부터 시작)
- 각 변경마다 버전 번호 1씩 증가
- 삭제된 설정도 이력 유지하여 감사 추적 가능
-
MOB-FR-BE-013: 변경 이력 조회
- 특정 AppSettings의 전체 변경 이력 조회 기능
- 특정 버전의 상세 정보 조회 기능
- 기간별 변경 이력 조회 및 감사 리포트 생성 기능
-
MOB-FR-BE-014: 롤백 기능
- 특정 버전으로의 롤백 기능 (새로운 버전으로 기록)
- 롤백 시에도 변경 이력 기록하여 모든 변경 사항 추적
- 롤백 권한 및 승인 프로세스 적용
-
MOB-FR-BE-015: 사용자별 AppSettings 사용 추적
- 사용자가 현재 사용 중인 AppSettings 정보를 UserMobileSettings에 저장
- AppSettings 조회 API 호출 시 자동으로 추적 정보 업데이트
- 별도 API 호출 없이 기존 API 사용 중에 자동 관리
- 문제 발생 시 사용자별 사용 버전 추적 가능
2. 비기능 요구사항
2.1 성능
- MOB-NFR-001: 앱 초기화 시 필요한 모든 필수 정보 조회 및 처리는 3초 이내에 완료되어야 한다. (네트워크 환경 양호 기준)
- MOB-NFR-002: AppSettings 변경 이력 기록은 1초 이내에 완료되어야 한다.
- MOB-NFR-003: 변경 이력 조회는 페이징 처리를 통해 응답 시간 2초 이내를 보장해야 한다.
2.2 보안
- MOB-NFR-004: API 요청 시 HTTPS를 사용하고, 모든 민감 데이터는 전송 중 암호화되어야 한다.
- MOB-NFR-005: 로컬에 저장되는 민감 정보(토큰, 개인 식별 정보 등)는 안전하게 암호화되어야 한다.
- MOB-NFR-006: 앱은 코드 난독화, 리패키징 방지 등 기본적인 모바일 보안 위협에 대응할 수 있어야 한다.
- MOB-NFR-007: Mobile Domain에서 제공하는 시스템 설정 및 정책 정보 조회 API는 App Token을 사용하여 인증해야 한다. 사용자 개인 정보 접근에는 사용되지 않는다.
- MOB-NFR-008: AppSettings 변경 이력은 읽기 전용으로만 접근 가능해야 하며, 수정이나 삭제가 불가능해야 한다.
- MOB-NFR-009: 변경 이력 조회는 적절한 권한을 가진 사용자만 접근 가능해야 한다.
4. 가정사항
4.1 시스템 환경
- MOB-AR-001: 백엔드 API 서버는 안정적으로 운영되며, 정의된 명세에 따라 응답한다고 가정한다.
- MOB-AR-002: 사용자 디바이스의 운영체제는 변조되지 않았으며, 기본적인 보안 설정이 유지된다고 가정한다.
4.2 사용자 환경
- MOB-AR-003: 대부분의 사용자는 안정적인 Wi-Fi 또는 모바일 데이터 네트워크 환경에서 앱을 사용한다고 가정한다.
5. 의존성
5.1 내부 의존성
- MOB-DR-001: 사용자 인증 토큰 관리, 세션 유효성 검증 등 의존. (단, Mobile Domain의 초기화 API는 App Token을 사용하므로, 사용자 인증 관련 기능은 앱이 로그인 후 별도 처리 시 Auth 도메인 의존)
- MOB-DR-002: 사용자 프로필 정보, 치료 기간, 사용 기간, 계정 상태 등 조회 의존. (Mobile Domain의 초기화 API는 이 정보를 직접 다루지 않음. 앱이 로그인 후 사용자 특정 정보 조회 시 User 도메인 의존). 또한 새로운 치료주기 시작 이벤트 감지를 위해 User 도메인과 연동 필요.
- MOB-DR-003: 사용자 플랜, 역할, 권한에 따른 기능 접근 제어 로직 의존. (Mobile Domain의 초기화 API는 이 정보를 직접 다루지 않음. 앱이 로그인 후 사용자 특정 정보 조회 시 IAM 도메인 의존)
- MOB-DR-004: 서비스 전반의 설정 정보(API 엔드포인트, 기능 플래그 등) 조회 의존.
- MOB-DR-005: 활성화된 약관 버전 및 내용 조회 의존.
- MOB-DR-006: 활성화된 설문지 버전 및 구조 조회 의존.
- MOB-DR-007: 시스템 공지사항 조회 의존.
- (기타 핵심 비즈니스 로직을 처리하는 도메인들 - 예: Sleep, Learning, Coaching 등)
6. GDPR 컴플라이언스 (개인정보 보호)
6.1 모바일 디바이스 데이터
백엔드 요구사항
- MOB-FR-BE-016: 시스템은 모바일 디바이스 데이터를 보호해야 한다.
- 디바이스 ID 해싱
- 위치 정보 최소 수집
- 앱 사용 패턴 익명화
- 푸시 토큰 암호화
- MOB-FR-BE-017: 시스템은 모바일 권한을 관리해야 한다.
- 권한별 명시적 동의
- 권한 사용 목적 설명
- 최소 권한 요청
- 권한 철회 지원
6.2 오프라인 데이터
백엔드 요구사항
- MOB-FR-BE-018: 시스템은 오프라인 데이터를 보호해야 한다.
- 로컬 스토리지 암호화
- 오프라인 데이터 동기화 보안
- 캐시 데이터 자동 삭제
- 백업 데이터 암호화
7. ISO27001 정보보호 관리
7.1 모바일 보안
백엔드 요구사항
- MOB-NFR-010: 시스템은 모바일 앱 보안을 강화해야 한다.
- 인증서 피닝
- 루팅/탈옥 탐지
- 코드 난독화
- 안티 디버깅
- MOB-NFR-011: 시스템은 모바일 통신을 보호해야 한다.
- End-to-end 암호화
- API 키 안전 저장
- 세션 관리
- 중간자 공격 방지
변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 0.1.0 | 2025-05-13 | bok@weltcorp.com | 최초 작성 |
| 0.2.0 | 2025-06-04 | bok@weltcorp.com | 새로운 치료주기 시작 시 Mobile App 설정 초기화 요구사항 추가 (1.2절) |
| 0.3.0 | 2025-01-09 | bok@weltcorp.com | AppSettings 변경 이력 추적 및 관리 요구사항 추가 (1.3절), 성능 및 보안 요구사항 추가 |
| 0.3.1 | 2025-08-03 | bok@weltcorp.com | AppSettings 관리 구조 개선 - Immutable 버전 관리 요구사항으로 변경 |
| 0.3.2 | 2025-08-03 | bok@weltcorp.com | 사용자별 AppSettings 사용 추적 요구사항 추가 (1.3.5절) - UserMobileSettings에 자동 추적 정보 저장 |
| 0.4.0 | 2025-08-07 | bok@weltcorp.com | |
| 0.5.0 | 2025-08-12 | bok@weltcorp.com | GDPR 및 ISO27001 컴플라이언스 요구사항 추가 (섹션 6, 7) - 모바일 디바이스 데이터, 모바일 보안 |