# [계획 문서] - 경로: `common-docs/improvement/plans/dev-plan-2026-03-05-trade-chart-timeframes-and-history.md` ## [요구사항 요약] - 차트 표시/상호작용을 개선한다. (공식 문서 기준 반영) - 분봉 옵션에 5분/10분/15분을 추가한다. - 1시간봉 과거 데이터가 짧게 보이는 원인을 수정한다. ## [가정] - 기존 차트 라이브러리는 `lightweight-charts@5.1.0`을 유지한다. - KIS 분봉 API는 당일/일별 분봉 API를 조합해 과거 데이터를 이어 붙인다. - UI 레이아웃 전체 재설계보다 차트 영역 중심 개선을 우선한다. ## [영향 범위] - 수정: `features/trade/types/trade.types.ts` - 수정: `features/trade/components/chart/stock-line-chart-meta.ts` - 수정: `features/trade/components/chart/chart-utils.ts` - 수정: `features/trade/components/chart/StockLineChart.tsx` - 수정: `lib/kis/domestic-helpers.ts` - 수정: `app/api/kis/domestic/chart/route.ts` ## [구현 단계] - [x] 1. 차트/타임프레임 타입 확장 (`1m/5m/10m/15m/30m/1h/1d/1w`) - 근거: `features/trade/types/trade.types.ts` - [x] 2. 분봉 버킷 계산 로직 확장 (5/10/15분 지원) - 근거: `lib/kis/domestic-helpers.ts`, `features/trade/components/chart/chart-utils.ts`, `app/api/kis/domestic/chart/route.ts` - [x] 3. 차트 초기 과거 로드량을 시간프레임별로 확장해 1시간봉 과거 구간 부족 개선 - 근거: `features/trade/components/chart/stock-line-chart-meta.ts`, `features/trade/components/chart/StockLineChart.tsx` - [x] 4. infinite history 로딩 트리거를 공식 문서 권장 패턴(`barsInLogicalRange`)으로 보강 - 근거: `features/trade/components/chart/StockLineChart.tsx` - [x] 5. 차트 가시성 옵션(축 여백/우측 여백/가격선) 미세 개선 - 근거: `features/trade/components/chart/StockLineChart.tsx` (`timeScale.rightOffset/barSpacing/minBarSpacing/rightBarStaysOnScroll`) ## [사용할 MCP/Skills] - MCP: `tavily-remote` (lightweight-charts 공식 문서 확인) - MCP: `mcp:kis-code-assistant-mcp` (KIS 분봉 API 파라미터/제약 확인) - Skills: `dev-auto-pipeline`, `vercel-react-best-practices` ## [참조 문서(common-docs)] - `common-docs/api-reference/openapi_all.xlsx` - `common-docs/api-reference/kis_api_reference.md` - `common-docs/api-reference/kis-error-code-reference.md` - `common-docs/features/trade-stock-sync.md` - `common-docs/ui/GLOBAL_ALERT_SYSTEM.md` ## [리스크/회귀 포인트] - 분봉 추가 후 기존 30분/1시간 정렬 경계가 깨질 수 있음 - 과거 로드량 증가 시 초기 로딩 시간이 늘 수 있음 - 무한 스크롤 조건 변경 시 중복 API 호출이 발생할 수 있음 ## [검증 계획] - [x] 1. 타입/빌드 검증: `npm run lint` - 근거: 통과 - [x] 2. 프로덕션 빌드 검증: `npm run build` - 근거: 통과 - [x] 3. 수동 점검: 분봉 드롭다운(1/5/10/15/30/60분) 노출 확인 - 근거: Playwriter 스냅샷에서 `1분/5분/10분/15분/30분/1시간` 버튼 노출 확인 - [x] 4. 수동 점검: 1시간봉 진입 직후 과거 구간 확장 여부 확인 - 근거: `/api/kis/domestic/chart?timeframe=1h` 초기 요청 19건 확인, 최소 시각 `2026-02-26 09:00:00(KST)`까지 로드 - [x] 5. 수동 점검: 좌측 스크롤 시 과거 데이터 추가 로딩 유지 확인 - 근거: 차트 드래그 후 `timeframe=1h` 추가 요청 5건 발생, 최소 시각 `2026-02-25 09:00:00(KST)`로 확장 ## [진행 로그] - 2026-03-05: 계획 문서 생성. - 2026-03-05: `lightweight-charts` 공식 문서 확인 (`subscribeVisibleLogicalRangeChange`, `barsInLogicalRange`, infinite history 데모). - 2026-03-05: `kis-code-assistant-mcp`로 `inquire_time_itemchartprice`, `inquire_time_dailychartprice` 예제 확인 (당일/과거 분봉 API 호출 제약 확인). - 2026-03-05: 차트 타임프레임 확장(5/10/15분) + 과거 로드 로직 개선 + KIS 분봉 cursor 파싱 보강 적용. - 2026-03-05: `npm run lint`, `npm run build` 통과. - 2026-03-05: Playwriter 실브라우저 검증 수행(`/trade`), 분봉 메뉴/1시간봉 과거 로드/좌측 스크롤 추가 로드 확인. - 2026-03-05: 1시간봉 초기 과거 로드 상한 추가 상향(페이지 수 + 목표 봉 수 + 12초 예산), 재검증 시 최소 시각 `2026-02-05 09:00:00(KST)`까지 자동 로드 확인. - 2026-03-05: 창 확장 시 좌측 공백 보완 로직 추가(초기 fitContent 보강 + left whitespace 자동 추가 로드), 1920px 기준 재검증 시 최소 시각 `2026-01-30 13:00:00(KST)`까지 자동 로드 확인.