본문으로 건너뛰기

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: 기본값 true
    • viewStateTypes: 기본값 ['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.02025-05-13bok@weltcorp.com최초 작성
0.2.02025-06-04bok@weltcorp.com새로운 치료주기 시작 시 Mobile App 설정 초기화 요구사항 추가 (1.2절)
0.3.02025-01-09bok@weltcorp.comAppSettings 변경 이력 추적 및 관리 요구사항 추가 (1.3절), 성능 및 보안 요구사항 추가
0.3.12025-08-03bok@weltcorp.comAppSettings 관리 구조 개선 - Immutable 버전 관리 요구사항으로 변경
0.3.22025-08-03bok@weltcorp.com사용자별 AppSettings 사용 추적 요구사항 추가 (1.3.5절) - UserMobileSettings에 자동 추적 정보 저장
0.4.02025-08-07bok@weltcorp.com
0.5.02025-08-12bok@weltcorp.comGDPR 및 ISO27001 컴플라이언스 요구사항 추가 (섹션 6, 7) - 모바일 디바이스 데이터, 모바일 보안