2.9 KiB
2.9 KiB
| domain | last_rule_review_commit | last_rule_updated_at |
|---|---|---|
| domain-model | unborn-head | 2026-07-23 |
domain-model
목적 / 책임
인증된 범위가 결합된 오류 이벤트, 조직 식별자, 표준 실패 원인, 수정 방식과 수정 가능성 등 Ariadne의 핵심 불변 규칙을 정의한다.
포함 경로
internal/domain/errorrecord/— 입력 오류를 Ariadne 내부의 조직·프로젝트 범위가 결합된 이벤트로 정규화한다.internal/domain/organization/— 조직 범위에 사용하는 검증 가능한 식별자 타입을 제공한다.internal/domain/failure/— 오류 처리 단계와 중첩 원인을 포함한 표준 실패 모델을 제공한다.internal/domain/remediation/— 수정 전 보고·자동 수정 후 보고 방식과 수정 가능성 값을 정의한다.
제외 경로
internal/platform/database/— 도메인 모델의 PostgreSQL 저장·격리 구현은 platform 책임이다.internal/integration/iop/— IOP 요청과 이벤트 변환은 integrations 책임이다.contracts/— 외부 wire schema와 버전 관리는 integrations 책임이다.
주요 구성 요소
errorrecord.Event— 인증된 입력 출처에서 결정한 조직·프로젝트 범위를 포함하는 정규화 오류다.organization.ID— UUID 기반 조직 식별자 값 타입이다.failure.Failure,failure.Cause— 처리 단계, 재시도 가능성, 원인 스택을 표현한다.remediation.Mode,remediation.Fixability— 수정 작업 방식과 분석 결과의 수정 가능성을 제한된 값으로 표현한다.
유지할 패턴
- 외부 계약과 연결되는 값은
SchemaVersionV1같은 명시적 버전 상수를 유지한다. - 값 검증은 각 타입의
Validate또는Parse...경계에서 수행하고 여러 오류는errors.Join으로 함께 반환한다. errorrecord.Event의 조직, 프로젝트, 입력 출처는 인증된 자격 증명 해석 결과로 주입한다.- 실패 단계와 수정 방식은 닫힌 열거 값으로 유지하고 알 수 없는 값을 거부한다.
다른 도메인과의 경계
- integrations: 도메인 타입을 IOP·JSON 계약에 연결하되 외부 전송 형식을 이 도메인으로 역류시키지 않는다.
- platform: 도메인 타입의 저장과 조직 격리를 담당하지만 도메인 불변 규칙을 SQL에만 숨기지 않는다.
- client: 사용자에게 상태를 표현하되 도메인 판정과 권한 결정을 화면 코드에서 수행하지 않는다.
금지 사항
- 요청 본문의 조직·프로젝트 식별자를 신뢰해
errorrecord.Event범위를 결정하지 않는다. - 도메인 패키지에서 pgx, HTTP, IOP 네이티브 프로토콜에 직접 의존하지 않는다.
Fixability에 승인 상태나 실행 상태를 섞지 않는다.- 기존 표준 실패 단계나 schema version을 호환성 검토 없이 변경하지 않는다.