# AEG-X-008: OpenAPI 기준선 & 릴리스 서명 승인 요청 **WBS Item:** AEG-X-008 **Status:** ⏳ IN_PROGRESS → DECISION_REQUIRED **Decision Owner:** API Architect, DevOps **Blocks:** FE OpenAPI 자동 생성, CI/CD 파이프라인 게이트, API 버전 관리 **Impact:** API 계약 검증 미완료, 클라이언트 생성 불가, 변경 추적 불명확 --- ## 현재 상태 **구현 완료:** - ✅ Host Release 빌드 (0 경고/오류) - ✅ Architecture tests 17/17 PASS - ✅ OpenAPI 게이트 로컬 검증: YAML/기준선/후보 검증 0 위반 - ✅ FE 회귀 57 files/150 tests PASS **아직 미결정:** - ⏳ 공식 기준선 승인 (baseline approval) - ⏳ Gitea Actions 실행 권한 - ⏳ API Architect 릴리스 서명 - ⏳ 변경 추적 정책 **알려진 이슈:** - 현재: >500 kB Vite 청크 경고 (AEG-X-002 최적화 후에도 지속) --- ## 필요한 4가지 결정 ### 1️⃣ 공식 OpenAPI 기준선 (Baseline Snapshot) **결정:** 프로덕션 릴리스 시 공식 기준선 정의 ``` Current state: - src/KArtSell.Host/artifacts/openapi/current_20260813_auto-off.json (기준) - Generated on: 2026-08-13 14:02 UTC - Total endpoints: [count required] - Security schemes: X-KArtSell-User header + Role-based Approval needed: ✅ 기준선 파일 지정: [ ] (git path) ✅ 버전 정책: [ ] (semantic/date-based) ✅ 승인 프로세스: [ ] (자동/수동) ✅ 기준선 갱신 빈도: [ ] (per-release/quarterly) Linked Items: - src/KArtSell.Host/artifacts/openapi/ (저장소) - .gitea/workflows/openapi-gate.yml (CI 검증) - docs/DECISIONS/ADR-API-BASELINE-001.md (현재 ADR) ``` ### 2️⃣ 호환성 정책 (Compatibility Enforcement) **결정:** 기준선 vs 후보 비교 규칙 ``` Breaking changes that FAIL the gate: - Endpoint 제거 또는 경로 변경 - 필수 파라미터 추가 (기존 클라이언트 호환 불가) - 응답 필드 제거 (기존 클라이언트 parsing 실패) - Status code 변경 (e.g., 200 → 400) Non-breaking changes that PASS: - 선택적 파라미터/필드 추가 - 새로운 status code 추가 (기존 클라이언트 무시 가능) - 기존 필드 추가 필터/정렬 옵션 Approval needed: ✅ Breaking change 정의: [ ] (완전? 부분?) ✅ Deprecation 정책: [ ] (90일 공지? 기간?) ✅ 주요 버전 전략: [ ] (v1/v2 지원?) ✅ 예외 프로세스: [ ] (CTO 승인 필요?) Linked Items: - OpenAPI 3.1 deprecated keyword usage - Semantic versioning (major.minor.patch) - Client library generation (auto-off vs auto-on) ``` ### 3️⃣ Gitea Actions 실행 & 서명 (CI/CD Gate) **결정:** 자동 검증과 수동 서명 책임 ``` Current CI/CD state: - .gitea/workflows/openapi-gate.yml exists - Runs on: push/PR (currently local only) - Validation: YAML structure, baseline diff, schema compliance - Status: No Gitea Actions configured server-side Decisions needed: ✅ Gitea Actions enabled: [ ] (Yes/No) ✅ 실행 권한: [ ] (auto/manual) ✅ 릴리스 서명자: [ ] (단일/복수?) ✅ 서명 증명: [ ] (commit msg/tag/annotation?) Approval needed: ✅ API Architect: [ ] (name/email) ✅ API Architect secondary: [ ] (name/email, fallback) ✅ DevOps gate owner: [ ] (name/email) ✅ Approval 보존 기한: [ ] (6개월/1년/영구) Linked Items: - .gitea/workflows/openapi-gate.yml (current workflow) - src/KArtSell.Host/artifacts/openapi/ (baseline location) - API Architect approval log (where to record?) ``` ### 4️⃣ 클라이언트 생성 & 배포 (Client Generation) **결정:** 공식 OpenAPI 기준선 기반 클라이언트 생성 여부 ``` Option A: Manual (current state) - Baseline: 수동 승인 → 배포 - Client: 개발자 수동 생성 (openapi-generator, swagger-codegen) - 사용: 직접 임포트 또는 npm 게시 Option B: Automated - Baseline: CI gate auto-pass (호환성 규칙 충족) - Client: 자동 생성 (GitHub Actions / Gitea Actions) - 배포: NPM registry (npm publish) 또는 S3 - 버전: OpenAPI 버전 태그 동기화 Option C: Hybrid - Pre-release: 수동 승인 (API Architect sign-off) - Patch: 자동 생성 (호환성 보장) - Release: 태그 자동 + NPM publish Approval needed: ✅ 정책 선택: [ ] (A/B/C) ✅ 클라이언트 저장소: [ ] (npm/@kartsell/client? git-submodule?) ✅ 배포 주기: [ ] (per-release/weekly) ✅ 자동 테스트: [ ] (생성된 클라이언트 검증?) Linked Items: - docs/CURRENT/V13-FE-009_ADR_OPENAPI_ZOD_STRATEGY.md (현재 전략) - openapi-generator / swagger-codegen (도구) - npm registry vs internal repository ``` --- ## 제출 형식 **승인자는 다음 정보 제공:** ### 1. Baseline Approval ``` Official Baseline: File: [ ] (git path) Version: [ ] (vX.Y.Z or YYYY-MM-DD) Update Policy: Frequency: [ ] (per-release/quarterly/on-demand) Approval Process: [ ] (auto/manual) Sign-off Required: [ ] (Yes/No) ``` ### 2. Compatibility Rules ``` Breaking Changes: Defined: [ ] (comprehensive list) Deprecation Period: [ ] (days) Non-Breaking: Auto-approved: [ ] (Yes/No) Client Notification: [ ] (Yes/No) ``` ### 3. Gitea Actions & Signing ``` CI Execution: Enabled: [ ] (Yes/No) Trigger: [ ] (push/PR/manual) API Architect: Primary: [ ] (name) Secondary: [ ] (name) Approval Record: [ ] (location) ``` ### 4. Client Generation Strategy ``` Option: [ ] (A-Manual / B-Automated / C-Hybrid) Deployment: Repository: [ ] (npm/@kartsell/client / git-submodule) Frequency: [ ] (per-release/weekly) Validation: [ ] (Yes/No) ``` --- ## 의존성 - **Blocks:** FE OpenAPI 클라이언트 생성, CI/CD 완전 자동화 - **Related:** AEG-X-002 (번들 최적화), 빌드 파이프라인, 버전 관리 - **Prerequisite:** API Architect, DevOps 팀 협력 --- **제출 기한:** 2026-08-21 (1주) **승인자:** API Architect, DevOps Lead **Escalation:** Engineering Director (정책 논쟁 시)