# task: 대시보드 계정 사용량 "토큰 만료" 문제 해결

## 배경
대시보드 계정 전환 드롭다운에서 현재 활성 계정(jonghyuk)의 사용량이 "토큰 만료"로 표시됨.
- drumband 계정: 5h 0%, 7d 한도 → 정상 표시
- jonghyuk 계정: "토큰 만료" 경고만 표시 → 사용량 미표시
- 브라우저 강제 새로고침 후에도 동일

## 현상
1. jonghyuk 계정은 현재 활성 계정(녹색 점)으로 정상 사용 중
2. 그러나 대시보드 사용량 조회 시 해당 계정의 accessToken이 만료된 것으로 처리됨
3. accessToken은 만료되더라도 refreshToken으로 갱신해야 하는데, 갱신이 실패하고 있는 것으로 추정

## 조사 및 수정 대상

### 1. 대시보드 서버 사용량 API 확인
- 파일: `/home/jay/workspace/dashboard/server.py`
- `/api/usage-status` 엔드포인트 확인
- accessToken 만료 시 refreshToken으로 자동 갱신하는 로직이 있는지 확인
- 갱신 로직이 없거나 실패하면 구현/수정

### 2. 크레덴셜 파일 확인
- 활성 크레덴셜: `~/.claude/.credentials.json`
- 백업 크레덴셜: `~/.claude/.credentials-drumband.json`, `~/.claude/.credentials-jonghyuk.json`
- 각 파일의 accessToken 만료 여부, refreshToken 존재 여부 확인
- ⚠️ 크레덴셜 파일 내용(토큰 값)을 보고서에 노출하지 말 것

### 3. OAuth 토큰 갱신 플로우 구현/수정
- Claude OAuth refresh token endpoint 확인
- accessToken 만료 시 refreshToken으로 새 accessToken 발급받는 로직
- 갱신된 accessToken을 크레덴셜 파일에 저장
- 갱신 실패 시 사용자에게 "토큰 만료 — 재로그인 필요" 대신 구체적 에러 표시

### 4. 프론트엔드 표시 확인
- 파일: `/home/jay/workspace/dashboard/components/App.js`
- "토큰 만료" 표시 로직 확인
- 토큰 갱신 성공 시 자동으로 사용량 표시되도록 연결

## 핵심 목표
현재 활성 계정(jonghyuk)의 사용량(5h, 7d)이 정상 표시되어야 함.
토큰 만료 시 자동 갱신되어 사용자가 수동 개입할 필요 없어야 함.

## 제약사항
- 크레덴셜 파일의 토큰 값을 보고서나 로그에 노출 금지
- Claude Code의 기존 로그인 세션에 영향 주지 말 것
- 대시보드 서버 재시작 후 정상 동작 확인
