Files
GhiVideo_v4/docs/history/2026-06-26_0913_동일항목-묶음-브래킷.md
T
b23042andClaude Fable 5 d38b842e8d GhiVideo 소스 복제 — v4 작업 시작 기준
기존 GhiVideo 저장소 HEAD의 트래킹 소스 362개 파일을 복제.
(node_modules·storage·빌드 산출물·대용량 미디어는 .gitignore 규칙대로 제외)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 14:32:51 +09:00

2.4 KiB

동일 항목 묶음 브래킷 표시

소요 시간: 약 15분 Context 사용량: input ~55k / output ~6k tokens

결론

스테이션바 타임라인에서 같은 항목(동일 역명)을 드론이 여러 번 통과할 때, 두 번째 참고 이미지처럼 점선 브래킷(각 통과 수직 드롭 + 하단 수평 연결선) 으로 묶고 클러스터 중앙에 라벨 1개 만 표시하도록 변경.

근거 / 변경 내용

  • 파일: client/src/stationbar/components/Timeline/Timeline.tsx
  • 기존: 다중통과 시 labelEntries(마지막 통과 라벨 1개 + 나머지 중앙 라벨 1개) + 통과별 점선 틱(leaderPxs) → 같은 항목인데 라벨이 2개로 쪼개져 표시됨.
  • 변경: labelGroups 로 재구성.
    • 같은 title 통과들을 px 간격(GROUP_GAP_PX = 350)으로 클러스터 분할 — 가까운 통과는 한 묶음, 멀리 떨어진 통과(예: 대전조차장 두 차례 진입)는 별도 묶음 → 각자 브래킷/라벨 1개.
    • 클러스터당: 각 통과 px에 수직 드롭(top 46, h4) + 양끝을 잇는 수평 점선(top 50) + 중앙(centerPx) 라벨 1개.
    • 단일 통과는 브래킷 없이 자기 위치 라벨 1개(기존 동작 유지).
    • 색(passed/neutral) 판정 기준을 통과 px → 클러스터 centerPx 로 변경. 미도착(unreached)은 묶음 내 하나라도 있으면 neutral 유지.

검증

  • tsc --noEmit 통과 (node 20 환경).

후속 수정 (가로 점선 미표시 → 거리 클러스터링 제거)

  • 1차 구현은 GROUP_GAP_PX = 350 으로 동명 통과를 거리별 클러스터로 분할 → 대전조차장역 두 통과가 ~1050px 떨어져 각각 단일 묶음이 되어 브래킷(가로 점선)이 안 나옴.
  • 수정: 거리 클러스터링 제거. 동명(title) 통과는 거리와 무관하게 하나로 묶어 lo~hi 전체에 수평 점선 + 각 통과 드롭 + 중앙 라벨 1개를 그림. (사용자 요청: "가로 점선이 보여야해")

다음 단계 참고

  • 브래킷 수직 위치(드롭 46~50, 수평 50, 라벨행 51)는 트랙 하단(46.5)/labelRow(51) 기준. 라벨 폰트/행간 변경 시 함께 점검.
  • 동명 통과가 매우 멀리 떨어진 경우 중앙 라벨이 빈 트랙 중앙에 놓일 수 있음(가로 점선으로 연결됨). 추후 묶음 분할이 다시 필요하면 거리 임계값 방식을 재도입할 것.