docs(ai-character): OpenAPI 계약 반영

This commit is contained in:
Yu Sung
2026-07-28 03:33:16 +09:00
parent 2a5efb0f3e
commit dd30e36323
13 changed files with 1896 additions and 1164 deletions

View File

@@ -7,7 +7,7 @@
| 상태 | 계획 작성 중 / 구현 중 / 외부 조건 대기 / 구현 완료 |
| 작성일 | `YYYY-MM-DD` |
| 요구사항 기준 | `<대상 prd.md 경로>` |
| API 기준 | `<대상 api-contract.md 경로>` |
| API 기준 | `<대상 API Contract 파일 경로>` |
| 현재 Phase | `<Phase 번호와 이름>` |
| 현재 활성 Goal | `<없음 또는 Goal ID>` |
@@ -182,7 +182,7 @@
**Files:**
- Modify: `<대상 prd.md 경로>`
- Modify: `<대상 api-contract.md 경로>`
- Modify: `<대상 API Contract 파일 경로>`
- Modify: `<대상 plan-task.md 경로>`
- Test: 없음 — 이 Task의 산출물은 실행 코드가 아니라 확정된 계약과 구현 map이다.
@@ -205,8 +205,8 @@
- **실행 명령:**
```bash
! rg --pcre2 -n '^(?!\s*!?\s*rg\b).*(?:TBD|TODO|적절히 처리|나중에 구현|위와 동일)' <대상 prd.md 경로> <대상 api-contract.md 경로> <대상 plan-task.md 경로>
git diff --check -- <대상 prd.md 경로> <대상 api-contract.md 경로> <대상 plan-task.md 경로>
! rg --pcre2 -n '^(?!\s*!?\s*rg\b).*(?:TBD|TODO|적절히 처리|나중에 구현|위와 동일)' <대상 prd.md 경로> <대상 API Contract 파일 경로> <대상 plan-task.md 경로>
git diff --check -- <대상 prd.md 경로> <대상 API Contract 파일 경로> <대상 plan-task.md 경로>
```
- **기대 결과:** 두 명령 모두 출력 없이 `exit 0`; 모든 요구사항 ID와 계약 이름이 세 문서에서 일치한다.

View File

@@ -11,7 +11,7 @@
| 최종 수정일 | `YYYY-MM-DD` |
| 대상 제품 | `<제품 또는 기능 이름>` |
| 작성자·결정권자 | `<이름 또는 역할>` |
| 관련 API Contract | `<대상 api-contract.md 경로>` |
| 관련 API Contract | `<대상 API Contract 파일 경로>` |
| 관련 구현 계획 | `<대상 plan-task.md 경로>` |
| 관련 review | `<없음 또는 review 문서 링크>` |
@@ -28,7 +28,7 @@
### 문서 우선순위와 갱신 순서
1. 사용자·제품 결정은 이 PRD에 기록한다.
2. request/response/error 계약은 `api-contract.md`에 정규화한다.
2. request/response/error 계약은 프로젝트의 실제 API Contract 파일에 정규화한다.
3. 구현 범위·순서·완료 증거는 `plan-task.md`에 반영한다.
4. 요구사항이 바뀌면 Decision Log → 관련 요구사항·수용 기준 → API Contract → plan 순서로 갱신한다.
5. 기존 결정과 검증 기록은 삭제하거나 덮어쓰지 않고 정정 기록을 누적한다.
@@ -117,7 +117,7 @@ Non-Goal을 변경하려면 Decision Log와 `plan-task.md` 범위를 먼저 갱
| ID | 상태 | 요구사항 | 수용 기준 | 계약/Goal 연결 |
|---|---|---|---|---|
| `DOMAINA-001` | 확정 | `<사용자가 할 수 있어야 하는 동작>` | `<관찰 가능한 성공·오류 결과>` | `api-contract.md §<번호>`, `P1-T1` |
| `DOMAINA-001` | 확정 | `<사용자가 할 수 있어야 하는 동작>` | `<관찰 가능한 성공·오류 결과>` | `<API Contract operation/section>`, `P1-T1` |
| `DOMAINA-002` | 확정 | `<payload·상태·권한 불변식>` | `<보내야/보내지 말아야 할 값과 test>` | `P1-T2` |
| `DOMAINA-003` | 외부 의존 | `<외부 제공이 필요한 계약>` | `<제공 전 network integration 0건>` | `EXT-001`, `P1-T1` |
@@ -125,14 +125,14 @@ Non-Goal을 변경하려면 Decision Log와 `plan-task.md` 범위를 먼저 갱
| ID | 상태 | 요구사항 | 수용 기준 | 계약/Goal 연결 |
|---|---|---|---|---|
| `DOMAINB-001` | 확정 | `<목록·상세·mutation 흐름>` | `<loading·empty·error·success 포함>` | `api-contract.md §<번호>`, `P2-T2` |
| `DOMAINB-001` | 확정 | `<목록·상세·mutation 흐름>` | `<loading·empty·error·success 포함>` | `<API Contract operation/section>`, `P2-T2` |
| `DOMAINB-002` | 미결 | `<제품 결정이 필요한 항목>` | `<확정 전 최대값·동작 추정 금지>` | `OQ-001` |
### 8.3 공통 파일·데이터 정책
| ID | 상태 | 요구사항 | 수용 기준 | 계약/Goal 연결 |
|---|---|---|---|---|
| `FILE-001` | 확정 | `<허용 확장자·MIME·크기>` | `<정확한 byte 경계 test>` | `api-contract.md §<번호>`, `<Goal ID>` |
| `FILE-001` | 확정 | `<허용 확장자·MIME·크기>` | `<정확한 byte 경계 test>` | `<API Contract operation/section>`, `<Goal ID>` |
| `DATA-001` | 확정 | `<날짜·가격·enum·pagination 규칙>` | `<formatter/schema/contract test>` | `<Goal ID>` |
## 9. 반응형 기능 범위

View File

@@ -10,7 +10,7 @@
| 기준 commit 또는 working tree | `<commit SHA 또는 변경 상태>` |
| 리뷰 일자 | `YYYY-MM-DD` |
| 리뷰어 | `<이름 또는 agent>` |
| 기준 문서 | `<대상 prd.md, api-contract.md, plan-task.md 경로>` |
| 기준 문서 | `<대상 prd.md, API Contract 파일, plan-task.md 경로>` |
| 리뷰 상태 | 진행 중 / 판정 완료 / 수정 검증 완료 |
## 2. 리뷰 목적과 범위
@@ -94,7 +94,7 @@ Browser/viewport: <값>
- **심각도:** `<Blocker | High | Medium | Low>`
- **상태:** `<후보 | 확정 | 오탐 | 보류 | 수정 완료>`
- **관련 요구사항:** `<요구사항 ID 또는 없음>`
- **관련 계약:** `<api-contract.md section 또는 없음>`
- **관련 계약:** `<API Contract operation/section 또는 없음>`
- **소유 Task:** `<기존 Goal ID 또는 신규 회귀 Task>`
**관찰 내용**