fix(pwa)+feat(investor): SW dev 등록 + 투자자별 누적 순매수

PwaRegister:
- production 게이트 제거. sw.js 는 fetch handler 가 없어 HMR/네트워크 응답을
  가로채지 않음 → dev 에서 등록해도 안전. Docker 가 next dev 로 도는 실제
  배포에서도 install 자격이 잡힘.
- 등록 실패는 그대로 silently 무시 (secure context 아님 등).

InvestorCumulative:
- chart.trading_value 를 재사용해 외국인/기관/개인 N일 누적 순매수를 미니
  SVG 라인으로 표시. 백엔드 호출 0.
- 윈도우 토글: 20일/60일/120일. 데이터 부족하면 가용분으로 자동 축소.
- 라인 색은 주체별 고정 (외국인=amber/기관=cyan/개인=violet) — 비교 가능.
- 끝값 라벨은 한국 컬러 (양수=rose-300, 음수=sky-300), 억원 단위.
- 단위는 원 → 1e8 환산. 시작 0 기준 누적 + 점선 기준선.
- TradingValuePanel (최근 5일 표) 옆 그리드 자리에 배치, MetricsPanel 은
  아래줄로 이동.
This commit is contained in:
claude-owner
2026-05-28 23:44:24 +09:00
parent 89f3a865af
commit 759ea20daa
3 changed files with 185 additions and 5 deletions

View File

@@ -1,10 +1,12 @@
"use client";
// 최소 서비스워커 등록.
// - production 빌드에서 등록 — dev (next dev / HMR) 환경에선 SW 가 HMR 응답을
// 이상하게 가로채는 케이스가 있어 의도적으로 우회.
// - 등록 실패는 silently 무시 (Safari private mode, http://0.0.0.0 같은 secure context
// 아닌 호스트, 브라우저 정책 거부 등). PWA install 자격만 못 갖출 뿐 앱 기능엔 영향 없음.
// - dev 에서 등록한다: 이 사이트의 sw.js 는 fetch handler 가 없어 HMR/네트워크
// 응답을 가로채지 않음 → HMR/캐시 꼬임 위험 0. 그리고 Docker 가 next dev 로
// 돌고 있어 NODE_ENV 게이트를 두면 실제 배포에서 install 자격 자체가 안 잡힌다.
// - 등록 실패는 silently 무시 (Safari private mode, http://192.168.x.x 같은 secure
// context 아닌 호스트, 브라우저 정책 거부 등). PWA install 자격만 못 갖출 뿐 앱
// 기능엔 영향 없음.
import { useEffect } from "react";
@@ -12,7 +14,6 @@ export function PwaRegister() {
useEffect(() => {
if (typeof window === "undefined") return;
if (!("serviceWorker" in navigator)) return;
if (process.env.NODE_ENV !== "production") return;
navigator.serviceWorker.register("/sw.js").catch(() => {
/* noop — 등록 실패 시 PWA 기능만 비활성. */
});