회원 심사 시스템¶
문서 역할¶
- 역할:
설명 - 문서 종류:
architecture - 충돌 시 우선 문서: 회원 심사 단일 정책
- 기준 성격:
as-is
회원 심사의 저장 책임과 조회 모델을 설명한다. 상태 전이 시각화는 회원 심사 FSM을 따르고, 심사 판정 규칙은 정책 문서를 우선한다.
목적과 범위¶
- 회원의 기본정보·필수 인증·소개 프로필 심사 요청과 증거를 추적한다.
- 현재 심사 상태를 요청 상태 원천과 분리된 조회 모델로 제공한다.
- 회원 계정 생애주기는 회원 라이프사이클이 소유한다.
논리 데이터 모델¶
- 도메인 ID:
member-review
먼저 보는 그림¶
이 그림은 데이터가 어디에 속하고 무엇을 참고하는지 먼저 보여준다. 정확한 이름과 조건은 아래 상세 표를 따른다.
flowchart LR
entity_member_dash_review_dot_auth_dash_evidence["인증 증거<br/>member-review.auth-evidence"]
entity_member_dash_review_dot_auth_dash_request["인증 심사 요청<br/>member-review.auth-request"]
entity_member_dash_review_dot_auth_dash_request_dash_item["인증 심사 항목<br/>member-review.auth-request-item"]
entity_member_dash_review_dot_auth_dash_state["회원 인증 상태<br/>member-review.auth-state"]
entity_member_dash_review_dot_overview_dash_projection["심사 운영 조회 모델<br/>member-review.overview-projection"]
entity_member_dash_review_dot_profile_dash_image["프로필 이미지<br/>member-review.profile-image"]
entity_member_dash_review_dot_profile_dash_version["프로필 버전<br/>member-review.profile-version"]
entity_member_dash_review_dot_required_dash_auth_dash_policy["필수 인증 정책<br/>member-review.required-auth-policy"]
entity_member_dash_review_dot_review_dash_request["회원 심사 요청<br/>member-review.review-request"]
entity_member_dash_review_dot_stage_dash_snapshot["심사 단계 스냅샷<br/>member-review.stage-snapshot"]
entity_member_dash_review_dot_status_dash_projection["심사 상태 조회 모델<br/>member-review.status-projection"]
entity_member_dot_member["회원 계정 · 다른 영역<br/>member.member"]
entity_member_dash_review_dot_review_dash_request -->|"참고"| entity_member_dot_member
entity_member_dot_member -->|"같이 관리"| entity_member_dash_review_dot_auth_dash_state
entity_member_dash_review_dot_auth_dash_request -->|"참고"| entity_member_dot_member
entity_member_dash_review_dot_auth_dash_request -->|"같이 관리"| entity_member_dash_review_dot_auth_dash_request_dash_item
entity_member_dash_review_dot_auth_dash_request_dash_item -->|"같이 관리"| entity_member_dash_review_dot_auth_dash_evidence
entity_member_dash_review_dot_profile_dash_version -->|"참고"| entity_member_dot_member
entity_member_dash_review_dot_profile_dash_version -->|"같이 관리"| entity_member_dash_review_dot_profile_dash_image
entity_member_dot_member -->|"같이 관리"| entity_member_dash_review_dot_required_dash_auth_dash_policy
entity_member_dot_member -->|"같이 관리"| entity_member_dash_review_dot_stage_dash_snapshot
entity_member_dash_review_dot_status_dash_projection -->|"계산해 만듦"| entity_member_dash_review_dot_review_dash_request
entity_member_dash_review_dot_overview_dash_projection -->|"계산해 만듦"| entity_member_dash_review_dot_auth_dash_request
꼭 지킬 규칙:
- 회원과 요청 종류별 활성 인증 요청은 동시에 하나만 존재한다
- 회원이 참조하는 현재 프로필 버전은 승인·활성 상태여야 한다
- 조회 모델은 판정 원천이 아니며 요청 상태 원천과 회원 생애주기에서만 파생한다
정확한 값과 조건 보기
논리 엔티티¶
| 논리 ID | 표시명 | 생명주기 역할 | 엔티티 형태 | 기록 역할 | 책임 | 최고 데이터 분류 | 생명주기 |
|---|---|---|---|---|---|---|---|
member-review.review-request |
회원 심사 요청 | root | entity | state | 기본정보·소개정보 심사 요청의 처리 상태와 판정 | 민감 | 처리 중 상태·사유를 갱신하고 완료·철회 시 정책에 따라 보존 또는 정리 |
member-review.auth-state |
회원 인증 상태 | child | entity | state | 인증 종류별 현재 판정과 반려 사유 | 민감 | 회원 계정과 함께 유지하고 재심사로 변경 |
member-review.auth-request |
인증 심사 요청 | root | entity | state | 필수 인증 제출·재제출 요청의 처리 상태와 이전 요청 연결 | 민감 | 활성 요청을 갱신하고 이전·완료 요청은 연결 이력으로 보존 |
member-review.auth-request-item |
인증 심사 항목 | child | entity | state | 활성 요청 안의 인증 종류별 현재 판정 | 민감 | 상위 요청 구성 변경에 따라 갱신·정리 |
member-review.auth-evidence |
인증 증거 | child | entity | snapshot | 심사 시점의 인증 이미지와 개별 판정 | 민감 | 보관 기한 후 삭제 또는 비식별화 |
member-review.profile-version |
프로필 버전 | root | entity | snapshot | 제출 시점의 프로필 이미지·영상 세트 | 민감 | 활성 버전은 유지하고 이전 버전은 정책에 따라 정리 |
member-review.profile-image |
프로필 이미지 | child | entity | snapshot | 프로필 버전의 이미지와 이미지별 판정 | 민감 | 상위 버전의 보관 정책을 따름 |
member-review.required-auth-policy |
필수 인증 정책 | child | entity | reference | 회원에게 적용되는 필수 인증 종류 | 내부 | 최초 생성 뒤 명시적 정책 정정 전까지 유지 |
member-review.stage-snapshot |
심사 단계 스냅샷 | child | entity | snapshot | 화면·호환을 위한 단계별 현재 상태 복사본 | 내부 | 재계산 가능한 보조 데이터로 유지 |
member-review.status-projection |
심사 상태 조회 모델 | root | entity | projection | API와 Mobile의 회원별 심사 상태 요약 | 내부 | 원천 데이터 변경 시 재계산 |
member-review.overview-projection |
심사 운영 조회 모델 | root | entity | projection | Admin 큐와 단계 이력 집계 | 내부 | 원천 데이터 변경 시 재계산 |
관계¶
| 출발 논리 ID | 관계 역할 | 관계 유형 | 도착 논리 ID | 카디널리티 | 소유·삭제 규칙 |
|---|---|---|---|---|---|
member-review.review-request |
member |
references | member.member |
N:1 | 제출 회원의 현재 상태와 요청 당시 snapshot을 구분해 보존 |
member.member |
auth-states |
owns | member-review.auth-state |
1:N | 회원 개인정보 정리 정책을 함께 적용 |
member-review.auth-request |
member |
references | member.member |
N:1 | 회원과 요청 종류별 활성 요청을 하나로 제한 |
member-review.auth-request |
items |
owns | member-review.auth-request-item |
1:N | 활성 요청 구성 변경에 따라 항목을 함께 갱신·정리 |
member-review.auth-request-item |
evidence |
owns | member-review.auth-evidence |
1:N | 증거만 보관 기한에 따라 정리 가능 |
member-review.profile-version |
member |
references | member.member |
N:1 | 회원이 참조하는 현재 버전은 승인·활성 상태여야 함 |
member-review.profile-version |
images |
owns | member-review.profile-image |
1:N | 현재 활성 버전은 삭제하지 않음 |
member.member |
required-auth-policy |
owns | member-review.required-auth-policy |
1:1 | 회원에게 적용되는 한 세트의 필수 인증 정책을 유지 |
member.member |
review-stage-snapshots |
owns | member-review.stage-snapshot |
1:N | 원천 심사 상태와 불일치하면 재계산 |
member-review.status-projection |
review-requests |
derives-from | member-review.review-request |
1:N | 원천 요청과 현재 회원 상태에서 계산 |
member-review.overview-projection |
auth-requests |
derives-from | member-review.auth-request |
1:N | 운영 집계이며 쓰기 기준으로 사용하지 않음 |
불변조건¶
| 규칙 ID | 관련 논리 ID | 불변조건 | 기준 문서 |
|---|---|---|---|
MEMBER-REVIEW-INV-001 |
member-review.auth-request |
회원과 요청 종류별 활성 인증 요청은 동시에 하나만 존재한다 | 회원 심사 단일 정책 |
MEMBER-REVIEW-INV-002 |
member-review.profile-version |
회원이 참조하는 현재 프로필 버전은 승인·활성 상태여야 한다 | 회원 심사 단일 정책 |
MEMBER-REVIEW-INV-003 |
member-review.status-projection |
조회 모델은 판정 원천이 아니며 요청 상태 원천과 회원 생애주기에서만 파생한다 | 회원 심사 FSM |
데이터 흐름¶
- 쓰기 경계의 상태 동기화는 회원별 필수 인증 정책이 없을 때 현재 전담 클럽매니저 설정 또는 시스템 기본값으로 정책을 생성한다.
- 회원별 필수 인증 정책이 이미 있으면 현재 동기화 경로는 전담 클럽매니저 변경이나 설정 변경만으로 기존 정책을 자동 덮어쓰지 않는다.
- 회원이 심사 범위별 요청과 증거를 제출한다.
- Admin이 요청 또는 항목 단위로 승인·반려한다.
- 판정 결과가 회원 생애주기와 단계 스냅샷에 동기화된다.
- API와 Admin은 조회 모델을 통해 현재 상태를 읽는다.
정회원 본인 또는 Super Admin의 명시적 프로필 영상 삭제는 현재·최신 심사 중 버전의 영상 참조를 transaction에서 제거하고, 사진과 사진 심사 상태는 유지한다. 같은 transaction에서 남은 참조가 없는 원본·썸네일 파일을 먼저 삭제한 뒤 커밋하며, 파일 삭제 실패 시 DB 변경을 rollback한다. 세부 행위와 권한은 회원 심사 단일 정책과 보안/접근통제 정책을 따른다.
현재 전담 클럽매니저 설정과 회원별 필수 인증 정책은 서로 다른 데이터다. 심사 도중 전담 클럽매니저나
설정이 바뀌면 두 값이 달라질 수 있으며, PENDING을 포함해 NORMAL이 아닌 회원의 실제 인증 데이터까지
존재하는 상태에서는 현재 클럽매니저 준비 상태에 따라 동기화 guard가 저장을 차단할 수 있다. 정확한 발생
조건, 비적용 범위와 운영 Exit Gate는 회원 심사 단일 정책의
전담 클럽매니저·필수 인증 변경 호환 상태를 따른다.