Files
Aislo/docs/raw/plans/2026-09-03_plan_completed_items_2.md
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

27 KiB
Raw Permalink Blame History

2026-09-03 완료 항목 추가 이관

사용자와 개발 담당 AI가 검증을 완료한 항목이며, 사용자 지시에 따라 위키 관리자의 2차 교차검증과 별도 검증보고서는 생략했다. docs/raw/PLAN.md에 추가된 완료 체크 항목과 관련 설명을 이관했다.

B03 파일 입력 — 양식 정리 (2026-09-03)

사용자 지적 — 「파일 입력 선택 항목이 너무 큼. 안내가 필요하면 B04 좌측 패널 공용양식으로 빼는 게 맞음. 그러면 버튼도 작아짐. 지금은 대중없이 막 넣은 느낌」.

  • 안내를 좌측 패널로B03_FileInput_UI_Guide.ts 신설, 공용 오버레이 (createWorkflowOverlays.optionsContent)에 실음. 내용 3묶음: 필요한 파일 / 고르는 방법 / 알아 둘 것 (로케일 B03_Guide_* 12건 신설).
  • 패널 양식 = B04~B07 공용양식 (2026-09-03 사용자 재지시 — 처음엔 B03 전용 스타일로 만들었음). 루트 b03-file__form, 문단 ui-collapsible ui-sidebar-section + 제목 ui-collapsible__title(공용 캐럿·접힘), 값은 b04-surface__form·__group·__group-legend 와 동일(gap/padding 16, --color-surface-raised, legend --text-caption). 실측 — 외곽선·패딩 16px·배경 토큰 일치, 제목 클릭 시 is-collapsed 토글 확인.
  • 본문 축소 — 선택 영역 160px 블록 → 한 줄 바(47px), 긴 문구는 좌측 패널로 이관하고 B03_File_Select_Hint 는 한 줄로 교체. 카드는 min-height: 220px 폐지 + [선택]을 제목 줄 오른쪽 끝 작은 버튼으로 올림(템플릿에서 헤더로 이동), 빈 칸은 제목 줄만 남김. 진행바·속도·예상완료는 올라가는 동안만 표시.
  • 여백 정리 — 컨테이너 패딩 32 → 20, 그룹 제목 24px → 16px, 카드 격자 간격 24 → 12, 컨테이너 간격 24 → 16.
  • 좌측 패널이 열리면 본문을 밀어내는 규칙 추가 — B03 은 공용 워크플로 레이아웃이 아니라 일반 레이아웃이라 .ui-workflow-layout__body 의 padding 규칙이 없었음(패널이 카드를 덮음).
  • 후속 3건 (2026-09-03 사용자 지시)
    • 재접속 현황 배너(「…모두 완료된 프로젝트입니다」)를 좌측 패널 「고르는 방법」 안으로 이동.
    • [입력 파일 선택]·[임시 보관함에서 불러오기]·[파일 업로드] 를 한 줄(b03-file__pick-row).
    • 업로드 완료 항목 목록 삭제 — 결과는 카드가 완료 상태로 보여 줌. renderUploadResults· .b03-file__results 도 함께 제거(사용처 없음).
  • 후속 2건 (2026-09-03 사용자 지시)
    • 임시 보관함 선택 요약(「선택된 보관 자료 없음」·묶음 이름) 삭제, 입력 컨테이너의 「업로드할 파일을 선택하세요」 경고 삭제(다른 사유·업로드 클릭 검사는 유지).
    • LAS 없이 설계 토글을 파일 입력 컨테이너로 이동 + 공용 체크 서식 적용. 켜면 지형 자료 전체(포인트클라우드·좌표계·래스터)를 받지 않음 — 확장자가 아니라 배정된 카드로 걸러 노선 .prj 가 같이 떨어지지 않게 함. 로컬 선택분은 내리고, 이미 올라간 자료(재입력)는 그대로 두고 조작만 잠금. 필수 판정도 지형 슬롯 전체가 빠짐.
  • 좌측 패널 글자 크기까지 공용 양식으로 (2026-09-03 사용자 지시) — 본문 목록 --text-body-sm·--color-text-body(B04 b04-surface__check 와 같음), 제목 --text-caption. 실측 14px / 12px.
  • 후속 4건 (2026-09-03 사용자 지시)
    • 선택 영역의 설명 문구를 좌측 패널로 이관 — 본문에는 「입력 파일 선택」만 남김.
    • [임시 보관함에서 불러오기] → [임시 보관함] 로 이름 줄임.
    • 임시 보관함 버튼 바깥의 점선 테두리 삭제(버튼 테두리와 이중이었음).
    • 계획노선 도형 카드가 .shp 받음 — CSV 는 내부 계산이 만드는 파일이라 사용자가 넣는 자료가 아님. 컨테이너의 CSV 안내 문구도 삭제. 이미 .csv 로 올라간 옛 프로젝트는 그대로 보이게 서버 파일 매핑에만 .csv → 계획노선 도형 예외를 둠 (실측: 「완료 · 용화_계획노선.csv」 유지, 카드 확장자 줄은 .shp).
  • 결함 2건 자체 발견·수정 — ① --spacing-20 은 테마에 없는 토큰이라 컨테이너 패딩이 통째로 무효였음(사용자 보고, 16px 로 교체) ② 카드 격자를 2열 고정으로 두니 안내 패널을 연 상태에서 카드 폭 210px 로 눌려 제목이 글자 단위로 접힘 → auto-fill minmax(260px, 1fr) + 제목 말줄임으로 교체.
  • 자체검증 — 공용 브라우저 실측. 카드 높이 232 → 66px(빈 칸) / 117px(파일 있음), 선택 영역 160 → 47px, 문서 높이 1408px(뷰포트 1304)로 한 화면 남짓. 좌측 패널 폭 320px 과 본문 padding-left: 320px 일치 — 겹침 없음. npm run typecheck·prettier 통과.

