Commit Graph
1421 Commits
Author SHA1 Message Date
eomsangdonandClaude Opus 5 5556946f7b docs(토공): 도자 한계 설명을 60m로 맞춤 — 상수는 이미 60이었음
사용자 재확인(2026-09-09)으로 값 확인. `EARTHWORK_HAUL_EQUIPMENT_LIMITS_M` 의
dozer 는 2026-09-08 에 이미 60 으로 바뀌었는데 바로 위 설명만 70 으로 남아 있었음.
읽는 사람이 설명을 믿고 70 으로 오해할 자리라 맞춤. 동작 변화 없음.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:56:54 +09:00
eomsangdon 02d99486bd Merge remote-tracking branch 'origin/sub_laptop_1' into main_desktop_1 2026-09-08 18:42:59 +09:00
eomsangdon c8c5d7cf1f Merge remote-tracking branch 'origin/main_laptop_1' into main_desktop_1 2026-09-08 18:42:57 +09:00
eomsangdonandClaude Opus 5 a1741be43f fix(B06): 좁은 폭에서 좌측 패널 항목이 2px 새던 것 — 그 폭에서만 라벨을 접음
창폭 480 에서 좌측 패널이 237 까지 물러나면 「횡단 반폭(m)」 라벨이 안 줄어
`.ui-field` 가 2px 넘쳤다(공용 `.ui-field` 는 안 건드리고 내 행에서 처리).

- `@media (max-width: 560px)` 에서만 라벨을 윗줄로 접는다.
- ⚠ 폭 제한 없이 `flex-wrap` 을 주면 넓은 폭에서도 라벨이 윗줄로 올라간다 —
  실제로 재 보고 되돌린 뒤 폭 조건을 붙였다.

확인(1400·760·620·480): 넘침 0 · 잘린 라벨 0 · 가로 스크롤 0,
넓은 폭 높이 42(한 줄) 유지, 480 에서만 68(두 줄).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:42:15 +09:00
eomsangdon 4e29a4ee38 auto: 2026-09-08 18:34 (EOMSANGDON-HOME) 2026-09-08 18:34:43 +09:00
eomsangdonandClaude Opus 5 a552bfd444 fix(ui): 아주 좁은 폭에서는 좌패널을 줄이지 말고 접은 채로 시작
⚠ 앞 커밋의 「본문에 320 을 남긴다」가 폭 500 에서 패널을 **180px 로 눌러** 목록
이름이 잘렸음(랩탑 보조 실측: 잘린 이름 2건). 폭을 반씩 나누면 **둘 다 못 쓰는
화면**이 됨.

- CSS ≤560 — 패널을 **안 줄임**(280px 유지). 본문 밀기는 이미 ≤860 에서 꺼져 있어
  패널이 **본문 위에 겹쳐** 뜨고, 읽을 때는 손잡이로 접음. 폭 500 에서 잘린 글자 0.
- TS — 정한 적이 없고 화면이 아주 좁으면(≤560) **접은 채로 시작**함. 펼친 채로 열면
  본문이 가려진 화면부터 보게 되기 때문임.
- ⚠ **사용자가 정한 적이 있으면 그 뜻이 이김** — 저장값이 있으면 그대로 따름.
- ⚠ **처음 앉힐 때는 저장하지 않음** — 좁아서 접은 것을 「사용자가 접었다」로 적으면
  넓은 화면으로 돌아와도 접힌 채로 남음.

실측
  정한 적 없음 + 500  → 접힘 true · 저장값 null (기록 안 남김)
  정한 적 없음 + 1400 → 접힘 false · 저장값 null
  「펼침」 정해 둠 + 500 → 접힘 false (사용자 뜻이 이김)
  잘린 글자 860·620·560·500 전부 0

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:34:29 +09:00
eomsangdonandClaude Opus 5 b5c3fe11a0 fix(B05): 접힌 배수 패널에서 요약 글줄이 밖으로 새던 것
접었을 때 머리·본문만 감추고 요약줄은 남아, 폭 0 인 패널에서 글자가 64px 밖으로
새어 나왔다(폭과 무관하게 늘 같은 값 — 좁은 폭 문제가 아니라 그 자리 결함).
감추는 목록에 요약줄을 더한다.

