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

연관 문서


개요

번다운 차트, Velocity, CFD 등 대시보드에서 사용할 집계 데이터 API를 구현한다.

  • 예상 소요: 3~4일
  • 선행 조건: Phase 2 완료 (스프린트 데이터 존재)
  • 완료 기준: 스프린트 번다운 데이터 API 응답 정상 확인

Claude Code 작업 수행서

작업 지시

CIRA 서버에 대시보드 및 리포팅 데이터 API를 구현해줘.

[수행 작업]

1. 번다운 차트 API
   GET /api/v1/sprints/{sprintId}/burndown
   Response:
   {
     "sprintName": "Sprint 1",
     "startDate": "2026-06-01",
     "endDate": "2026-06-14",
     "totalPoints": 50,
     "idealBurndown": [
       { "date": "2026-06-01", "remainingPoints": 50 },
       { "date": "2026-06-02", "remainingPoints": 46.4 },
       ...
     ],
     "actualBurndown": [
       { "date": "2026-06-01", "remainingPoints": 50 },
       { "date": "2026-06-02", "remainingPoints": 48 },
       ...
     ]
   }
   구현:
   - 스프린트 시작~오늘(또는 종료일)까지 날짜별 집계
   - issue_logs 테이블에서 Done 상태 전환 시점 조회
   - 이상적 번다운: (총 포인트 / 스프린트 일수) * 경과일

2. Velocity 리포트 API
   GET /api/v1/projects/{projectId}/velocity
   파라미터: lastN=6 (최근 N 스프린트)
   Response:
   [
     {
       "sprintName": "Sprint 1",
       "committed": 50,
       "completed": 42,
       "velocity": 42
     }
   ]
   구현: sprint_metrics 테이블에서 조회 (없으면 재계산)

3. CFD (누적 흐름 다이어그램) API
   GET /api/v1/projects/{projectId}/cfd
   파라미터: startDate, endDate
   Response: 날짜별 × 상태별 이슈 수
   {
     "dates": ["2026-06-01", "2026-06-02", ...],
     "statuses": ["To Do", "In Progress", "In Review", "Done"],
     "data": {
       "To Do": [10, 8, 7, ...],
       "In Progress": [5, 6, 8, ...],
       ...
     }
   }

4. 개인 대시보드 API
   GET /api/v1/users/me/dashboard
   Response:
   - assignedIssues: 나에게 할당된 미완료 이슈 목록
   - recentActivity: 최근 7일 내 내가 변경한 이슈 이력
   - upcomingDeadlines: 마감일이 7일 이내인 이슈 목록
   - sprintProgress: 현재 스프린트 완료율

5. 프로젝트 통계 API
   GET /api/v1/projects/{projectId}/stats
   Response:
   - totalIssues, openIssues, inProgressIssues, closedIssues
   - issuesByType: 타입별 분포
   - issuesByPriority: 우선순위별 분포
   - issuesByAssignee: 담당자별 분포

6. 캐싱 전략
   - 번다운/Velocity는 1시간 캐시 (Redis)
   - 대시보드 개인 데이터는 5분 캐시
   - 캐시 키: dashboard:{projectId}:{type}:{params_hash}

완료 기준

항목기준
번다운 API날짜별 이상/실제 데이터 정상
Velocity API최근 6 스프린트 데이터
CFD API날짜×상태 매트릭스 반환
개인 대시보드4종 데이터 정상 반환
응답 속도캐시 히트 시 100ms 이내

후행 작업