화면 검증 (2026-09-03 사용자 지시)

오늘 작업분 화면 검증을 페이지별로 나눠 수행함.

B03 · B04 · B06 표기

  • B03 파일 입력 흐름 — 비파괴 실측 완료.
    • 카드 배정 — shapefile 한 벌을 선택기로 넣으니 .shx·.dbf·.cpg·.prj 가 각 카드에 「대기중 · verify_route.*」 로 붙음. 서버 파일이 있는 슬롯(계획노선 도형)은 교체 확인 모달이 떠 실데이터 교체를 막음 — [취소] 로 물러남.
    • CSV 거부 확인verify_route.csv 를 넣으니 「허용되지 않은 파일 형식입니다」.
    • 임시 보관함 — 버튼이 모달을 열고 「보관 자료 선택」·빈 목록 안내·[취소]/[확인] 정상, 닫힘도 확인.
    • 검증 뒤 고른 파일을 ✕ 로 모두 내려 원래 상태(미등록/완료·LAS 토글 꺼짐)로 복원.
  • B04 지표면 3D 나침반 링 — 사용자 확인 완료(2026-09-03).
  • B06 성토사면 경사길이·배수관 표기 — 앞 절의 수치 대조로 갈음.

B05 — 3건 실측 완료(2026-09-03 저녁, 신규 프로젝트 8cd2e635 산출분)

  • 종단 계획선 호 복원 — 살아 있는 종단곡선 63개(억제 0), 중앙종거 5.58~1890.66mm 로 전부 실제 호. 측점 계획고 − 지반고 최대 0.335mm(평균 0.047mm, 1mm 초과 0건). 직선 구간 기울기 꺾임 0건(최대 변화 0.0058%) = 접선 성립. L 은 15m 고정이되 변화점 간격이 좁은 4곳에서 0.85m 까지 짧아짐(기하상 당연).
  • 횡단 설계 프론트 미러링 — 480.0m 계획고 +0.1m 조작 후 유토곡선 반영까지 94ms (디바운스 60ms 포함). 절토 4,774.1 → 4,765.9㎥ · 성토 16,690.7 → 16,737.1㎥. +0.3m 상태(4,750.9 / 16,831.3)로 B06 첫 진입 시 토취 11,902.0 · 최종 11,902.0 까지 완전 일치.
  • B05 3D 나침반 — 시점별 링 납작함이 sin(앙각)과 일치: ISO 0.577(35.3°, 표고침 25) · 상단 0.999(88°, 침 1.1 = 점으로 눌림) · 정면 0.243(14°, 침 29.7 최장, N 이 화면 위) · 측면 0.243(N 우측). 프리셋 재클릭 시 값 동일 = 재현성 확인.