확인: 접힘에서 display:none·넘침 0, 펼침에서 이전과 같음(넘침 0).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:31:35 +09:00
eomsangdonandClaude Opus 5 4a47b9048d fix(ui): 좁은 폭에서는 끌어 둔 패널 자리를 잠시 물림 — 저장값은 그대로
⚠ 인라인 좌표는 미디어 규칙보다 세다. 넓은 화면에서 끌어 둔 자리가 좁은 화면에도
그대로 남아 본문을 덮었음(앞 커밋으로 폭은 줄였으나 자리는 그대로였음).

- 좁아지면 인라인 좌표를 **떼어** CSS 자리로 보냄. ⚠ **저장값은 안 지움** —
  지우면 사용자가 맞춰 둔 자리가 사라져 더 나쁨.
- 넓어지면 **끌어 둔 자리를 되찾음.**
- ⚠ 좁은 폭에서 사용자가 직접 끌면 **그 뜻이 이김** — 규칙이 다시 덮지 않음.
  그 자리는 **저장하지 않아** 넓은 화면 자리를 밀어내지도 않음.

실측(진행단계 패널, 저장값 {left:420, top:300} 을 심어 두고)
  1400  420/300 (끌어 둔 자리)        저장값 유지
   760  물러남 · 본문 남음 288px      저장값 유지
   500  물러남 · 본문 남음 194px      저장값 유지
   620 에서 직접 끌기 → 410/309 로 붙고, 폭을 600 으로 바꿔도 그 자리 유지
  다시 1400 → 420/300 되찾음 · 저장값 안 바뀜

곁들여 — 좁은 폭 진행단계 규칙에서 `top: auto; bottom: …` 을 뺌. 위·아래가 함께
잡혀 패널이 화면 높이만큼 늘어났음(실측 717px). 폭만 줄이고 자리는 그대로 둠.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:29:26 +09:00
eomsangdonandClaude Opus 5 508066b624 fix(B07): 좁은 폭에서 횡단도 2열이 이름을 자르던 것 — 칸이 좁으면 1열로 접힘
공용 오버레이가 좁은 폭에서 좌측 패널을 320 에서 280·227·182 로 물리면서(ef4cdb66)
2열 칸이 128.8 에서 108.8·82.4·60px 까지 줄어 도면 이름이 말줄임으로 잘렸음.
문서 넘침은 0 이라 수치로는 안 잡히는 자리 — 잘린 것이 `overflow: hidden` 안이라서.

실측 (도면 31장, 잘린 이름 수 · 고치기 전 → 뒤)
  1400·1000    0 → 0   (2열 128.8px 그대로 — 넓은 폭 배치 안 건드림)
  860·760·620  1 → 0   (1열 221.6px)
  560         16 → 0   (1열 168.8px)
  500         19 → 2   (1열 124px)

남은 2건은 횡단도 격자 밖(「계획평면도(노선배치도)」 등)이고 폭 500 에서만 남음 —
그 폭에서 패널이 182px 까지 물러난 결과라 공용 오버레이 몫.

`repeat(auto-fit, minmax(120px, 1fr))` — 가장 긴 이름 107px + 단추 안여백·테두리
20px 를 문턱으로 잡음. 넓은 폭에서는 두 칸이 들어가 배치가 그대로임.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:28:00 +09:00
eomsangdon b63e908fdf Merge remote-tracking branch 'origin/main_desktop_1' into main_laptop_1 2026-09-08 18:24:12 +09:00
eomsangdon e64adefa23 Merge remote-tracking branch 'origin/main_laptop_1' into sub_laptop_1 2026-09-08 18:23:47 +09:00
eomsangdonandClaude Opus 5 ef4cdb667a fix(ui): 좁은 폭에서 두 오버레이가 본문을 덮던 것 — 본문에 남길 최소 폭을 정함
⚠ 「넘침은 0 인데 못 읽는」 자리였음. 표가 자기 스크롤 안에서 잘려 넘침 수치로는
안 잡히고, 실제로는 좌측 패널(320 고정)과 진행단계 패널(fixed)이 화면을 덮고 있었음.

