ariadne/agent-ops/rules/project/domain/domain-model/rules.md
2026-07-24 05:45:04 +09:00

51 lines
2.9 KiB
Markdown

---
domain: domain-model
last_rule_review_commit: unborn-head
last_rule_updated_at: 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을 호환성 검토 없이 변경하지 않는다.