주의 — 검증 중 [되돌리기]가 사용자 편집(40m 측점 오프셋)까지 되돌아간 사례가 있었음. 원값으로 복구했고 화면도 최초 상태로 되돌림. 되돌리기 스택에 사용자 편집이 섞이므로, 검증 전에는 세션 초안(b05-profile-alignment-draft:<routeId>)을 떠 두고 그것으로 복구할 것.

B06 횡단 카드 — 성토사면 본래 경사길이 표기 (2026-09-03)

사용자 지시 — 카드 제목행(사면 미교차 경고가 붙는 행) 우측 끝에 성토사면 길이를 우측 맞춤으로 표기. 구조물(기슭막이·집수정)이 사면을 끊기 전 본래 길이를 쓰고, 양측 성토면 좌·우 두 값을 다 적음.

전제 (구현 판단, 사용자 확인 필요 시 조정)

  • 길이 = 경사길이(slant) — 프로젝트 관행(FILL_SLOPE_MAX_LENGTH_M 5m 규정, 성토_비탈면.md §2)과 같은 기준.

  • 시작점 = 노견 끝(측구가 그 측이면 측구 바깥), 끝점 = 설계선이 원지반과 처음 만나는 점.

  • 정본은 백엔드 design_line — 구조물은 프론트 오버레이라 이 선을 바꾸지 않음. 즉 design_line 기준 길이가 곧 "본래 길이".

  • 사면 미교차 측점은 하한값()으로 냄 — 계산 반폭까지 실제로 잰 길이. toeFitHalfWidth 의 추세 외삽은 쓰지 않음(2026-09-03 실측: 740m 측점 좌측이 외삽으로 101.53m 가 나왔으나 지반이 사면과 거의 나란해 값이 무의미했음).

  • B06_Section_UI_Cross_Fit.tsfillSlopeLengths(section) 추가 — 기존 protectedSpan·meetOffset 재사용, 성토측만 run × √(1+1/n²).

  • B06_Section_UI_Cross_Card_Chrome.ts — 제목행 meta 끝에 값 span 추가.

  • 로케일 B06_Cross_FillSlope(+Tip), 스타일 .b06-cross-card__fillslope 추가.

  • 자체검증 — 공용 브라우저(「초기화검증-용화」 route 130, 측점 65개) 실측.

    • 표기 확인 — 성토측이 있는 52개 카드에 값이 뜸(양측 절토 13개는 미표기). 양측 성토는 성토사면 좌 23.04m · 우 3.64m, 편측은 성토사면 10.28m.
    • 자리 확인 — ⚠ 경고를 DOM 주입해 대조: 경고와 값의 부모가 같고(meta) 화면 top 이 273px 로 일치 = 같은 행. 값 우변 1340px, 행 우변 1356px(패딩 16px) = 행 우측 끝. 주입은 리로드로 되돌림.
    • 구조물 무관 확인 — 85.6m(파형강관 D1200 + 집수정 I형) 카드가 구조물이 끊기 전 표준 횡단 사면 5.34m 를 그대로 냄.
    • 수치 대조 — tmp/tests/helper_b06_fill_slope_length.py 로 API 원본에서 독립 재계산: 20.0m 23.04 / 3.64 일치, 740.0m ≥23.43 / 4.30 일치, 40.0m·60.0m·80.0m·85.6m 은 0.06~0.13m 차 — 화면이 교차 판정에 쓰는 2cm 허용오차 (MEET_TOLERANCE_M, 기존 사면 끝 판정과 같은 기준) 때문. 0.0m(BP)만 0.69m 차이나 성토 두께 2cm 미만이 0.5m 이어지는 접선형 자리라 실무 의미 없음.
    • 미교차 17개 측점이 로 표기됨. 저장분 설계에는 slope_unclosed 필드가 없어 ⚠ 경고는 아직 안 뜸(재계산해야 붙는 값 — 별건).
    • npm run typecheck 통과, prettier 서식 확인.

