본문으로 건너뛰기

도메인 구현 결과

분류타입기반 클래스검증 규칙
문자열 VOModelNameSimpleValueObject<string>NotNull, NotEmpty, Trim, MaxLength(100)
문자열 VOModelVersionSimpleValueObject<string>NotNull, NotEmpty, SemVer 정규식
문자열 VOModelPurposeSimpleValueObject<string>NotNull, NotEmpty, Trim, MaxLength(500)
문자열 VOEndpointUrlSimpleValueObject<string>NotNull, NotEmpty, URI 형식
문자열 VOIncidentDescriptionSimpleValueObject<string>NotNull, NotEmpty, Trim, MaxLength(2000)
문자열 VOResolutionNoteSimpleValueObject<string>NotNull, NotEmpty, Trim, MaxLength(2000)
비교 가능 VODriftThresholdComparableSimpleValueObject<decimal>Between(0.0, 1.0)
비교 가능 VOAssessmentScoreComparableSimpleValueObject<int>Between(0, 100), IsPassing
Smart EnumRiskTierSimpleValueObject<string>4값, RequiresComplianceAssessment, IsProhibited
Smart EnumDeploymentStatusSimpleValueObject<string>6값, 전이 맵
Smart EnumDeploymentEnvironmentSimpleValueObject<string>2값 (Staging, Production)
Smart EnumAssessmentStatusSimpleValueObject<string>5값, 전이 맵
Smart EnumCriterionResultSimpleValueObject<string>3값 (Pass, Fail, NotApplicable)
Smart EnumIncidentSeveritySimpleValueObject<string>4값, RequiresQuarantine
Smart EnumIncidentStatusSimpleValueObject<string>4값, 전이 맵
Aggregate인터페이스핵심 패턴
AIModelIAuditable, ISoftDeletableWithUser이중 팩토리, Soft Delete 가드
ModelDeploymentIAuditable이중 팩토리, 상태 전이
ComplianceAssessmentIAuditable이중 팩토리, 자식 엔티티 관리
ModelIncidentIAuditable이중 팩토리, 상태 전이
Entity부모 Aggregate역할
AssessmentCriterionComplianceAssessment평가 기준, 결과 기록
Service교차 대상역할
RiskClassificationServiceAIModel목적 키워드 -> 위험 등급 분류
DeploymentEligibilityServiceAIModel, Assessment, Incident배포 적격성 3단계 검증
Specification대상 Aggregate용도
ModelNameSpecAIModel모델명 검색
ModelRiskTierSpecAIModel위험 등급 필터
DeploymentByModelSpecModelDeployment모델별 배포 조회
DeploymentActiveSpecModelDeployment활성 배포 필터
DeploymentQuarantinedSpecModelDeployment격리 배포 필터
AssessmentByModelSpecComplianceAssessment모델별 평가 조회
AssessmentByDeploymentSpecComplianceAssessment배포별 평가 조회
AssessmentPendingSpecComplianceAssessment미완료 평가 필터
IncidentByModelSpecModelIncident모델별 인시던트 조회
IncidentByDeploymentSpecModelIncident배포별 인시던트 조회
IncidentOpenSpecModelIncident미해결 인시던트 필터
IncidentBySeveritySpecModelIncident심각도별 인시던트 필터
Aggregate이벤트트리거
AIModelRegisteredEvent모델 등록
AIModelRiskClassifiedEvent위험 등급 재분류
AIModelVersionUpdatedEvent버전 업데이트
AIModelUpdatedEvent정보 업데이트
AIModelArchivedEvent모델 아카이브
AIModelRestoredEvent모델 복원
ModelDeploymentCreatedEvent배포 생성
ModelDeploymentSubmittedForReviewEvent검토 제출
ModelDeploymentActivatedEvent배포 활성화
ModelDeploymentQuarantinedEvent배포 격리
ModelDeploymentRemediatedEvent격리 해제
ModelDeploymentDecommissionedEvent배포 해제
ComplianceAssessmentCreatedEvent평가 생성
ComplianceAssessmentCriterionEvaluatedEvent기준 평가
ComplianceAssessmentCompletedEvent평가 완료
ModelIncidentReportedEvent인시던트 보고
ModelIncidentInvestigatingEvent조사 시작
ModelIncidentResolvedEvent인시던트 해결
Repository추가 메서드
IAIModelRepositoryExists(spec), GetByIdIncludingDeleted(id)
IDeploymentRepositoryExists(spec), Find(spec)
IAssessmentRepositoryExists(spec), Find(spec)
IIncidentRepositoryExists(spec), Find(spec)
AiGovernance.Domain/
├── SharedModels/
│ └── Services/
│ ├── RiskClassificationService.cs
│ └── DeploymentEligibilityService.cs
└── AggregateRoots/
├── Models/
│ ├── AIModel.cs
│ ├── IAIModelRepository.cs
│ ├── ValueObjects/ (ModelName, ModelVersion, ModelPurpose, RiskTier)
│ └── Specifications/ (ModelNameSpec, ModelRiskTierSpec)
├── Deployments/
│ ├── ModelDeployment.cs
│ ├── IDeploymentRepository.cs
│ ├── ValueObjects/ (DeploymentStatus, DeploymentEnvironment, EndpointUrl, DriftThreshold)
│ └── Specifications/ (DeploymentByModelSpec, DeploymentActiveSpec, DeploymentQuarantinedSpec)
├── Assessments/
│ ├── ComplianceAssessment.cs
│ ├── AssessmentCriterion.cs
│ ├── IAssessmentRepository.cs
│ ├── ValueObjects/ (AssessmentScore, AssessmentStatus, CriterionResult)
│ └── Specifications/ (AssessmentByModelSpec, AssessmentByDeploymentSpec, AssessmentPendingSpec)
└── Incidents/
├── ModelIncident.cs
├── IIncidentRepository.cs
├── ValueObjects/ (IncidentSeverity, IncidentStatus, IncidentDescription, ResolutionNote)
└── Specifications/ (IncidentByModelSpec, IncidentByDeploymentSpec, IncidentOpenSpec, IncidentBySeveritySpec)

단위 테스트는 Value Object, Aggregate, Domain Service, Architecture 네 범주로 구성됩니다. 전체 솔루션 기준 268개 테스트가 2개 어셈블리에서 실행됩니다.

범주테스트 파일 수테스트 대상
Value Objects1516종 VO의 생성, 검증, Smart Enum 전이 규칙
Aggregates44종 Aggregate의 Create, 상태 전이, 가드, CreateFromValidated
Domain Services1RiskClassificationService 키워드 분류
Architecture3도메인/애플리케이션 아키텍처 규칙, 레이어 의존성
합계23

268개 테스트에는 단위 테스트(AiGovernance.Tests.Unit)와 통합 테스트(AiGovernance.Tests.Integration) 모두 포함됩니다.

다음 단계에서는 애플리케이션 비즈니스 요구사항에서 이 도메인 규칙을 유스케이스로 조율하는 방법을 정의합니다.