종목 상세 페이지(/[code]) 본문에서 유일하게 남아 있던 rounded-lg
divergence. 다른 본문 카드(MetricsPanel / IntradayReturns /
PeriodReturns / CompositeScoreCard / PeerComparePanel /
TradingValuePanel / InvestorCumulative / DisclosuresPanel /
NewsList / SymbolSidebar) 가 모두 rounded-md border-zinc-800
bg-zinc-900/40 톤이라 PredictionPanel 만 모서리가 살짝 더 둥글어
시각적으로 튀었음.
홈 페이지 쪽(IndicesPanel / SeedTiles / RecentTiles) 의 rounded-lg
+ bg-zinc-900/30 묶음은 별도 슬라이스 — 홈 페이지는 카드가 더 크고
타일 그리드라 다른 톤 묶음을 의도적으로 유지할 수 있음. 이번 턴은
상세 페이지 본문 톤 완전 통일만 노림.
검증:
- npx tsc --noEmit clean
- npx next lint "✔ No ESLint warnings or errors"
- 예측 오버레이: 라인 시리즈 3개 (median/q10/q90) 를 단일 캔들 시리즈
하나로 합쳤다. 합성 OHLC: open=직전 close, close=point_close,
high=ci_high, low=ci_low. 옅은 색 (up #fda4af / down #93c5fd) 으로
실 캔들과 시각 톤은 같고 명도만 낮춰 "어우러지되 미래"임이 보이게.
- 예측 프리셋 단순화: 단기/중기/장기 + 직접입력 다 떼고 15일/30일/1년
3개로. 백엔드 horizon cap 30 → 252 로 확장 (1년 = 240 거래일).
- PriceHero: 종목명/현재가/등락 큰 글씨 헤더. KR 관례대로 상승=빨강,
하락=파랑.
- PeriodTabs: 1일/1주/1달/3달/1년/5년/최대 7탭. 기존 interval+days
이중 컨트롤 제거. 5년·최대 는 자동으로 주봉/월봉으로 폴백.
- 차트 본체 캔들 색조도 KR 관례 (적/청) 로 통일.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
reviewer 지적사항 반영:
1. KIS 분봉이 한 번에 30개만 와서 10분봉이 최대 3개만 나오던 문제 →
fetch_minute_range() 추가. FID_INPUT_HOUR_1 을 30분씩 후퇴시키며
페이지네이션, 중복 ts 자연 dedupe, max_pages=20 으로 무한루프 방지.
_ensure_intraday_fresh 는 last_ts+1m ~ now 빈 구간만 채우므로 평소엔
1~2 페이지로 끝남.
2. 장외/주말에 매번 KIS 를 때리던 문제 →
- 주말: 'weekend' 반환, KIS 안 부름 (분봉 endpoint 는 당일만 지원)
- 평일 장외 + 오늘 데이터 있음: 'cached_closed' 반환
- 장중 + 10분 이내: 'fresh' 반환
토큰/조회 제한 다시 밟지 않음.
3. 프론트 horizon 입력 60 vs 백엔드 30 불일치 →
PredictionPanel 의 cap 을 30 으로 맞춤. 백엔드 predict.py 의 학습/검증
범위와 일치. placeholder 도 '1~30' 으로 명시.
- backend/app/api/chart.py: interval=10m|1d|1w|1mo. 10m 은 ohlcv_1m 을
time_bucket(10min) 으로 집계, stale(>10분) 이면 KIS 분봉 fetch 후 재조회.
1w/1mo 는 ohlcv_daily 를 date_trunc 로 집계. today 필드 추가.
- backend/app/fetch/kis.py: fetch_minute_price() 추가 (tr_id FHKST03010200).
KIS 응답 KST 시각을 tz-aware datetime 으로 변환, 오름차순 정렬.
- web/lib/api.ts: ChartInterval 타입, getChart(interval), predict(horizons[]).
- web/components/StockChart.tsx: 10m 이면 timeVisible. 일·주·월에서 오늘
화살표 마커 표시. ISO datetime 도 파싱.
- web/components/PredictionPanel.tsx: 단기/중기/장기 프리셋 + 사용자 직접
지정 (예: 1,2,3,7). API 에 horizons 배열 전달.
- web/app/[code]/page.tsx: interval 칩 (10분/일/주/월). 10m 일 때 60초마다
폴링. interval 별 기본 lookback (10m=1, 1d=180, 1w=730, 1mo=1825).