ID: key_26_22_05_25_P4_4_4 Created date: 5월 25 2026 월요일

연관 문서


개요

릴리스 버전 및 마일스톤을 관리하는 기능을 구현한다.
버전에 이슈를 연결하고 릴리스 노트를 자동 생성한다.

  • 예상 소요: 4~5일
  • 선행 조건: Phase 3 완료

Claude Code 작업 수행서

작업 지시

CIRA 서버 + UI에 버전 및 마일스톤 관리 기능을 구현해줘.

[서버 수행 작업]

1. DB 마이그레이션
   V230__create_versions_milestones.sql:
   versions: id(UUID), project_id(FK NOT NULL), version_name(VARCHAR 50 NOT NULL),
             description(TEXT), status(VARCHAR 50 — UNRELEASED/RELEASED/ARCHIVED),
             planned_release_date(DATE), released_at(TIMESTAMPTZ),
             UNIQUE(project_id, version_name)
   issue_versions: issue_id(FK→issues), version_id(FK→versions),
                   relationship_type(VARCHAR 50 — FIX_VERSION/AFFECTS_VERSION),
                   PK(issue_id, version_id, relationship_type)
   milestones: id(UUID), project_id(FK NOT NULL), name(VARCHAR 200 NOT NULL),
               description(TEXT), due_date(DATE), status(VARCHAR 50 — OPEN/CLOSED)
   milestone_issues: milestone_id(FK→milestones), issue_id(FK→issues),
                     PK(milestone_id, issue_id)

2. 버전 API
   POST   /api/v1/projects/{projectId}/versions           — 버전 생성
   GET    /api/v1/projects/{projectId}/versions           — 버전 목록
   PUT    /api/v1/versions/{versionId}                   — 버전 수정
   POST   /api/v1/versions/{versionId}/release           — 릴리스 처리
   POST   /api/v1/versions/{versionId}/archive           — 아카이브
   GET    /api/v1/versions/{versionId}/release-notes     — 릴리스 노트 생성

3. 릴리스 노트 자동 생성
   GET /api/v1/versions/{versionId}/release-notes
   로직:
   - FIX_VERSION으로 연결된 Done 이슈 조회
   - 이슈 타입별 그룹화:
     * 🆕 New Features (Story)
     * 🐛 Bug Fixes (Bug)
     * ⚡ Improvements (Task)
   - 마크다운 포맷으로 반환

4. 마일스톤 API
   CRUD: /api/v1/projects/{projectId}/milestones
   GET /api/v1/milestones/{milestoneId}/progress  — 진행률
   (완료 이슈 수 / 전체 이슈 수)

[UI 수행 작업]

5. 버전 관리 페이지
   파일: src/app/(main)/projects/[projectId]/versions/page.tsx
   - 버전 목록 (상태별 필터: 미출시/출시/아카이브)
   - 버전 카드: 이름, 출시 예정일, 이슈 수, 진행률 바
   - "릴리스" 버튼 → 확인 다이얼로그 → 릴리스 처리
   - "릴리스 노트 복사" 버튼 → 마크다운 클립보드 복사

6. 이슈-버전 연결 UI
   이슈 상세 페이지 사이드바에 추가:
   - Fix Version 선택 드롭다운 (다중 선택 가능)
   - Affects Version 선택 드롭다운

7. 마일스톤 타임라인
   파일: src/components/milestone/MilestoneTimeline.tsx
   - 수평 타임라인 (due_date 기준)
   - 마일스톤 노드 (완료율 게이지)
   - 오늘 날짜 수직선
   - 마감 초과 마일스톤 빨간색 강조

완료 기준

항목기준
버전 CRUD + 상태 전이미출시→출시→아카이브
이슈-버전 연결Fix/Affects 다중 선택
릴리스 노트타입별 그룹 마크다운 생성
마일스톤 타임라인날짜 기준 시각화
진행률완료/전체 이슈 비율 표시