B06 횡단 카드 — 배수관 표기 (2026-09-03)

  • 카드 제목행 구조물 pill 이 파형강관 D1200 대신 배수관 만 적음 (2026-08-17 확정한 PIPE_DISPLAY_NAME 규칙과 통일). 관종·관경은 툴팁에 남김. 판정은 PIPE_TYPES 목록으로 — 저장 라벨(resolve_extra_stations)은 그대로 두어야 함 (재진입 이관이 라벨 문자열로 종류를 되짚음).
  • 자체검증 — 공용 브라우저 리로드 후 구조물 pill 집계 {배수관: 9, 세월교: 2}, 툴팁 구조물: 파형강관 D1200 유지. 세월교 등 다른 이름 불변. npm run typecheck 통과.
  • 종단면도 하단 구조물 라벨도 같은 표기 (2026-09-03 사용자 지시). 판정을 structureDisplayName()(_UI_Section_Common) 한 곳으로 모으고 횡단 카드·종단면도가 함께 씀.
  • 자체검증 — 리로드 후 .b06-chart__structure-label 11개가 {배수관, 세월교}, 횡단 pill 도 같은 집합. typecheck·prettier 통과.

횡단 설계 계산을 프론트로 미러링 (2026-09-03 사용자 지시)

원칙 — 사용자 조작 중의 계산은 브라우저 안에서 끝나야 함. 서버는 [저장]·[확정] 때만 부름. B05·B06 은 자리가 없어 나뉜 한 페이지이므로 세션 캐시를 공유하고 즉시 갱신.

어긋난 지점 — 계획선을 만질 때마다 횡단 단면 계산 전체가 서버로 감: B05_Profile_UI_Profile_Preview.tsB06_Section_Cross_Refresh.refreshCrossDesignsPOST …/cross-design/previewcompute_cross_design() × 전 측점. 절·성토 면적 계산이 파이썬에만 있어(B06_Section_Engine_Design.py 659줄 + B06_Section_Engine_Areas.py 82줄) 구조적으로 왕복이 필요했음.

결정 (사용자 확정) — 같은 계산을 TS 로 미러링해 둘을 병존시킴. 계획선 선형이 이미 파이썬·TS 1:1 미러인 것과 같은 방식. 대신 갈라짐을 막는 장치를 반드시 둠.

  • common_util/common_util_cross_design_areas.ts_trapezoid_areas·_split_cut_areas 미러.
  • common_util/common_util_cross_design.ts_SectionGeometry·compute_cross_design 미러. config 상수를 TS 에 복제하지 않음 — 표준단면값은 sections/context 응답(서버가 config 에서 내려 준 값)을 그대로 입력으로 받음.
  • 표준단면 기본값·암 경계 기본 오프셋을 세션에 기억 (B06_Section_UI_Standard_Panel) — 패널을 안 연 B05 도 같은 값으로 계산해야 두 화면이 같은 결과를 냄.
  • refreshCrossDesigns로컬 계산으로 교체 — 호출부(B05·B06) 시그니처는 그대로. 계획고는 profile_alignment.base_pvi + edits 를 TS buildAlignment 로 풀어서 씀. 선형 저장분이 없는 옛 데이터만 서버 프리뷰로 폴백.
  • 갈라짐 방지 경고 — 파이썬 2파일·TS 2파일·프리뷰 라우터 머리에 「짝 파일을 함께 고칠 것」 경고 블록. 한쪽만 고치면 두 화면 값이 갈림.
  • 회귀 테스트tmp/tests/test_b06_cross_design_mirror.py 10건 통과. tsc 로 미러 2파일만 컴파일해 node 로 돌리고 파이썬 결과와 비교 — 토사 편절편성·마루·골, 리핑암 2단계 절토, L형 측구, 발파암 2단계 해제, 포장+측구 해제, 세월교 노면 하강, 급사면 미닫힘, 측구 우측 지정. 스칼라 26필드·측구 제원·노면 끝점·설계선 전 점 일치.
  • 곁다리 성능 — hasStaleDesigns(첫 건에서 중단)로 바꾸고 유효 샘플을 배열당 한 번만 걸러 이진탐색. 프레임당 2.33ms → 0.07ms(실측 33배). 목록이 필요한 곳이 없어져 staleDesignChainages 는 삭제.

