# 2026-07-13 두 번째 영상 POI 깜빡임 — 구조적 원인 3건 제거 **소요 시간**: 15분 **Context 사용량**: input 1500k / output 6k tokens ## 문제 (제보) 두 번째 영상(세그먼트 2) 재생 시 POI 라벨 깜빡임. 부하/불필요 동작 점검 요청. ## 원인 3건 + 수정 — StationOverlay.tsx ### 1. 세그먼트 전환 시 이전 세그먼트 캐시 혼재 (핵심) - 라벨 사전계산이 "옛 맵 복사 후 덮어쓰기" 방식 — 세그먼트 전환 시 **이전 세그먼트의 캐시** (같은 프레임 번호, 다른 위치)가 남은 채 청크가 도착할 때까지 신·구 항목이 섞여 라벨 집합이 프레임마다 뒤바뀜(깜빡임) - 수정: frames 참조가 바뀌면(전환) 복사 없이 **빈 맵으로 시작** + labelMapRef 즉시 교체. 같은 데이터의 재계산(슬라이더 변경)만 기존처럼 복사 ### 2. 캐시 조회의 정확일치/스테일 폴백 교대 - 조회가 `floor(estFrame) 정확일치 ?? currentFrameNumRef(4Hz 갱신 스테일 키)` — 60fps 중 ~1/6 프레임은 정확일치, 나머지는 최대 250ms 뒤처진 폴백 키 → **서로 다른 캐시 항목을 교대로 그려** 이동 중 경계 POI 가 깜빡임 - 수정: 캐시 키 배열(labelKeysRef, 오름차순)을 두고 **최근접 키 이진탐색**으로 조회 고정 (채워지는 중엔 인접 ±3 키 폴백) ### 3. 전환 시 사전계산 이중 실행 (불필요 부하) - storeFrames 가 즉시 effect·디바운스 effect 양쪽 deps 에 있어 전환마다 풀 재계산 2회 - 수정: 디바운스 effect 에서 storeFrames 제거(즉시 effect 전담) ### 보조 - 프레임 ingest 시 currentFrameIdx/NumRef 초기화 — 전환 직후 사전계산 시작 구간이 이전 세그먼트 끝 인덱스(스테일)로 잡히는 것 방지 ## 검증 - tsc+vite 빌드 통과, 새 번들(index-1zg4kXAW.js) 서빙