실측(B08, 본문에 남는 폭)
  860px  348 → 388     760px  248 → 288
  620px  108 → 175     500px    4 → 194
  1400·1000 은 그대로 (넓은 화면 배치 안 건드림)

방법 — 패널을 비율(vw)로 줄이면 좁아질수록 본문도 같이 줄어 결국 못 읽음.
그래서 **본문에 남길 폭**(--wf-min-content-width: 320px)을 정하고 패널이 그만큼
물러나게 함. 좁은 폭 전용 패널 폭(--wf-left-panel-narrow-width: 280px)도 따로 둠.
진행단계 패널은 폭을 줄이고 아래로 내려 본문 윗부분(탭·표 머리)을 안 가리게 함.

확인 — B03·B05·B06·B07·B08·B09 를 1400·760 두 폭에서 훑음. 문서 넘침 전부 0,
넓은 폭 배치 변화 없음(좌측 320 유지).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:22:27 +09:00
eomsangdon 2b27a4313d Merge remote-tracking branch 'origin/sub_desktop_1' into main_laptop_1 2026-09-08 18:20:33 +09:00
eomsangdon 3135562bf5 Merge remote-tracking branch 'origin/main_desktop_1' into main_laptop_1 2026-09-08 18:20:32 +09:00
eomsangdonandClaude Opus 5 35dc09f5dd fix(B03): 청크 갈래에 확인 예외 import 누락 보완
실사용 확인에서 청크 세션 생성이 NameError 로 500 이 났다. 세 갈래가 확인
단계 이름을 다 들고 있는지 지키는 시험을 추가.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:19:21 +09:00
eomsangdonandClaude Opus 5 09e1c983ae feat(B03): 새 자료로 갈기 전에 「지우고 진행할까」 확인 한 단계 신설
업로드 하나가 그 프로젝트의 설계 산출물·초기값 스냅숏을 되돌릴 수 없게 지운다.
창 넷이 한 프로젝트를 볼 수 있어 말없이 지우면 남의 작업이 사라진다.

- `describe_existing_outputs`: 지워질 것을 사람 말로 낸다(전처리·노선·횡단·도면·
  수량·원가·초기값). 빈 폴더는 세지 않는다.
- 지울 것이 있는데 확인이 없으면 409 `confirm_required` — 무엇이 지워지는지 함께 준다.
- 세 갈래(직행·청크·보관함 연결) 전부에 `confirm_replace` 를 붙임.
- ⚠ 기본값은 확인 켬(True) — 자동 절차(체인·스크립트)는 물음에 안 걸린다.
  사람이 올리는 라우터만 False 로 불러 확인을 받는다.
- 화면: 409 를 받으면 「되돌릴 수 없습니다」와 지워질 목록을 보이고 한 번 묻는다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:14:54 +09:00
eomsangdonandClaude Opus 5 b525a13670 fix(B09): 좁은 폭에서 표가 바깥 칸을 밀어내던 것 고침
실측(창 620) — .b09-main 이 1,190px 밀려 나감. 원인이 세 겹이었음.

- .b09-main · 표를 감싸는 body 칸에 min-width: 0 이 없었음. flex 자식 기본 최소폭이
  auto 라 안쪽 표의 최소폭(칸이 nowrap)을 그대로 물었음.
- ⚠ 진짜 원인은 그 아래였음 — .b09-sheet 가 **감싸는 칸(div)에 붙는 자리와 표(table)에
  바로 붙는 자리**가 둘 다 있음(내역서·자재대는 표에 직접). 표에는 overflow 가 안 먹어
  표 폭만큼 바깥이 밀렸음. table.b09-sheet 를 블록으로 바꿔 제 안에서 가로로 넘어가게 함.
- 주석에 백틱을 쓰면 템플릿 문자열이 끊김 — 그 사실을 주석에 남김(한 번 겪음).