B04 지표면 3D — 방위 표시를 3축 트라이어드로 (2026-09-03)

사용자 지적 — 「3차원 표현인데 평면 좌표계가 부적합」. 실측으로 확인됨: 옛 콤파스가 방위각(atan2(ox, oz))만 써서 경사에 따른 남북 압축이 빠졌고, 화면 실제 북쪽과 사시도 프리셋에서 20.8° 어긋남(41.6° vs 62.4°, 앙각 27.7° → 남북 0.465배).

  • 방식 = 축 트라이어드(2026-09-03 사용자 선택). 범위 = B04 만, 이 창 담당.

  • B04_PreProcess_UI_Compass.ts 를 트라이어드로 교체 — 세계 축 N(−z)·E(+x)·Z(+y)를 카메라 기저(r, u)에 투영해 선·글자를 그림. 뒤로 누운 축은 흐리게, 정면으로 오는 축은 짧아진 만큼 흐리게. update(ox, oy, oz) 로 높이 성분을 받음.

  • CSS 를 축 선·글자 클래스로 교체(옛 바늘 polygon 클래스 삭제), 호출부 인자 3개로 변경.

  • 자체검증(일부) — 기본 시점에서 DOM 좌표가 해석값과 정확히 일치: N (28.0, 11.0) · E (45.0, 28.0) · Z (28.0, 27.4) = 상단 프리셋(0, 1, tan2°) 투영 계산값. npm run typecheck 통과.

  • 표기 확정 = 경사 나침반 링 (2026-09-03 사용자 선택, 시안 3종 데모 비교 후). TerriaJS·cesium-navigation 계열. 링·눈금·도북 화살을 지면 평면 도형으로 두고 투영해 링이 눌린 정도가 곧 시점 기울기가 됨. 15° 눈금(90°마다 긴 눈금), N·E·S·W 라벨(뒤로 넘어가면 흐림), 표고축 침(내려다볼수록 짧아짐, 점이 되면 Z 라벨 숨김). 위젯 56 → 84px (라벨이 읽혀야 함). 축 색은 안 씀 — 도북만 강조색.

  • 자체검증 — 리로드 후 위젯 84×84 렌더 확인, 링 경로·도북 화살 좌표가 기본 시점 (거의 정수직) 기준값과 일치(M0.00 33.98…, 화살 M0.00 33.30 L4.28 17.14 L4.28 17.14Z). typecheck·prettier 통과.

  • 화면 검증 — 사용자가 직접 진행 (2026-09-03 사용자 지시). 자동 조작으로는 지표면 뷰어 캔버스 좌드래그가 카메라를 안 돌려(포인터 이벤트는 캔버스에 도달) 회전 중 거동을 못 봤음 — 사람이 돌려 가며 링이 지면과 같이 눕는지·N 이 화면 북쪽을 가리키는지 확인할 것.

  • 시안 데모(3종 비교, 아티팩트): https://claude.ai/code/artifact/cbe3fdec-4374-470e-8e37-03c374a29226

  • 자체검증 (2026-09-03)tsc --noEmit 통과, tmp/tests 전체 183건 통과 (미러 10건 신설 포함). 실측: route 127(측점 128) 전 측점 로컬 재계산 7.5ms (tmp/verify/bench_local_cross.mjs) — 예전에는 같은 일을 서버 왕복으로 했음. 디바운스는 250 → 60ms 로 줄임(왕복이 사라져 손 떼는 즉시 반영).

  • 화면 검증 — 사용자 몫. B05에서 계획고를 끌었을 때 유토곡선·횡단 면적이 즉시 따라오는지, B06으로 넘어가도 같은 값인지 확인 필요.

