CloudStock/요구사항
> [[CloudStock]] 작업공간 문서. 완료 항목은 제거하고 **남은 작업**만 유지한다.
> 종목 비교차트/개별차트(국장)는 구현 완료 — PR #46 (`claude/vibrant-hopper-bTtgx`).
## FMP → KIS 마이그레이션 계획
미국 종목 EOD 시세를 FMP 무료 Basic 대신 **한국투자증권(KIS) 해외주식 시세**로 조달한다. FMP Basic 은 mid/large-cap 일부가 per-ticker `402` 로 시세를 안 줘 universe 가 20종목으로 축소돼 있다(상세 [[CloudStock/FMP Starter 전환 계획]]). KR 파이프라인용 KIS 토큰/시세 인프라(`worker/batch/kis.ts`)를 재사용해 같은 키로 US 까지 통합한다. 검토 결론·근거(EOD 한정 가능)는 [[CloudStock/KIS 해외주식 시세 확장 검토]] 참조.
작업:
- `worker/batch/kisOverseas.ts`(또는 `kis.ts` 확장)에 `fetchUSQuotesKIS(env, token, [{ticker, excd}])` 추가 — 해외주식 현재가상세 `GET /uapi/overseas-price/v1/quotations/price-detail`(TR `HHDFS76200200`) 순차 호출, FMP 와 동일한 `Quote`(`price`/`changePct`/`change`/`volume`/`marketCap`) 계약 반환. 필드 매핑: `last`→price, `rate`→changePct, `diff`(+`sign`)→change, `tvol`→volume, `mcap`→marketCap.
- universe 시드에 거래소 코드 `exchange`(`NAS`/`NYS`/`AMS`) 컬럼 추가(`migrations/000X_us_exchange.sql`) — KIS 는 종목별 `EXCD` 필수. 해외종목 마스터로 일괄 확인. 종목명은 기존 `tickers.name_en` 시드 사용(KIS 응답에 회사명 없음).
- `worker/batch/stockRadar.ts` 의 `fmp` step 을 KIS 호출로 교체(부분 실패 placeholder 정책 유지). `FMP_API_KEY` 의존 제거.
- `mcap` 단위 실측(화면 표기용) + 실 시크릿 end-to-end 1회 검증.
- [[CloudStock/API 키 발급 목록]] FMP 항목 → "KIS 로 대체" 갱신, 비용표 FMP 라인 제거.
> EOD 배치(UTC 22:00, 미 장마감 후)라 KIS 해외시세 ~15분 지연이 무의미하다.
## 남은 작업 — 미장(US) 비교차트
종목 비교차트/개별차트의 UI·렌더(`lightweight-charts`, `src/scripts/krCharts.ts`)와 그룹 선정 로직(`worker/batch/krCharts.ts`)은 국장 기준으로 구현 완료(PR #46). 원 요구사항의 "국장 미장 **모두**" 중 **미장분**이 남았다.
위 FMP→KIS 마이그레이션으로 US 시세를 KIS 로 통합하면 **해외주식 일봉으로 3개월 시계열**을 동일하게 확보할 수 있으므로, KR 과 같은 비교차트 프레임(percent 정규화 오버레이 + 개별차트)을 US universe 에 적용해 추가한다. US 그룹 기준은 구현 시 확정(예: 기존 스냅샷의 `capTop10`/`topGainers`/`topLosers` 재사용 또는 국장 기준 미러링).