Commit Graph
23 Commits
Author SHA1 Message Date
eomsangdonandClaude Opus 5 f41b223079 fix(B05): 곡선 셀 회전 표기·손잡이 클릭 가로채기·배수유역 손잡이 z(31~33)
- 31: 곡선 L·R 셀이 이웃 곡선 셀과 겹치면 자리 이동 대신 측점선 위 세로쓰기
  (writing-mode vertical-rl) + 행 높이 맞춤 글자 축소 — 다른 열 값 오해 방지
- 32: 곡선 L·R 수정 불가 원인 = 접힌 유토곡선 손잡이가 테이블 곡선 행 위에서 클릭
  가로챔. 테이블 아래 26px 손잡이 전용 띠(MASSHAUL_HANDLE_GUTTER_PX) 확보.
  검증: 배관 곡선 R 8.0→55.0 편집 정상 반영
- 33: 배수유역 side 손잡이 z 2→6 — 유토곡선 오버레이(z5) 위로, hit-test 통과

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 20:02:37 +09:00
eomsangdonandClaude Opus 5 6bcd6d1209 feat(B05/B06): 하단 간격·접힘 거터·B06 sticky Y축·배관 곡선 상시 표기(27~30)
- 27: 종단 X라벨↔버튼 간격 70%로(bottomInset 19→15)
- 28: 사이드 패널 접힘 시 본문 24px 거터 — 손잡이가 Y축 라벨을 덮지 않음(B04~B07 공용)
- 29: B06 종단·유토곡선 가로 스크롤 고정 Y축 — buildStickyYAxis 재사용, yaxis CSS
  정의처를 MassHaul css로 이동(B05·B06 공용). 앵커를 첫 자식으로 넣고 유토축 inner를
  종단 높이만큼 내려 자기 구간만 덮음. 스크롤 600px 블리드 테스트 통과
- 30: 배관 측점 곡선 L·R 항상 표기(R 필수), 이웃 곡선 셀 근접 시 배관 셀만 우측 비킴,
  선택 오버레이는 한 열 원위치 유지

Playwright: sticky 앵커 2개(x 고정), 거터 24px, gap 7px, 곡선 셀 8, 오류 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 19:53:42 +09:00
eomsangdonandClaude Opus 5 6080d122bb feat(B05/B06): 계획서 1·2·4·5·6·8·11 구현 + 유토곡선 오버레이 서브패널 전환(7)
- 4: volumeRange 기본 ±200㎥ 고정, 초과 시에만 확장 (B05·B06 공용)
- 11: 진행단계 오버레이 최상단 대시보드(🏠) 버튼 — 항상 활성, B01 이동
- 6: 편집 버튼 방향색 — 올림(▲⇧) --color-danger, 내림(▼⇩) 파랑 #5b8def, hover 배경 포함
- 2: 구조물 목록 5개 높이 상한 + 내부 스크롤, 선택 항목 scrollIntoView
- 5: 종단 렌더러 bottomInsetPx 옵션 신설 — B05만 X축·측점 라벨 17px 상향,
  ▼ 버튼과 오버랩 해소 (B06 무변화)
- 1: 구조물 측점 열 기본값 미표기 — 측점 값 7행·곡선 2행 빈 셀, 선택 오버레이가 값 표시
- 8: B06 진입 stale 재계산을 측점별 순차 루프에서 일괄 프리뷰 1회로 교체
  · preview API에 full_designs·rock_boundary_offsets 추가
  · B05 세션 초안(readAlignmentDraft) 우선 사용해 두 화면 계획선 일치
- 7: 유토곡선을 1:1 분할에서 패널 바닥 오버레이 서브패널로 전환
  · 종단도+테이블 배치 불변, 오버레이가 위를 덮음
  · 높이는 공용 createPanelResizer(위 경계, 세션 보존), splitBar·MASS_SPLIT 제거
  · 자체 가로 스크롤러 + 종단 스크롤러 양방향 동기화, 전용 ㎥ sticky Y축
  · buildStickyYAxis 정의처를 MassHaul 모듈로 이동(Panel과 공용)