B05 종단 계획선 — 전체 측점 종단곡선 복원 (2026-09-03)

증상 — B05 종단 그래프의 계획선(점선)이 직선 폴리라인만으로 그려짐. 어제 저녁 3651ad98 feat(B05): 종단 계획선 전체 측점 폴리라인 전환 에서 build_alignment(only_explicit_curves=True) 로 자동 종단곡선을 전부 끈 것이 원인.

요구 기하 (2026-09-03 사용자 확정) — 파일 입력 직후 초기 계산값이자 [초기화] 결과값.

  • 계획선은 지금처럼 모든 측점을 변화점으로 삼아 이어짐.

  • 직선과 직선 사이마다 R(종단곡선) 이 존재함.

  • 호는 변화점 대칭 배치 — 호의 중심이 측점 세로선 위에 놓임.

  • 호는 좌우 직선과 접선(tangent) 을 이룸.

  • 호와 측점 세로선의 교점이 원지반고 위에 있음 (계획고 = 지반고). 대칭 종단곡선은 꼭짓점을 지나지 않으므로 중앙종거만큼 꼭짓점을 밀어내는 반복 보정이 필요함 — 배관 정착 경로(design_pipe_anchored_profile)가 쓰는 방식과 같음.

  • design_ground_following_profile() 에 꼭짓점 반복 보정 추가 + only_explicit_curves 해제 (B05_Profile_Engine_Grade_Profile.py). 지반고 대비 오차가 1e-4m 아래로 떨어질 때까지 최대 12회 되풀이하며, R 은 지정하지 않고 기본 L(15m)을 씀.

  • rebuild_alignment_profile()GROUND_POLYLINE_BASIS 예외 제거 — 편집 재구성에서도 호가 유지됨. 저장된 base_pvi 가 보정된 꼭짓점이라 편집 델타를 지우면 초기선으로 복귀함.

  • 프론트 코드 변경 없음 확인 — B05_Profile_UI_Profile_Alignment.ts:170,326 이 payload only_explicit_curves 를 그대로 따르고, 백엔드가 이제 false 로 내보냄.

  • 호 크기 기준 = 현행 유지 (2026-09-03 사용자 결정). L 을 15m 로 고정하고 R 은 결과값. 법정 최소반경(100m) 미만 호가 생겨도 경고만 남기고 사용자 조정에 맡김 — 기울기 상한을 경고만 하는 현행 정책과 같은 태도.

  • 자체검증(단위)tmp/tests/test_b05_ground_profile_curves.py 4건 통과. ① 내부 측점 전부에 호, BVC·EVC 가 측점에서 등거리(대칭) ② 측점 계획고 = 지반고 (최대 편차 < 1e-3m) ③ BVC·EVC 에서 기울기 연속 = 좌우 직선과 접선 ④ 꼭짓점이 지반고에서 중앙종거만큼 밀려남. 전체 스위트 173건 통과.

  • 자체검증(실데이터 오프라인) — route 127(2.14km) 종단을 새 엔진에 넣음 (tmp/verify/check_ground_curves.py). 측점 128 · 변화점 128 · 호 126개(저장분 0개), 측점 계획고−지반고 최대 0.063mm. L 0.9715.00m(불규칙 측점 41곳에서 인접 직선 한도로 축소, 경고 58건), R 414,696m, 중앙종거 0.4~878.8mm, 대수차 A 최대 46.9%.

  • 화면 검증 — 확이완료 (2026-09-03 사용자 지시). 저장분은 옛 코드 산출물이라 리로드로는 안 바뀜 — 신규 프로젝트 등록 또는 [경로 탐색 실행] 으로 다시 산출해야 보임.