실측: 다섯 탭(공사원가계산서·설계내역서·일위대가·단가산출근거·관급·사급) × 창 1400·620
전부 몸통 가로밀림 없음·넘침 0px, 표만 제 안에서 스크롤.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:14:18 +09:00
eomsangdon 57e4927f1c Merge remote-tracking branch 'origin/sub_laptop_1' into main_desktop_1 2026-09-08 18:13:02 +09:00
eomsangdon 375465d25d Merge remote-tracking branch 'origin/sub_desktop_1' into main_desktop_1 2026-09-08 18:13:00 +09:00
eomsangdon a088d9e37e Merge remote-tracking branch 'origin/main_laptop_1' into main_desktop_1 2026-09-08 18:12:59 +09:00
eomsangdonandClaude Opus 5 107883a354 fix(B07): 무한 로딩 두 자리 — 미리받기가 클릭을 막던 것과 응답 없는 CAD
무한 로딩으로 보이던 자리가 둘이었음.

1) 미리받기가 클릭 앞을 막음 (진짜 원인)
   진입 직후 도면 31 장을 순서대로 미리 받는데, 한 장이 0.3~1.0초라
   그 사이 클릭한 도면이 앞의 여러 장 뒤에 줄을 서서 30초 넘게 안 열렸음.
   화면은 「불러오는 중」 그대로였음.
   - 클릭이 도는 동안 미리받기가 쉬게 함
   - 클릭이 이미 받아 둔 장은 건너뜀

2) CAD 가 아무 말도 안 하면 끝이 없었음
   끝을 알리는 것이 drawing-loaded · drawing-error 두 통지뿐이라,
   iframe 이 안 뜨거나(ready 없음) 도면을 여는 중에 멈추면 영원히 돎.
   - 지켜보는 시계 추가 (ready 20초 · 도면 15초)
   - iframe 자체가 못 뜨면 기다리지 않고 바로 끊음
   - 화면 표시만 끊고 요청은 살려 둠 — 늦게 오면 그대로 받음

곁들여 B07 의 「모든 도면 확정 뒤에 이동」 가드를 개발환경에서만 품
(B09 로 가는 길. 운영에서는 그대로 막음).

확인: 단계 표시줄 B08·B09 가 눌리고 B07 → B08 이동됨. tsc 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:12:52 +09:00
eomsangdonandClaude Opus 5 f5cd898c16 feat(개발): 확정 전 단계도 눌러서 이동 — B08·B09 접근 길 확보
B08 의 「확정 없이 다음으로」 단추가 B08 화면 안에 있어, 상세설계(B07)에서
B08 로 못 넘어가면 그 단추에 닿을 길이 없었음(닫힌 문 안에 열쇠).

- 단계 표시줄이 NOT_STARTED·STALE 을 막던 것을 개발환경에서만 품
- 열어 둔 단계는 「확정 전이라 값이 비어 보일 수 있음」을 툴팁으로 알림
- 잠금을 푸는 것이 아니라 가기만 하는 것 — 실제 우회는 B08 의 그 단추가
  서버(common_util_dev_unlock)로 하고, 운영에서는 ENVIRONMENT 로 거절

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:12:36 +09:00
eomsangdonandClaude Opus 5 d57c0f71ce fix(B03): 직행 업로드에도 분석 중 차단·같은 이름 옛 행 내리기 적용
창 넷이 DB·저장소를 함께 써 겹침이 실제로 생기는 자리다. 청크·임시배치 갈래에만
있던 보호막 둘이 직행 `/files` 갈래에는 빠져 있었다.

- `is_analysis_running` 가드: 분석 중 업로드를 409 로 막는다. 없으면 분석 2개가
  같은 산출물 경로에서 부딪힌다.
- `supersede_previous_input_files`: 같은 이름 옛 행을 SUPERSEDED 로 내린다.
  없으면 같은 파일이 두 줄로 활성이라 어느 것으로 도는지 순서에 달린다.