typecheck·vite build·ruff 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 17:54:53 +09:00
eomsangdonandClaude Opus 5 644ec64bd2 perf(B05/B06): 계획선 프리뷰 응답 1.09MB → 6KB, 곡선 셀 기본 표시 원복
프리뷰 성능
- 느린 원인은 응답 크기였다(영구저장소 저장·재로드는 하지 않는다). 상세를 통째로
  돌려주느라 1.09MB였고, 유토곡선이 실제로 읽는 설계 필드만 남겨 6KB로 줄였다.
  제외: 지반선 원시 샘플, 설계선 좌표(250KB), 선형 구조(87KB), 계획선 샘플(85KB).
  계획선은 화면이 이미 같은 규칙으로 계산해 들고 있고, 설계선 좌표는 B06 상세가 준다.
- 프론트는 온 필드만 덮어쓰는 부분 갱신으로 바꿔 안 온 값을 지우지 않는다.
  디바운스 400 → 250ms.

곡선 L·R 표시 원복
- 배관 자리는 구조물 측점이라 테이블에 기본으로 안 나오는 것이 맞다(사용자 정정).
  격자 밖 변화점 셀을 걷어냈다 — 선택하면 buildSelectedColumn이 곡선 L·R을 보여 준다.

검증: 응답 1,091,003 B → 6,007 B, 계산값 동일(절토 16.4㎡ / 성토 48.3㎡).
typecheck·vite build·ruff·B03 테스트 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 20:47:35 +09:00
eomsangdonandClaude Opus 5 d21b0ec51d fix(B05): 종단곡선 기준을 L로 전환하고 테이블 곡선 R·L 누락 수정
영구저장소를 직접 확인하니 R·L은 정상 저장돼 있었고, 안 보인 원인은 둘이었다.

호가 너무 짧았다
- 배관 정착 선형은 변화점 대수차가 1~3%로 작아 R 기준(250m)에서 L = R × A 가
  3~7m. 350m 연장 도면에서 화면상 10~20px이라 직선과 구분되지 않았다.
- 곡선 기준을 R에서 L로 바꿨다: pipe_anchor_curve_length_m = 15.0 신설,
  R = L / A 로 역산(법정 최소반경 하한 유지). 표고 보정 반복마다 대수차가
  변하므로 R도 매 회 다시 역산한다. 변화점마다 호 길이가 같아 도면이 고르다.

테이블 곡선 행이 규칙 측점만 순회했다
- buildCurveRows가 20m 격자 측점만 돌아 배관 변화점(84.3m 등)의 R·L 셀이 아예
  그려지지 않았다. 격자 밖 변화점 셀을 추가해 선택·하이라이트와 무관하게
  기본으로 값이 보이게 했다.

검증: solve 재실행 후 84.30/200.92/275.71m 호 길이 정확히 15.00m, 149.73m만
대수차 25.2%로 최소반경 바닥에 걸려 46.07m(정상). 배관 4곳 계획고=지반고 유지.
typecheck·vite build·ruff·B03 테스트 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 20:35:15 +09:00
eomsangdonandClaude Opus 5 a9741277cf feat(B05): 배관 정착 계획선 1차 로직 + 유토곡선 UI 정리 5건
계획선 1차 로직 (2026-08-03 사용자 확정)
- design_pipe_anchored_profile 신설: 배수유역도가 확정한 배관 배치 측점을
  변화점으로 삼아 계획선이 각 배관 자리에서 지면선과 만나도록(계획고=지반고)
  시작점→배관1→…→종점을 직선으로 잇고 기본 R을 얹는다. 배관(암거)은 계곡
  유하부라 계획선이 그 지점에 붙어야 복토·유입 조건이 성립한다.
