합의(Agreements) 도메인 비즈니스 규칙
1. 약관(Term) 관리 규칙
1.1 약관 생성 규칙
-
기본 요구사항
- 약관은 고유 식별자를 가져야 함
- 버전 번호는 major.minor.patch 형식 사용
- 생성자 정보 기록 필수
- 생성 시간은 TimeMachine 사용
-
콘텐츠 요구사항
- 약관은 최소 한 개 이상의 언어로 작성되어야 함
- 기본 언어(독일어)는 필수
- 약관 타입(필수/선택)을 명시해야 함
- 약관 텍스트는 마크다운 형식 지원
-
상태 관리
- 생성 시 초기 상태는 '초안(Draft)'
- '초안' 상태에서만 내용 수정 가능
- 최대 저장 가능한 초안 버전 수는 10개
- 초안 상태의 약관은 운영 환경에 노출되지 않음
1.2 약관 버전 관리 규칙
-
버전 규칙
- 주요 변경은 major 버전 증가
- 기능 추가는 minor 버전 증가
- 오탈자 수정은 patch 버전 증가
- 버전 변경 이력 기록 필수
-
버전 활성화
- 한 시점에 약관 종류별 하나의 버전만 활성화 가능
- 활성화 시 기존 활성 버전은 자동 비활성화
- 활성화 전 법무팀 승인 필요
- 활성화 일정 설정 가능
-
버전 비활성화
- 활성 버전의 비활성화는 신규 버전 활성화 또는 명시적 비활성화로만 가능
- 비활성화 시 기존 동의 기록 유지
- 비활성화 사유 기록 필수
- 비활성화 알림 대상자 설정 가능
1.3 약관 번역 관리 규칙
-
번역 요구사항
- 지원 언어: 독일어(기본), 영어, 한국어
- 하나의 약관 버전에 언어당 하나의 번역만 허용
- 번역본은 원본과 의미적으로 동일해야 함
- 번역 검수 프로세스 필요
-
번역 업데이트
- 번역 추가는 '초안' 또는 '활성' 상태에서 가능
- 번역 수정은 '초안' 상태에서만 가능
- 활성 상태의 약관에 번역 추가 시 즉시 반영
- 번역 변경 이력 기록 필수
1.4 약관 표시 규칙
-
UI 요구사항
- 약관은 사용자가 쉽게 읽을 수 있는 형식으로 표시
- 글자 크기는 최소 12pt 이상
- 주요 변경 사항은 하이라이트 처리
- 약관 간 구분이 명확해야 함
-
접근성
- 모든 약관은 스크린 리더 접근 가능해야 함
- 색상만으로 정보를 구분하지 않음
- 모바일 기기에서 가독성 보장
- 다운로드 가능한 형식(PDF) 제공
-
이력 표시
- 사용자는 자신의 약관 동의 이력 조회 가능
- 현재 적용 중인 약관 버전 표시
- 약관 변경 예정 시 사전 공지
- 약관 비교 기능 제공
2. 동의(Consent) 관리 규칙
2.1 동의 데이터 관리 규칙
-
사용자 식별
- 사용자 ID는 필수이며 유효해야 함
- 사용자는 활성 상태여야 함
-
동의 범위
- 최소 하나 이상의 scope가 지정되어야 함
- scope는 미리 정의된 값만 사용 가능
- scope 조합의 유효성 검증 필요
-
동의 목적
- 목적(purpose)은 명확하게 지정되어야 함
- 목적은 미리 정의된 카테고리에 속해야 함
- 다국어 지원을 위한 키 값 사용
-
유효 기간
- 만료 시간은 현재 시간보다 미래여야 함
- 최대 유효 기간은 정책으로 제한
- 갱신 가능 여부는 목적별로 설정
-
메타데이터
- 메타데이터는 선택사항
- 제공 시 유효한 JSON 형식이어야 함
- 민감 정보 포함 불가
2.2 동의 검증 규칙
-
형식 검증
- 동의 데이터가 유효한 형식이어야 함
- Access Token 내 agreements 클레임이 유효해야 함
- 필수 속성이 모두 존재해야 함
-
상태 검증
- 동의가 만료되지 않았어야 함
- 동의가 취소되지 않았어야 함
- 사용자가 활성 상태여야 함
-
범위 검증
- 요청된 모든 scope가 사용자의 동의 scope에 포함되어야 함
- scope의 계층 구조 고려
- scope 조합의 유효성 검증
2.3 동의 취소 규칙
-
취소 조건
- 활성 상태의 동의만 취소 가능
- 취소 사유는 필수
- 취소된 동의는 복구 불가
-
연관 처리
- 동의 취소 시 Access Token의 agreements 클레임에서 해당 동의 제거
- 관련 시스템에 취소 이벤트 발행
- 사용자에게 취소 알림
- 취소 이력 기록
2.4 이력 관리 규칙
-
이력 기록
- 모든 동의 작업은 이력 기록
- 작업자 정보 포함
- 타임스탬프는 TimeMachine 사용
-
감사 요구사항
- GDPR 요구사항에 따른 이력 보관
- 이력 데이터 암호화
- 접근 권한 제한
3. 통합 사용자 동의 관리 규칙
3.1 동의 기록
- 사용자 동의는 불변 이벤트로 기록
- 기록에는 사용자 ID, 약관/동의 ID, 버전, 동의 시간, IP 주소 포함
- 동의 기록은 사용자 계정 삭제 후에도 보관
- 동의 기록 보관 기간은 법적 요구사항에 따름
3.2 동의 요구사항
- 필수 약관 및 동의에 대한 동의 없이는 서비스 사용 불가
- 선택 약관 및 동의는 동의 없이도 기본 서비스 이용 가능
- 약관/동의 변경 시 주요 변경의 경우 재동의 필요
- 재동의 요청은 로그인 시 또는 푸시 알림으로 제공
3.3 동의 철회
- 선택 약관 및 동의에 대한 동의는 철회 가능
- 필수 약관 및 동의 철회는 서비스 이용 중단으로 처리
- 동의 철회 시 관련 기능 즉시 비활성화
- 동의 철회 기록 유지
3.4 통합 UI 표시 규칙
- 모바일 회원가입 및 약관 변경 시 약관(TERMS)과 동의(CONSENT) 항목을 하나의 통합된 화면에 표시해야 함
- 통합 화면에서는 타입별로 그룹화하여 사용자의 이해를 돕는 UI 구성 필요
- 통합 화면에서 필수 항목은 모두 동의해야 다음 단계로 진행 가능
- 통합 화면에서 모든 항목(TERMS, CONSENT)에 대한 일괄 동의 옵션 제공 필요
- 일괄 동의 후 개별 항목 철회 시 일괄 동의 상태도 자동 해제
- 약관 본문 내용과 동의 항목 설명은 통합 화면에서 모달 또는 팝업으로 표시
- 통합 화면에서의 사용자 동의는 단일 API 호출로 일괄 처리
4. 데이터 모델 규칙
4.1 통합 저장소 관리
- 약관(Term)과 동의(Consent)는 단일 통합 테이블에 저장한다.
- 각 레코드는 type 필드로 구분한다. 사용 가능한 타입:
TERMS: 서비스 이용 약관CONSENT: 일반 동의 (기존 호환성 유지)CONSENT_AGE_VERIFICATION: 만 14세 이상 확인 동의CONSENT_PERSONAL_DATA: 개인정보 수집·이용 동의CONSENT_SENSITIVE_DATA: 민감정보 수집·이용 동의CONSENT_SENSITIVE_DATA_HEALTH: 건강정보(민감정보) 수집·이용 동의PRIVACY_POLICY: 개인정보 처리방침
- 공통 속성은 기본 필드로, 타입별 특수 속성은 확장 필드나 JSON 속성으로 관리한다.
- 약관과 동의 레코드를 동일한 ID 체계로 관리하여 참조 일관성을 유지한다.
- 인덱싱 전략은 type 필드를 포함하여 성능을 최적화한다.
5. 변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 0.1.0 | 2025-05-08 | bok@weltcorp.com | 최초 작성 (약관 및 동의 비즈니스 규칙 통합) |