2026-09-03 화면 개선

사용자 지시 6건 중 화면 몫.

  • B07 토적도에 유토곡선 세부 항목 표기 - 확인결과 전체 성토구간이라 발생된 문제임

    • 토적도는 B07 담당(B07_DesignDetail_Engine_Cad_MassHaul.py) — 위키의 "B08 토적도"는 낡은 이름. 그 엔진은 이미 평형선·띠·balloon 을 작도하며, 값은 B06 확정 시 저장한 mass_haul payload 를 그대로 옮긴다(계산 없음). 즉 화면에 뜬 것이 곧 도면.
    • 표기 관행(평형선 개수·balloon 기재 항목)은 법령·교본에 근거가 없고 실무 유토곡선.dwg 는 압축 DWG라 문자열 추출 불가. 미결 20 — 실무 도면 육안 확인 후 착수.

초기 계산 실패 처리 후속-완료처리(노선이 다른 공사지 범위까지 포함. 현재는 서피스를 보고 절단하여 사용하고 사용자에게 종점 정보를 받는다.)

완료 구현과 사용자 검증 기록은 docs/raw/plans/2026-09-02_plan_user_verified_completed_items.md로 이관했다.

  • 325f57d9의 지표면 범위와 계획노선 좌표 불일치 원인을 별도 조사한다.

종단 계획선 초기 설계 — 방식 확정 (2026-09-02 사용자 확정) 완료처리

확정된 방식 — 초기 계산 파이프는 횡단배수 측점을 변화점으로 잡고, 그 자리 계획고를 원지반고와 일치시킨다. 최소고 강제(enforce_pipe_clearance)는 기본 해제이고, 시·종점 오프셋도 0이라 양끝도 지반고 그대로다. 종단기울기는 초기 참고값이며 사용자가 조정한다 — 법정 상한을 넘겨도 경고만 남기고 진행할 수 있다(2026-09-02 사용자 확정). 계획선이 기울기를 스스로 고르지 않으므로 변화점 사이 기울기는 곧 그 구간 지형의 평균 기울기다.

  • 관 사이 구간의 성토 심도 (2026-09-02 사용자 확정: 「업로드 후 배치되는 배수유역의 결과인 횡단배수 지점이 아니라면 일단 유지, 향후 추가 개선 예정」).
    • 계획선은 관 측점만 정확히 통과하고 그 사이는 직선(+곡선 완화)으로 이으므로, 관과 관 사이의 골은 성토로, 마루는 절토로 메워진다. 관 간격(용화 평균 97 m)이 곧 계획선이 지형을 얼마나 따라가는지를 정한다.
    • 용화 실측 — 계획고 − 지반고 평균 +1.34 m, 폭 6.02 ~ +9.36 m. 측점 1,106개 중 성토 쪽 783 · 절토 쪽 282. 최대 성토 +9.36 m 는 860.0 m 지점으로, 관 799.06888.99 사이다 — 배수유역이 배치한 횡단배수 지점이 아니다. 확정대로 이번 판에서는 유지한다.
    • 최대 절토 6.02 m 는 1,039.0 m 지점(관 979.92 와 종점 사이).
    • 향후 개선 시 검토할 것: ① 관 사이가 길고 골이 깊은 구간에 변화점을 하나 더 두는 규칙 ② 그 자리가 계곡이면 배수 계획 쪽에서 시설을 세워 관 측점으로 승격 ③ 시·종점 오프셋 (suggested_elevation_offset_m 자리가 이미 있으나 지금은 null)으로 균형을 당기는 것.

