Files
GhiVideo/docs/history/2026-06-25_0950_스테이션바-첫끝역-양끝고정-및-pm2배포.md
b23042andClaude Opus 4.8 78fc090360 초기 커밋: 스테이션(측점) 기반 주행영상 플레이어
- 클라이언트(React/Vite): Video.js 플레이어, 하단 스테이션바, POI/구조물 영상 오버레이, 카메라 파라미터 보정, 미니맵/RoutePanel
- 서버(Express): Range 스트리밍, HLS 변환, 프레임 추출, tus 업로드, 주석 API
- 최근 작업: 스테이션바 종점역 표출/양끝 정렬/미도착(재생불가) 표시, POI 라벨 '구분' 우선·컴팩트 팝업·겹침제외 토글·동일좌표 다중행, 진행방향(상/하) 우선 표출, 커서 배지 크기·픽셀 떨림 개선

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 16:37:57 +09:00

1.8 KiB

스테이션바 첫·마지막 역 양끝 고정 + 누락 원인(빌드) 해결 + pm2 배포

소요 시간: 70분 Context 사용량: input 약 320k / output 약 22k tokens

1. 대전조차장 누락의 진짜 원인 = 빌드 미반영

  • 데이터(v3.0 KMZ)·파싱(parseKmz)·코드 수정 모두 정상이었음. 실데이터 시뮬레이션으로 마커가 px 1777 생성·유지됨을 검증.
  • 화면에 안 뜬 이유: 서버가 6/24 빌드된 client/dist 를 서빙 → 6/25 수정 미반영.
  • 조치: npm run build -w client 재빌드 후 pm2 start ecosystem.config.js (PORT 55000). 정상 표출 확인.

2. 렌더 필터 수정 (앞 단계, 누적 반영)

  • Timeline.tsx: 역사(역, KAKAO_RAIL)는 dedup 제외 → 항상 표출.
  • StationOverlay.tsx: POI 겹침 억제 정렬을 railRank(철도역/역사 우선)→dist 로 변경.

3. 첫·마지막 스테이션 양끝 고정 (이번 요청)

  • StationBar.tsx structureMarkssnapStationEnds 헬퍼 추가.
    • 역사 마커 중 최좌측 → TRACK_START_PX(297), 최우측 → TRACK_END_PX(1806.5) 로 스냅.
    • 역사 2개 미만이면 미적용. 동일 역 복수 통과 시 극단 마커만 이동.
  • 두 return 경로(storeStructures / POI 폴백) 모두 적용.
  • 예: 회덕화물역(353.9→297), 한국철도공사대전조차장역(1777→1806.5).

검증

  • tsc --noEmit 통과, 클라이언트 재빌드 성공, pm2 ghiVideo online, HTTP 200.

운영 메모

  • 실행: nvm Node 20 활성화 → npm run build -w clientpm2 restart ghiVideo.
  • 서버는 client/dist 정적 서빙 → 소스 수정 후 반드시 클라이언트 재빌드해야 화면 반영됨.