Files
Aislo/docs/raw/verification/2026-08-02_verify_B04_B05_drainage_unification.md
T
eomsangdonandClaude Opus 5 eb30b774f8 chore(docs): docs 폴더 git 추적 전환 · PLAN·OWNERS 최상위 이관
- `docs/` 를 .gitignore 에서 빼 git 추적 대상으로 전환 (위키·완료 이력·검증 기록)
- `docs/raw/PLAN.md` · `docs/raw/OWNERS.md` 를 저장소 최상위로 이동 후 .gitignore 에 등록
  — 창끼리 공유하되 저장소에는 안 올리는 장부
- 살아 있는 경로 참조 7개 파일 정정 (아카이브 107건은 그때 사실이라 그대로 둠)
- graphify 날짜별 산출물(`docs/wiki/graphify-out/20*/`) 제외 — `graphify update` 가 다시 만듦

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 18:19:07 +09:00

4.6 KiB

코드 검증 보고서: B04/B05 배수유역 일원화 + 종단 테이블 구조물 연동

  • 검증 일시: 2026-08-02
  • 검증 대상 기능: B04/B05 배수유역 일원화 + 종단 테이블 구조물 연동 (C-1 ~ C-8, 사용자 피드백 보정 완료)
  • 검증자: Verifier / QA Agent
  • 검증 결과: 양호 (PASSED)

1. 개요 및 검증 범위

본 검증은 2026-08-02 자로 프로그래머에 의해 완료된 "B04/B05 배수유역 일원화 + 종단 테이블 구조물 연동" 기능에 대해 소스코드 구현 정합성을 계획서(docs/raw/PLAN.md) 대비 정밀 대조한 결과입니다.


2. 세부 검증 대조 항목

C-1. 저장소·API 일원화 (선행)

  • B05 사본 엔진 및 데이터 정리:
    • B05_wf2_Route_Engine_Drainage_Store.py, B05_wf2_Route_Engine_Drainage_Basin.py, B05_wf2_Route_Router_Drainage.py 파일을 완전 삭제하여 중복된 로직과 저장소 사본을 정리함.
    • config_system.py 내 DRAINAGE_B05_DIRNAME을 삭제하고, B04의 공용 엔드포인트를 사용하도록 설정 완료.
  • 경로 및 모델 확정 시점 저장 분리:
    • B04는 "모델 확정" 시점, B05는 "경로 확정" 시점에 PUT /drainage/pipe-points를 호출하여 커밋되도록 보장함.

C-2 & C-3. B05 프론트 API 전환 및 UI 일원화

  • API 클라이언트 단일화:
    • B05 전용 fetchDrainageBasins 등을 폐기하고, B04 API 클라이언트(fetchDetailPipePoints, computeDetailBasins 등)를 재사용하도록 포팅 완료.
  • B05 UI 및 오버레이 갱신:
    • 유역 클릭 선택을 위한 pointInRing 판정 추가 및 목록 동기화.
    • [집중유역] 토글 버튼을 추가하여 유입 집중점 마커 표시 제어.
    • 종단 Z 출처 및 관 개수 요약 정보 패널 상단 표기 추가.
    • 마커 테두리 색을 기준으로 생성 사유(기본/자동/수동)를 구분하도록 개선.

C-4 ~ C-6. 세부 조작 및 종단 테이블 연동

  • 좌클릭 전용 드래그 제한:
    • B04와 B05의 pointerdown 이벤트에서 event.button === 0일 때만 드래그 조작이 시작되도록 제한하여 우클릭 메뉴와의 충돌 제거.
  • 유역 목록 스크롤 제어:
    • .b05-drainage__basins의 높이를 CSS calc(3 * --row-height + padding) 식으로 변경하여 유역 개수가 많을 때 3행까지만 보이고 스크롤되도록 수정.
  • 구조물 측점 연동 및 그래프 드래그:
    • setPipeStations 및 isPipeStation 판정을 통해 사이드바 구조물 목록과 관 목록 동기화.
    • 그래프 측점선을 드래그(attachStationDrag)하여 배관 위치를 즉각 조작하고 세부유역을 실시간 재산정하도록 연동함.
    • 우클릭 메뉴를 종단 그래프 칸(.b05-profile__chart)에 배치하여 그래프 영역에서 배관의 추가·삭제 및 측점 조작을 일원화함.

C-7 & C-8. 품질 게이트 및 사용자 피드백 완결

  • 700줄 제약 엄수:
    • 로직이 비대해지는 것을 방지하기 위해 _UI_Profile_Structures.ts (113줄), B04_wf1_Surface_UI_MapOverlays.ts (149줄), _UI_Selection.ts (97줄), _UI_Drainage_Render.ts 등을 분리 신설함.
    • 최종 빌드 및 검사(ruff check, tsc --noEmit, vite build) 통과 완료.
  • 사용자 확인 피드백 반영:
    • 휠 줌 반전: 2D 지도, 횡단도, CAD 뷰어 등 전반에 걸쳐 당기면 확대, 밀면 축소가 되도록 방향 반전 완료.
    • 초기화 저장분 삭제: DELETE /drainage/pipe-points API를 신설하여 초기화 클릭 시 저장된 json 및 GeoJSON 산출물까지 물리적으로 삭제한 후 자동배치로 갱신함.
    • 패널 리사이즈 배율 유지: 리사이즈 감지 시 뷰포트 오프셋과 범위를 재보정하여 이탈 방지.
    • 선택 3자 동기화: _UI_Selection.ts 모듈을 신설하여 유역-그래프-구조물폼 3개 영역 간의 선택 및 강조 상호 갱신 구현 (가드 처리를 통해 무한 루프 차단).
    • 라벨 가독성: 배관 누가거리 라벨 뒤에 화이트 헤일로(--map-halo) 효과를 얹어 위성지도 등에서도 가독성 확보.

3. 최종 결론

B04/B05 배수유역 데이터를 B04의 단일 데이터 소스로 일원화하고, 종단 그래프의 구조물 조작 드래그 및 우클릭 메뉴 동기화가 설계 스펙과 사용자 보정 요구사항에 부합하게 구현되었습니다. 코드 복잡성 제약(700줄 룰) 및 품질 기준을 완벽하게 만족하므로, 본 안건을 최종 **승인(PASSED)**합니다.