LAS 없는 설계 — 곡선 경고 판정 후속

완료된 도엽등고선 서피스 항목 1~11은 docs/raw/plans/2026-08-30_plan_las_free_sheet_surface.md로 이동했다.

  • 후속 제안(임계와 별계로 현재를 유지하기로 함. ): 임계 ±5% 안에 드는 유역은 화면에 「임계 근접」을 표시해 사용자가 시설을 고르게 한다. 지금은 1,499mm 와 1,501mm 가 말없이 다른 시설이 된다.
    • 같은 계획노선에서 LAS는 84.3 관D1000 / 149.73 세월교 / 200.92 BOX암거 / 275.71 관D800, 도엽등고선은 84.3 관D1000 / 149.73 세월교 / 200.92 관D800 / 297.71 관D800.
    • 3·4번째 시설의 종류와 위치가 다르다(BOX암거→배수관, 275.71→297.71m). 지형 표고가 달라 유역·계곡 판정이 갈리는 것 자체는 자연스럽지만, 도엽 쪽이 계곡을 얕게 잡아 BOX가 관으로 내려간 것이라면 기준을 맞출지 판단이 필요하다.

B08 토적도·유역도 후속(완료처리)

2026-08-30 확인 — "토적도 접근 안 됨"은 결함이 아니었다. 유토곡선은 프론트가 계산해 B06 [저장]·[확정] 본문(mass_haul)으로 보낼 때만 종단 정본에 남는다. 자동설계 체인은 본문 없이 확정하므로 체인 직후에는 없고, 정상 경로에서는 B06 확정을 거쳐야 B07로 들어오므로 문제가 없다(워크플로 바의 상세설계도 그전엔 비활성). 확정을 거친 c1bb453f는 200(엔티티 157), URL로 건너뛴 신규 프로젝트만 404였다.

구현·검증 완료 범위는 docs/raw/plans/2026-08-30_plan_B08_masshaul_watershed_drawings.md, 위키는 docs/wiki/pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md로 이동했다.

  • 운반 블록이 있는 실노선에서 띠 balloon·경계현을 확인한다.

좌표계 라벨 오용 수정 — 상세 배수유역 표기 누락 (2026-09-01)(검증 완료)

증상: B04 상세 배수유역이 지도에 하나도 안 그려진다.

원인: 노선 CSV crs_epsg 열(라벨)을 좌표계로 써서 사업지 좌표계(.prj) 격자 산출물을 잘못 역투영. 용화 실측 — 라벨 5179 / 실제 5176, 유역이 lon 119.79 · lat 23.08(대만 남쪽 바다)로 나가 화면 밖. load_design_route()crs_input만 갱신하고 epsg 라벨은 CSV 값 그대로 둔다(2026-08-31 확정) — 라벨을 좌표계로 쓰던 자리가 4곳 남아 있었다.

  • 적용 조건(사용자 조치): 기존 프로젝트는 산출물이 옛 원점·옛 좌표계로 남아 있다. ① 도엽 서피스는 다시 만들어야 원점이 맞고 ② 세부유역은 B04에서 확정을 다시 저장해야 좌표계가 기록된다. 그 전까지는 옛 파일 그대로 동작한다(되읽기 폴백).

프로젝트 작업 좌표계 일원화 (2026-08-31 신규)(검증 완료)

입력·shapefile 수용은 docs/raw/plans/2026-08-31_plan_planned_route_shapefile_prj.md 로 이관했다. 남은 것은 좌표계 기본값이 코드 곳곳에 흩어진 문제다.

  • 라이다는 좌표 변환을 한 번도 거치지 않고 원좌표로 남는데, 도엽은 노선 좌표계로 재투영된다. 둘의 EPSG를 대조하는 코드가 없다 — 다르면 조용히 어긋난다.
  • 방향: 작업 좌표계 = 라이다 PRJ 우선, 없으면 노선 좌표계. 불일치는 B03 입력에서 차단.