- 기존 지반 추종 직선 분할 DP 선형은 2차 폴백으로, 구 균형 최적화 계획선은
  3차 폴백으로 강등. 관 지점 파일의 노선 지문이 다르면 배관을 쓰지 않는다.
- 테스트 프로젝트 solve 재실행으로 저장분 재계산 — 변화점이 배관 5개 자리와
  일치하고 각 자리 계획고=지반고임을 검증.

유토곡선 UI (사용자 피드백 5건)
- 기준 버튼 라디오화: 횡단/종단 택1로 그 기준 그래프만 전체 영역에 표시
  (applyLegendToggle/normalizeVisibleBasis, B05·B06 공통 저장 키 공유).
  Y 범위도 표시 중인 기준으로 산정.
- B05 Y축 이중 표시 제거: MassHaulAxis.axisX 신설 — 축 선·눈금을 종단 그래프
  축과 같은 자리에 그리고 데이터 매핑은 유지해 측점 세로 정렬 불변.
- 종단↔유토곡선 경계 드래그 리사이저(비율 0.25~0.75, 세션 보존, 기본 1:1).
- B05 범례를 B06과 같은 오버레이 우상단 절대배치로 이동.
- 도면 테이블: 구조물 배치로 갈라진 구배 블록 값을 기본 숨김(윤곽·툴팁만),
  해당 측점 선택 시 하이라이트와 함께 표시.

typecheck·vite build·ruff·B03 테스트 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 20:14:09 +09:00
eomsangdonandClaude Opus 5 b3ab6028cd fix(B05): 측점 하이라이트가 표 값을 가리던 문제 + 계획고 추가 강조 제거
하이라이트 열이 덮는 자리의 규칙 측점 값 셀을 통째로 숨겨(hideCoveredCells),
비정규 측점을 고를 때마다 좌우 최대 2개 열의 값이 사라졌다. 표는 그대로 두고
선택된 값만 위에 얹도록 그 함수와 .is-covered 규칙을 걷어냈다.

하이라이트 열에서 계획고만 자주색 테두리·글자색으로 따로 강조되던 것도 없앴다.
평상시에는 다른 셀과 같은 모습이고, 고칠 수 있다는 표시는 hover·focus에서만
나타난다. 직접 입력 기능은 그대로다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-02 01:07:14 +09:00
eomsangdonandClaude Opus 5 6d13b3b781 refactor(B05): 배관 추가·삭제 우클릭 메뉴를 종단 그래프로 이동
구조물 조작이 테이블과 그래프로 나뉘어 있었다. 이동은 그래프 측점선, 추가·삭제는
테이블이라 어디서 무엇을 하는지 알기 어려웠다. 메뉴를 그래프 칸으로 옮겨 셋을 한
자리에 모은다. 테이블은 값만 보여 준다.

- mountStructureMenu의 부착 대상을 테이블 → 그래프 칸(.b05-profile__chart)으로 교체
- ProfileTableOptions.structureLines 제거
- CSS 블록명 b05-profile-table__context-menu → b05-profile-chart__context-menu

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 23:57:40 +09:00
eomsangdonandClaude Opus 5 c141ad4ef8 refactor(B05): 구조물 조작을 종단 그래프 측점선으로 이동
- 테이블에 얹던 구조물 세로선을 걷어냈다. 위치는 그래프 측점선이 이미 보여 주므로
  같은 것을 두 번 그리는 셈이었다. 테이블에는 우클릭 메뉴만 남는다
  (가까운 구조물이 있으면 삭제, 없으면 배관 추가).
- 드래그는 종단 그래프의 구조물 측점선에서 한다. createLongitudinalProfile에
  onDragStation을 추가하고 kind === "irregular" 측점선에만 붙였다(좌클릭 전용).
- 좌측 구조물 폼에서 "배관" 항목을 고치거나 지우면 그래프와 배수유역도가 함께
  갱신된다. DrainagePanel.setPipeChainages() 신설.
  reconcilePipes()가 목록이 같으면 null을 돌려 관↔구조물 순환을 끊는다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 23:52:17 +09:00
