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 은 아래줄로 이동.
23 lines
945 B
TypeScript
23 lines
945 B
TypeScript
"use client";
|
|
|
|
// 최소 서비스워커 등록.
|
|
// - 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";
|
|
|
|
export function PwaRegister() {
|
|
useEffect(() => {
|
|
if (typeof window === "undefined") return;
|
|
if (!("serviceWorker" in navigator)) return;
|
|
navigator.serviceWorker.register("/sw.js").catch(() => {
|
|
/* noop — 등록 실패 시 PWA 기능만 비활성. */
|
|
});
|
|
}, []);
|
|
return null;
|
|
}
|