세 갈래가 같은 보호막을 쓰는지 지키는 시험을 `tmp/tests` 에 남김.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 18:07:10 +09:00
eomsangdonandClaude Opus 5 4581194ca3 fix(B03): 좁은 폭에서 업로드 현황이 컨테이너 밖으로 넘치던 것 고침
사용자 지적 — 창을 줄이면 내용이 밖으로 나가고 글자를 못 읽었음.

원인은 세 자리의 **고정 최소폭**과 flex 기본값이었음.
- 계획노선|지형 2열이 `repeat(2, minmax(0,1fr))` 로 **고정**이라, 좁아지면 각 열이
  카드 하나도 못 담고 넘쳤음 → `auto-fit` + `min(360px,100%)` 로 바꿔 스스로 1열로 접힘.
- 카드 격자 `minmax(260px,…)` · 고르는 줄 `minmax(200px,…)` 는 그 폭 아래에서 넘침
  → `min(…, 100%)` 로 컨테이너까지만 줄어들게 함.
- 카드 머리줄에 min-width/max-width 를 주어 배지·[선택]·[×] 가 안 밀려 나가게 함.
- 페이지 몸통(flex)에 min-width: 0 — 안 주면 안쪽 격자가 넘칠 때 몸통이 통째로
  가로로 밀렸음.