eomsangdonandClaude Opus 5 b023698e38 refactor(B04/B05): 배수유역 저장소·API 일원화 + 종단 테이블 구조물 라인 연동
데이터 흐름 문제
- B04 해석 산출물 7개(7.2MB)가 B05로 전량 복사되고 있었고, 관 지점 정본
  (pipe_points.json)은 B05가 아예 참조하지 않았다. B04에서 확정한 관이 B05에
  보이지 않고 진입할 때마다 자동 배치로 되돌아갔다.
- 사본은 "B05 편집이 원본을 덮어쓴다"를 막으려던 것인데, 외곽선 편집을 제거한
  뒤로 B05는 아무것도 저장하지 않아 존재 이유가 사라졌다.

일원화
- B05 전용 모듈 3개 삭제: Engine_Drainage_Store / Engine_Drainage_Basin /
  Router_Drainage. 두 화면이 B04_wf1_Surface/drainage/ 한 폴더를 직접 읽는다.
- POST /drainage/basins 폐기 → GET/PUT /drainage/pipe-points ·
  POST /drainage/detail-basins 한 벌로 통합. 응답에 route_lonlat ·
  main_polygon_lonlat · flow_arrows · upstream_lonlat · inflow_hotspots를 추가해
  B05가 그리는 데 필요한 값을 같은 응답으로 받는다.
- 경로 확정 시 관 지점을 B04와 같은 저장소에 커밋한다.

B05 화면
- 유역 폴리곤을 눌러 고르기(지도에서도 선택), [집중유역] 토글, 관 개수·유역 수·
  종단 Z 출처 요약 줄 추가.
- 관 마커는 좌클릭으로만 잡는다(우클릭은 메뉴, 가운데 버튼은 팬).
- 유역 목록은 3행까지 보이고 나머지는 스크롤.

종단 테이블 구조물 라인
- 관 매설 지점을 "배관" 구조물로 실체화(origin: "pipe"). 정본은 관 지점 파일이며
  목록은 그 투영이라, 어디서 옮기든 pipeEditor 한 경로로 전파된다.
- 테이블 위 세로선을 끌어 이동(배관은 세부유역까지 재산정), 우클릭으로 배관
  추가/구조물 삭제.

정리
- B05_wf2_Route/drainage/ 사본과 debug/(삭제된 Subdivide 엔진 검증 스크립트) 삭제.
- config DRAINAGE_B05_DIRNAME 제거.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 23:37:17 +09:00
eomsangdon 294151f862 auto: 2026-07-28 19:19 (EOMSANGDON-HOME) 2026-07-28 19:19:31 +09:00
eomsangdon 24acc22a0c 260723_8 2026-07-24 18:13:11 +09:00
eomsangdon 505f28a30b 260723_7 2026-07-24 17:52:01 +09:00
eomsangdon 5c8c0462f9 260723_6 2026-07-24 17:21:25 +09:00
eomsangdon 580026a28f 260723_4 2026-07-24 16:50:11 +09:00
eomsangdon a0a553fd94 260723_3 2026-07-24 15:49:45 +09:00
eomsangdon 4b14e64782 260723_2 2026-07-24 14:53:09 +09:00
eomsangdon 1154e169ca 260723_1 2026-07-24 14:07:50 +09:00
eomsangdon e4a744443d 260722_4 2026-07-23 20:09:58 +09:00
eomsangdon 05b24aa847 260722_3 2026-07-23 19:44:19 +09:00
eomsangdon f633dc0a49 260722_2 2026-07-23 19:31:52 +09:00
eomsangdon e52823294f 260722_1 2026-07-23 19:09:38 +09:00
eomsangdon 61a86d806e 260722_B05_종단 설계 반영 초안 2026-07-23 18:54:32 +09:00