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

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을 호환성 검토 없이 변경하지 않는다.