실측(공용 브라우저): 폭 1400·1000·760·620·480 에서 여섯 컨테이너 모두 **넘침 0px**,
페이지 가로 스크롤 없음(scrollWidth = clientWidth). 트랙 폭도 확인 —
1400/1200 은 580·580(남는 트랙 0px), 1000·820 은 2열, 700 이하 1열.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 17:54:20 +09:00
eomsangdon ddbe10bdf7 Merge remote-tracking branch 'origin/sub_desktop_1' into sub_laptop_1 2026-09-08 17:45:55 +09:00
eomsangdon d0a7e32696 Merge remote-tracking branch 'origin/main_desktop_1' into sub_laptop_1 2026-09-08 17:45:55 +09:00
eomsangdon f8a0d084a9 Merge remote-tracking branch 'origin/main_laptop_1' into sub_laptop_1 2026-09-08 17:43:46 +09:00
eomsangdon 994f998c3a Merge remote-tracking branch 'origin/main_desktop_1' into sub_laptop_1 2026-09-08 17:43:46 +09:00
eomsangdon 1f3d68b528 Merge remote-tracking branch 'origin/sub_laptop_1' into main_laptop_1 2026-09-08 17:43:37 +09:00
eomsangdon 045355db80 Merge remote-tracking branch 'origin/sub_laptop_1' into main_desktop_1 2026-09-08 17:43:34 +09:00
eomsangdon 9c51a29793 Merge remote-tracking branch 'origin/sub_laptop_1' into sub_desktop_1 2026-09-08 17:43:34 +09:00
eomsangdon 4610bb469c Merge remote-tracking branch 'origin/main' into sub_laptop_1 2026-09-08 17:27:53 +09:00
eomsangdon de760ca6c9 Merge remote-tracking branch 'origin/sub_laptop_1' into main_desktop_1 2026-09-08 17:27:50 +09:00
eomsangdon 46c7df5f94 Merge main_laptop_1 into main (PR #12) 2026-09-08 17:26:27 +09:00
eomsangdon 003b69bfe2 Merge remote-tracking branch 'origin/main_laptop_1' into sub_laptop_1 2026-09-08 17:05:11 +09:00
eomsangdon 89386a971f Merge remote-tracking branch 'origin/main_desktop_1' into sub_laptop_1 2026-09-08 17:05:10 +09:00
eomsangdon 6a90bc1015 Merge remote-tracking branch 'origin/main_desktop_1' into main_laptop_1 2026-09-08 17:04:49 +09:00
eomsangdon 6b875be85b Merge remote-tracking branch 'origin/sub_desktop_1' into sub_laptop_1 2026-09-08 17:03:14 +09:00
eomsangdon 8e99b8a763 Merge remote-tracking branch 'origin/sub_desktop_1' into main_desktop_1 2026-09-08 17:03:13 +09:00
eomsangdon ed37152184 Merge remote-tracking branch 'origin/sub_desktop_1' into main_laptop_1 2026-09-08 17:03:09 +09:00
eomsangdonandClaude Opus 5 635eb69003 chore(db): 프로젝트 통째 복제 도구를 저장소에 둠 (창별 검증 프로젝트용)
⚠ 네 창이 **같은 원본에서 같은 방법으로** 떠야 수치를 견줄 수 있는데,
쓰던 스크립트가 `tmp/` 에 있어 다른 창이 못 봤음(2026-09-08 랩탑 두 창이 막힘).
원본은 SELECT 만 함 — 원본 행·파일에 쓰지 않음.

뜨는 것 — DB 열 표(projects·input_files·processed_point_cloud·surface_models·
routes·route_points·route_statistics·longitudinal_sections·cross_sections·
project_workflow_stages)와 저장소 폴더 통째. 자동증가 id 는 새로 받고 참조를 다시 이음.
파일 안에 박힌 옛 UUID 와 초기값 스냅숏의 surface_model_id 도 치환함.

⚠ DB 만 뜨거나 파일만 떠서는 화면이 안 섬 — 수량은 DB(측점·횡단)를 보고
구조물·관 정본은 파일(structures.json·pipe_points.json)이라 둘 다 필요함.

쓰는 법: ./venv/Scripts/python.exe db_management/tools_clone_project.py <원본 UUID> "<새 이름>"

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 17:01:16 +09:00
eomsangdon 394b727c95 Merge remote-tracking branch 'origin/main_laptop_1' into sub_desktop_1 2026-09-08 16:48:48 +09:00
eomsangdon 5f0a45b555 Merge remote-tracking branch 'origin/main_desktop_1' into sub_desktop_1 2026-09-08 16:48:47 +09:00
eomsangdonandClaude Opus 5 bbdae2d99c knowledge(미결): 옆도랑 저폭 미결 22 에 실물 근거 1건 추가
소광 기번8 내역서 「제형돌수로 B=0.75 m」 — 별표2 너비 0.5~1 m 범위 안.
한 공사지 한 줄이라 일반화 불가 표시 유지.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 16:10:34 +09:00
eomsangdon 337e6a69c1 Merge remote-tracking branch 'origin/sub_desktop_1' into main_laptop_1 2026-09-08 16:09:34 +09:00
eomsangdonandClaude Opus 5 385f5c303d fix(B08): 씨앗뿜어붙이기 밑수 ㎡ 추가 + 시공량 모양을 밑수로 안 받게 막음
⚠ 아홉 중 여덟째 — FP-05-24 는 원문 L2769·L2794 절 머리 아래 「(㎡당)」인데
「단위:」 글자 없이 **괄호만** 있어 마스터가 못 읽던 자리(원문 열어 확인).

⚠ 그리고 매핑 밑수 칸은 **사람이 손으로 적는 자리**라, 품셈에 섞여 있는
「(㎥/1대, 1일)」 같은 **시공량**을 적을 수 있음 — 그것은 밑수의 **역수**라
받으면 그 공종이 조용히 뒤집힌 단위를 가짐. `is_quantity_unit()` 으로 좁게 막음
(나눗셈·쉼표가 있거나 「일당·조·인」이면 안 받음). 애매하면 안 받는 쪽 —
안 받으면 대조가 없을 뿐이고, 잘못 받으면 틀린 단위로 검사를 통과시킴.

시험 741 통과 (B05 코리도 1건 기존 깨짐, 무관).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 14:18:06 +09:00
eomsangdonandClaude Opus 5 c81c11e330 refactor(B08): Engine_Handoff 1,279줄을 셋으로 가름 (700줄 제한)
⚠ **계약은 하나도 안 바뀜** — 줄의 모양·칸 이름 그대로이고 파일만 가름.
종전 이름으로 부르던 곳이 그대로 돌도록 `Engine_Handoff` 가 다시 내보냄.

  Engine_Handoff.py          249줄  build_handoff·검사·다시 내보내기
  Engine_Handoff_Mapping.py  413줄  매핑표·WorkItemMapping·갈래표·묶음 전개
  Engine_Handoff_Rows.py     700줄  줄 빌더 여덟(토공·운반·구조물·준비공·배수관·연장·타설)

확인 — 시험 739 통과로 가르기 전과 같음(B05 코리도 1건 기존 깨짐, 무관).
다시 내보내는 이름 22개를 실제로 불러 봄.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 14:16:17 +09:00
eomsangdonandClaude Opus 5 5063bd376b feat(B09): 「단위:」 없이 괄호만 적는 절도 읽음 — 단위 빈 일위대가 61 → 27
- 「(㎡당)」·「(인/100㎡당)」·「(1,000본당)」처럼 「단위:」를 뺀 절이 있음.
  씨앗뿜어붙이기 5-24 가 그 모양이라 통째로 미확보였음(메인이 물은 아홉 중 하나).
- 「인/」 앞머리는 품의 단위라 건너뜀 — 「인/㎡당」은 「㎡당 몇 인」이라 공종 단위가 ㎡.
- ⚠ 「㎥/1대, 1일」·「대/ton」은 안 받음 — 그건 시공량이지 소요량이 아니라
  공종 단위로 읽으면 뜻이 뒤집힘(역수). 밑수가 둘인 「1ha당, 100본당」도 안 받음.
- 절 단위 128 → 185, 단위 빈 일위대가 61 → 27. 내역 금액 변동 없음.

시험 2건 추가(받을 것·막을 것 짝), 254건 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 14:15:33 +09:00
eomsangdonandClaude Opus 5 510337557b fix(B08): 자재 이름 「물구멍」 → 「물구멍관」 (카탈로그 규약)
자재 카탈로그가 이름+규격 두 문자열로 줄을 찾고, 그 규약이 「공백 없는 한 낱말」임
(2026-09-08 B09 실측 — 키는 나라장터 물품식별번호라 우리가 맞출 것이 아님).
전개·관측 원단위표·할증표 세 곳을 함께 고침 — 한쪽만 고치면 이름이 갈림.

⚠ 고임돌·야면석 규격에 뒷길이를 넣지 않음 — 뒷길이는 **수량이 갈리는 축**이지
단가가 갈리는 축이 아님(야면석 톤당 단가는 뒷길이와 무관). B09 가 앞 제안을 물림.

곁들여 — 물구멍관 길이 0.5 가 구조물마다 다른 값임을 주석에 적음
(옹벽 0.32 m/m · 돌기슭막이 0.39 m · 돌골막이 0.5 m/개소, 실무 관측).

시험 739 통과 (B05 코리도 1건 기존 깨짐, 무관).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 14:13:42 +09:00
eomsangdonandClaude Opus 5 66099e79a0 data(B08): 원문 대조로 밑수 단위 일곱을 매핑에 채우고, 덤프 단위중량 근거 기록
⚠ 마스터가 못 채운 자리(절 머리에 「(단위: …)」가 없는 공종)를 원문에서 읽어 적음.
줄 번호까지 열어 확인했고, 시험이 그 줄에 그 글자가 있는지 매번 대조함.

  FP-09-03-02 기계(흙깎기) ㎥ L4704 · FP-09-04 암절취 ㎥ L4725·L4738
  FP-09-05 발파암 ㎥ L4744·L4777 · FP-09-16 노체 ㎥ L5322·L5336·L5363
  FP-09-17-01 비탈면 다짐 ㎡ L5368 · FP-10-11 불도저 운반 ㎥ L5919
  FP-10-12 덤프 운반 ㎥ L5928·L5971·L5985

⚠ FP-12-06 은 「없음」이 아니라 **거절** — L6229 「(단위: 일당)」은 품의 단위이지
공종 수량 단위가 아님. 받으면 틀린 단위로 검사를 통과시킴. 매핑에 사유를 적음.

⚠ 덤프 단위중량 γt 가 원문에 있었음(「현장값이라 미확보」 정정) —
L5930 [주]② 「토사 1.9ton/㎥, 암절취 및 발파암은 2.4ton/㎥」. 갈래별로 값이 다름.

시험 739 통과 (B05 코리도 1건 기존 깨짐, 무관).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 13:25:58 +09:00