**task-938.2 완료 보고** (dev5-team) **완료 보고서: 대시보드 토큰 사용량 시각화** (11분 41초) **핵심 결과** task-timers.json(818개 작업)에서 duration 기반 토큰 추정 엔진 + `/api/token-usage` API + Chart.js 시각화 뷰를 구현. 총 84.8M 토큰, $2,446 비용, 40건 이상치를 식별. 이상치 상위 5건은 평균(104K)의 31~80배. token-ledger.json이 생성되면 자동 전환. ## 산출물 ### 신규 생성 (1건) - `/home/jay/workspace/dashboard/components/TokenView.js` (467줄) — 토큰 시각화 React 컴포넌트 ### 수정 (3건) - `/home/jay/workspace/dashboard/server.py` — `get_token_usage()` 메서드 + `/api/token-usage` 엔드포인트 추가 - `/home/jay/workspace/dashboard/components/App.js` — tabs 배열에 '토큰' 탭 + TokenView 렌더링 추가 - `/home/jay/workspace/dashboard/index.html` — Chart.js CDN + TokenView.js 스크립트 로드 추가 ## 구현 상세 ### 1. 서버 API (`/api/token-usage`) - `DataLoader.get_token_usage()` 메서드: token-ledger.json(우선) 또는 task-timers.json(fallback) 기반 - 추정 로직: `duration_seconds * 50 = input_tokens`, `input * 0.3 = output_t 테스트: pyright 0 errors **발견/해결 이슈 4건** 1. **바 차트 스케일 왜곡** — 극단적 이상치(task-252.1: 8.3M)가 다른 막대를 압축. X축 max를 avg×4로 제한하여 해결. 2. **이상치 목록 과다** — 40건이 페이지를 지배. 기본 5건 표시 + "더보기 (+35건)" 토글로 해결. 3. **서버 재시작 필요** — API 추가 후 기존 서버에 반영되려면 재시작 필요. 서버 재시작 확인 완료. 4. **팀 카드에 토큰 정보 추가** — 미해결: 작업 지시의 선택 사항 (항목 5). task-938.1 완료 후 token_usage 필드가 tasks API에 추가되면 기존 TeamCard에 자연스럽게 통합 가능. 현재는 추정 데이터이므로 별도 탭에서 확인하는 것이 적절.