# task-1179.1: 계정 드롭다운 사용량 표시 수정

## SCQA

**S**: 대시보드 계정 드롭다운에서 각 계정의 API 사용량(5h/7d)을 프로그레스 바로 표시하는 기능이 구현되어 있다.

**C**: 3가지 버그가 존재. (1) 활성 계정(jonghyuk)의 사용량이 API에서 "active" 키로 반환되는데 프론트에서 계정명으로 조회하여 매칭 실패, (2) 7d 사용량이 UI에 전혀 표시되지 않음(5h만 표시), (3) 토큰 만료 계정에 아무 표시 없음.

**Q**: 활성 계정 매칭을 수정하고, 5h+7d 동시 표시 및 토큰 만료 상태 표시를 구현할 수 있는가?

**A**: server.py에서 md5 비교로 활성 계정명을 판별하여 "active" 대신 실제 계정명을 키로 사용하도록 수정. App.js에서 5h+7d 이중 프로그레스 바 및 토큰 만료 표시 추가. pytest 7건 통과, pyright 에러 0건.

## 수정 내역

### 서버 (server.py)
- `_get_usage_status()` 메서드 (라인 3509~3534): 활성 계정의 `.credentials.json` md5와 백업 파일들의 md5를 비교하여 실제 계정명 판별. "active" 키 대신 계정명(예: "jonghyuk") 사용. 중복 처리 방지를 위해 활성 계정의 백업은 스킵.

### 프론트엔드 (App.js)
- 드롭다운 사용량 표시 (라인 333~368): 5h 단일 프로그레스 바 → 5h+7d 이중 프로그레스 바로 변경. 각 바에 라벨(5h/7d) 표시, 80%+ 빨강 경고, 100% 시 "한도" 텍스트.
- 토큰 만료 표시: `usage.error` 시 "토큰 만료" 빨간 텍스트 표시 (기존에는 null 반환).

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **활성 계정 키 불일치** — server.py에서 md5 비교 로직 추가하여 실제 계정명 매핑
2. **7d 사용량 미표시** — App.js에서 7d 프로그레스 바 및 리셋 날짜 표시 추가
3. **토큰 만료 무표시** — App.js에서 error 분기 처리하여 경고 텍스트 표시

### 범위 외 미해결 (1건)
1. **style_check WARN (black formatting)** — 범위 외 사유: server.py 전체의 기존 포맷팅 이슈. 본 작업 변경 부분만으로는 영향 없음.

## 산출물

- `/home/jay/workspace/dashboard/server.py`
- `/home/jay/workspace/dashboard/components/App.js`

## QC 증거

- pytest: 7건 통과 (0.26s)
- pyright: 0 에러, 0 경고
- test_runner: PASS
- style_check: WARN (기존 black 포맷팅 — 본 작업 범위 외)
