Group 도메인 비즈니스 규칙
1. 일반 규칙
1.1 스키마 정의
- Group 도메인 관련 모든 데이터(Group, GroupRole, 그룹 메타데이터 등)는
groupPostgreSQL 스키마에 저장되어야 합니다. - 그룹과 연결된 역할(Role) 정보는 IAM 도메인(
iam스키마)을 참조합니다. - 그룹과 연결된 사용자(User) 정보는 User 도메인(
private,operation스키마)을 참조합니다. - 사용자-그룹 관계는 사용자 유형에 따라 적절한 스키마에 저장됩니다:
- 고객(환자) 사용자:
private.user_groups - 내부 운영자 사용자:
operation.user_groups
- 고객(환자) 사용자:
1.2 고유성 제약
- 그룹(Group) 이름(
name)은 시스템 내에서 고유해야 합니다. - 그룹 식별자(
id)는 생성 후 변경할 수 없습니다. - 그룹 코드(
code)가 있는 경우 시스템 내에서 고유해야 합니다.
1.3 감사 로깅
- 그룹 데이터에 대한 모든 접근 및 변경은 감사 로그로 기록되어야 합니다.
- 사용자-그룹 할당 및 해제에 대한 감사 로그를 기록해야 합니다.
- 그룹-역할 할당 변경에 대한 감사 로그를 기록해야 합니다.
- Audit 도메인과의 의존성을 가집니다.
2. 그룹(Group) 정의 규칙
2.1 그룹 목적
- 그룹은 사용자를 공통된 특성, 자격, 소속에 따라 분류하고 식별하는 데 사용됩니다.
- 그룹은 "이 사용자는 누구인가?" 또는 "어떤 집단에 속하는가?"에 대한 답을 제공합니다.
- 그룹은 역할 할당 및 정책 적용의 단위로 사용됩니다.
2.2 그룹 구성 요소
- 그룹은 여러 역할(Role)을 가질 수 있습니다 (다대다 관계).
- 그룹은 여러 사용자를 포함할 수 있습니다 (다대다 관계).
- 그룹은 메타데이터(설명, 생성일, 상태 등)를 포함합니다.
- 그룹은 플랜과 독립적으로 운영되며, 조직/기능적 권한을 부여합니다.
3. 그룹 유형 및 분류 규칙
3.1 표준 그룹 유형
시스템에서 지원하는 표준 그룹 유형은 다음과 같습니다:
3.1.1 환자 그룹 (Patient Groups)
치료 대상 환자들을 분류하는 그룹:
-
patients.general: 일반 치료 환자 그룹- 대상: 표준 치료 프로그램 참여 환자
- 역할: 환자 기본 역할 할당
- 특성: 일반 환자의 조직적 분류
-
patients.limited-access: 제한 접근 환자 그룹- 대상: 치료 완료 후 유지 관리 단계 환자
- 역할: 환자 기본 역할 할당
- 특성: 후속 관리 환자의 조직적 분류
-
patients.sample: 체험/데모 환자 그룹- 대상: 서비스 체험 중인 잠재 고객
- 역할: 체험 사용자 역할 할당
- 특성: 잠재 고객의 조직적 분류
-
patients.guest및patients.guest.{region}: 게스트 사용자 그룹- 대상: 이메일/소셜 인증 없이 약관 동의만으로 온보딩한 사용자
- 역할: 게스트 전용 제한 권한을 부여하는
role.guest.default세트를 할당 - 특성: 지역 규제 준수를 위한 제한 접근, Step-up 인증 전까지 유지되는 임시 그룹
-
patients.clinic-a,patients.clinic-b: 클리닉별 환자 그룹- 대상: 특정 클리닉 소속 환자
- 역할: 환자 기본 역할 + 클리닉별 추가 역할
- 특성: 클리닉별 조직적 분류
3.1.2 내부 운영자 그룹 (Operation Groups)
내부 직원들을 분류하는 그룹:
-
operators.admin: 시스템 관리자 그룹- 대상: 시스템 전체 관리 권한 필요 직원
- 역할: System Admin, IAM Admin 역할 할당
- 특성: 시스템 관리 조직
-
operators.clinician: 의료진 그룹- 대상: 의사, 간호사, 임상 전문가
- 역할: Clinician 역할 할당
- 특성: 의료 조직
-
operators.support: 고객 지원팀 그룹- 대상: 고객 서비스 담당 직원
- 역할: Support Agent 역할 할당
- 특성: 고객 서비스 조직
-
operators.analyst: 데이터 분석가 그룹- 대상: 데이터 분석 및 리포팅 담당
- 역할: Data Analyst 역할 할당
- 특성: 데이터 분석 조직
3.1.3 개발 및 테스트 그룹 (Development Groups)
개발 환경용 그룹:
-
testers.internal: 내부 테스터 그룹- 대상: QA 테스터, 내부 검증 인력
- 역할: Tester 역할 할당
- 특성: QA 조직
-
developers.backend: 백엔드 개발자 그룹 -
developers.frontend: 프론트엔드 개발자 그룹 -
developers.mobile: 모바일 개발자 그룹
3.2 그룹 분류 체계
- 그룹은 사용자 유형(환자/내부 운영자/개발자)에 따라 분류됩니다.
- 그룹은 기능별 역할(임상/기술/지원)에 따라 분류됩니다.
- 그룹은 조직 구조(부서/팀/클리닉)에 따라 분류될 수 있습니다.
4. 그룹 생명주기 관리 규칙
4.1 그룹 상태 관리
- 그룹은 다음 상태를 가집니다:
ACTIVE: 활성 상태, 새로운 사용자 할당 가능INACTIVE: 비활성 상태, 새로운 할당 불가능하지만 기존 사용자는 유지DEPRECATED: 폐기 예정, 점진적 제거 단계ARCHIVED: 보관됨, 이력 조회용으로만 유지
4.2 그룹 버전 관리
- 그룹 변경 시 버전 관리를 지원해야 합니다.
- 그룹 구조 변경 시 기존 사용자에 대한 영향을 분석해야 합니다.
- 그룹 변경 이력을 추적할 수 있어야 합니다.
4.3 그룹 마이그레이션 규칙
- 그룹 변경 시 기존 사용자들의 서비스 연속성을 보장해야 합니다.
- 그룹 통합/분할 시 데이터 무결성을 유지해야 합니다.
- 그룹 마이그레이션은 단계적으로 진행되어야 합니다.
5. 그룹-역할 관리 규칙
5.1 그룹-역할 할당
- 그룹은 여러 개의 역할(Role)을 가질 수 있습니다.
- 그룹-역할 연결은 IAM 도메인과 연동하여 관리됩니다.
- 그룹에 할당된 역할은 해당 그룹의 모든 멤버에게 적용됩니다.
5.2 역할 변경 규칙
- 그룹의 역할 변경은 비즈니스 규칙에 따라 검증되어야 합니다.
- 역할 변경 시 해당 그룹의 모든 사용자에게 영향을 미칩니다.
- 역할 변경 전 사용자들에게 사전 통지가 필요할 수 있습니다.
5.3 권한 계산 연동
- 그룹을 통한 권한 계산은 IAM 도메인과 연동하여 수행됩니다.
- 그룹 권한 경로:
User → Group → Role → Permission(조직/기능적 권한) - 플랜과 독립적: 그룹 기반 권한은 플랜 기반 권한과 독립적으로 계산됩니다.
- 그룹-역할 변경 시 관련 사용자들의 권한 캐시 무효화가 필요합니다.
6. 사용자-그룹 할당 관리 규칙
6.1 사용자 할당 원칙
- 사용자는 하나 이상의 그룹에 속할 수 있습니다 (다대다 관계).
- 모든 사용자는 최소 하나 이상의 그룹에 속해야 합니다.
- 사용자 유형에 따라 적절한 그룹 유형에만 할당될 수 있습니다.
- 게스트 계정은 생성 시
patients.guest.{region}그룹에 자동 편성되어야 하며, Step-up 인증 완료 시 정책에 따라 정규 환자 그룹으로 이관합니다.
6.2 할당 제약 규칙
- 환자 사용자는 환자 그룹에만 할당될 수 있습니다.
- 내부 운영자는 운영자 그룹에만 할당될 수 있습니다.
- 개발자는 개발 그룹과 테스트 그룹에 할당될 수 있습니다.
- 사용자가 상충되는 그룹에 동시 할당되는 것을 방지해야 합니다.
6.3 할당 변경 이력
- 모든 사용자-그룹 할당 변경 이력을 기록하고 추적해야 합니다.
- 변경 사유, 변경 시점, 변경 주체를 기록해야 합니다.
- 그룹 할당 변경으로 인한 권한 변화를 추적해야 합니다.
- 게스트에서 정규 사용자로 승격될 때는
Guest→Registered이관 기록을 별도 마킹하고, IAM/Plan 재계산과 동기화되어야 합니다. - 게스트 그룹 멤버십 종료 시
GroupMembershipHistory에 이벤트를 기록하고 Audit 도메인으로 전달해야 합니다.
7. 그룹 계층 구조 관리 규칙
7.1 계층 구조 정의
- 그룹 간 부모-자식 관계를 설정할 수 있습니다.
- 계층 구조는 최대 3단계까지 지원합니다.
- 순환 참조는 허용되지 않습니다.
7.2 상속 규칙
- 자식 그룹은 부모 그룹의 특성을 상속받을 수 있습니다.
- 자식 그룹에서 부모 그룹의 설정을 재정의할 수 있습니다.
- 부모 그룹 변경 시 자식 그룹에 미치는 영향을 관리해야 합니다.
7.3 계층별 권한 관리
- 계층 구조에 따른 권한 상속을 지원할 수 있습니다.
- 계층별 접근 제어를 설정할 수 있습니다.
- 계층 구조 변경 시 권한 재계산이 필요합니다.
8. 그룹 템플릿 및 프리셋 관리 규칙
8.1 그룹 템플릿
- 자주 사용되는 그룹 구성을 템플릿으로 저장할 수 있습니다.
- 템플릿을 기반으로 새로운 그룹을 빠르게 생성할 수 있습니다.
- 템플릿의 버전 관리를 지원해야 합니다.
8.2 기본 그룹 설정
- 사용자 유형별 기본 그룹을 지정할 수 있습니다.
- 새로운 사용자 등록 시 자동으로 기본 그룹에 할당됩니다.
- 기본 그룹은 삭제할 수 없습니다.
8.3 그룹 복사 및 파생
- 기존 그룹을 복사하여 새로운 그룹을 생성할 수 있습니다.
- 그룹 간 상속 관계를 설정할 수 있습니다.
- 부모 그룹 변경 시 자식 그룹에 미치는 영향을 관리해야 합니다.
9. 동적 그룹 관리 규칙
9.1 조건 기반 그룹
- 특정 조건을 만족하는 사용자를 자동으로 그룹에 할당할 수 있습니다.
- 사용자 상태 변경 시 동적으로 그룹 할당을 업데이트합니다.
- 조건식의 복잡도는 제한하여 성능을 보장해야 합니다.
9.2 자동 할당 규칙
- 사용자 등록 시 자동 그룹 할당 규칙을 적용할 수 있습니다.
- 사용자 프로필 변경 시 그룹 재할당을 수행할 수 있습니다.
- 자동 할당 규칙의 우선순위를 관리해야 합니다.
9.3 임시 그룹 관리
- 특정 기간 동안만 유효한 임시 그룹을 생성할 수 있습니다.
- 임시 그룹 만료 시 자동으로 사용자를 기본 그룹으로 이동합니다.
- 임시 그룹 상태를 모니터링하고 알림을 제공해야 합니다.
10. 그룹 모니터링 및 분석 규칙
10.1 사용량 모니터링
- 그룹별 사용자 수를 실시간으로 모니터링해야 합니다.
- 그룹별 활동 패턴을 추적해야 합니다.
- 그룹별 리소스 사용량을 모니터링해야 합니다.
10.2 성능 분석
- 그룹별 사용자 참여도를 측정할 수 있어야 합니다.
- 그룹 할당 패턴을 분석할 수 있어야 합니다.
- 그룹별 효율성을 분석할 수 있어야 합니다.
10.3 알림 및 경고
- 그룹 사용자 수가 임계치를 초과할 때 알림을 발송해야 합니다.
- 빈 그룹이나 미사용 그룹에 대한 정리 알림을 제공해야 합니다.
- 그룹 관련 시스템 오류 시 관리자에게 알림해야 합니다.
11. 조직 연동 및 통합 규칙
11.1 도메인 간 연동
- IAM 도메인: 그룹 기반 역할 할당 및 권한 부여, 접근 제어
- User 도메인: 사용자-그룹 할당 및 사용자 상태 기반 그룹 관리
- Organization 도메인: 조직 구조 기반 그룹 관리 (선택적)
- 참고: Plan 도메인과는 독립적으로 운영되며, 서로 다른 차원의 권한을 제공합니다.
11.2 외부 시스템 연동
- HR 시스템과 연동하여 조직 구조를 반영해야 합니다.
- LDAP/AD와 연동하여 그룹 정보를 동기화할 수 있습니다.
- CRM 시스템과 연동하여 고객 분류를 반영해야 합니다.
11.3 API 연동 규칙
- 그룹 정보는 REST API를 통해 조회할 수 있어야 합니다.
- 그룹 변경은 적절한 권한을 가진 사용자만 수행할 수 있습니다.
- 그룹 관련 이벤트는 이벤트 버스를 통해 전파되어야 합니다.
12. 보안 규칙
12.1 접근 제어
- 그룹 정보에 대한 접근은 적절한 권한을 가진 사용자만 가능합니다.
- 그룹 수정은 관리자 권한을 가진 사용자만 수행할 수 있습니다.
- 민감한 그룹 정보는 암호화하여 저장해야 합니다.
12.2 데이터 보호
- 그룹 데이터의 무결성을 보장해야 합니다.
- 그룹 변경 시 데이터 백업을 수행해야 합니다.
- 그룹 삭제 시 관련 데이터의 처리 방안을 정의해야 합니다.
12.3 감사 및 규정 준수
- 모든 그룹 관련 활동을 감사 로그로 기록해야 합니다.
- GDPR 등 개인정보 보호 규정을 준수해야 합니다.
- 그룹 데이터 보존 정책을 수립하고 준수해야 합니다.
13. 성능 규칙
13.1 응답 시간 목표
- 그룹 조회 API 평균 응답 시간: < 50ms
- 사용자-그룹 할당 API 평균 응답 시간: < 100ms
- 그룹 수정 API 평균 응답 시간: < 300ms
- 그룹 생성/삭제 API 평균 응답 시간: < 500ms
13.2 처리량 목표
- 초당 최소 1000건의 그룹 조회 요청 처리 가능해야 합니다.
- 초당 최소 200건의 사용자-그룹 할당 요청 처리 가능해야 합니다.
- 초당 최소 100건의 그룹 변경 요청 처리 가능해야 합니다.
13.3 캐싱 전략
- 그룹 정보를 캐싱하여 조회 성능을 향상시켜야 합니다.
- 사용자-그룹 매핑 정보를 캐싱해야 합니다.
- 그룹 변경 시 관련 캐시를 적절히 무효화해야 합니다.
14. 데이터 제약 규칙
14.1 그룹 데이터 제약
- 그룹 이름은 시스템 내에서 고유해야 합니다.
- 그룹 설명의 최대 길이는 500자로 제한합니다.
- 그룹에 할당될 수 있는 사용자의 최대 개수는 10,000명으로 제한합니다.
14.2 관계 제약
- 그룹-역할 관계에서 순환 참조는 허용되지 않습니다.
- 삭제된 역할을 참조하는 그룹이 있으면 역할 삭제를 제한합니다.
- 그룹 삭제 시 연관된 사용자가 있으면 삭제를 제한합니다.
14.3 비즈니스 제약
- 기본 그룹으로 지정된 그룹은 삭제할 수 없습니다.
- 활성 사용자가 있는 그룹은 비활성화할 수 없습니다.
- 그룹 변경 시 최소 3일의 유예 기간을 두어야 합니다.
14.4 MAO 티어/동의/라우팅 규칙
- 토큰
tier(anonymous/guest/member)에 따라 기본 그룹을 자동 할당하고, 누락 시 anonymous 그룹으로 강등 평가한다. - guest→member 승격 시 기존 guest 그룹 멤버십을 즉시 해제하고 member 그룹으로 이동하며, 변경 이벤트를 IAM/MAO에 발행한다.
- 그룹 멤버십 이벤트에
tier/consent_version/data_persistence정보를 포함해 정책 평가와 데이터 보존 정책에 활용한다. - anonymous/guest 그룹은 컨텍스트/대화 기록을 저장하지 않거나 짧은 TTL(anonymous 1일, guest 7일)로 제한하며, PII/PHI 그룹에 배정하지 않는다.
15. 변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 0.1.0 | 2025-01-27 | bok@weltcorp.com | 최초 문서 생성 (IAM 도메인에서 분리) |
| 0.2.0 | 2025-01-27 | bok@weltcorp.com | Group-Plan 독립성 확보: 2.2 그룹-플랜 연결 제거, 섹션 5 그룹-역할 관리로 변경, 3.1 그룹별 플랜 연결을 역할 할당으로 변경, 11.1, 14.2 수정 |
| 0.5.0 | 2025-10-27 | bok@weltcorp.com | 게스트 전용 그룹 규칙과 승격/제거 이력 기록 규칙 추가 (3.1.1, 6.1, 6.3 절 보강) |
| 0.6.0 | 2025-11-26 | bok@weltcorp.com | 기본 그룹 자동 할당 누락 시 anonymous, TTL(anon 1일/guest 7일)과 PII/PHI 그룹 배정 금지 확정 |
| 0.6.0 | 2025-11-26 | bok@weltcorp.com | MAO 라우팅을 위한 tier 기반 기본 그룹 자동 할당, 승격 시 이관, tier/consent/data_persistence 포함 이벤트 규칙 추가 |