Commit Graph
1686 Commits
Author SHA1 Message Date
eomsangdonandClaude Opus 5 4a6254ba98 fix(B09): 성토·성토면다짐에 단가가 서게 함 — 금액 없이 내역에 서 있던 두 줄
물량은 인계로 오는데 단가가 없어 성토 13,150.2㎥·성토면다짐 12,350.3㎡ 가 금액 없이
서 있었음. 원문에는 값이 다 있고 막힌 까닭만 서로 달랐음.

- 노체포설(9-16-1): 기종이 [주]에만 있어 못 골랐음 → 흙깎기와 같은 장비 칸을 둠
  (무한궤도 굴착기 0.7㎥, [주]① 그대로. 화면에서 바꿀 수 있음).
- 비탈면 다짐(9-17-1): 표가 한 장도 없고 값이 절 제목에 있음(A = 77.7 ㎡/시간)
  → 제목·[주]에만 있는 작업량을 싣는 자리를 두고 원문 문구를 줄에 남김.
- 부착 콤팩터(0240-0007)는 카탈로그에 이름이 비어 있어 손료가 안 붙고 있었음 —
  이름 대신 분류번호로도 가림(조합 사용 넷은 그대로, 목록을 넓히지 않음).

금액: 성토 59,477,858원 · 성토면다짐 17,827,251원 (합 77,305,109원)이 새로 섬.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 21:59:46 +09:00
eomsangdonandClaude Opus 5 704a10b648 knowledge(제비율): 요율 옆에 밑수·처리 규칙을 실음 + 코드와 맞대는 거울 시험
요율 숫자만으로는 그 데이터를 보고 금액을 되짚을 수 없었음. 밑수를 무엇으로 잡고
어떻게 자르는지가 코드에만 있어, 데이터를 갈아 끼운 사람이 규칙이 바뀐 줄 모름.

- 빠져 있던 밑수 한 칸(건설기계대여대금 지급보증수수료)을 채움.
- 처리 규칙을 데이터에 실음 — 자르는 법(줄 버림·관급자재대 천원 올림) · 안전관리비
  A·B 두 식과 1.2·1.1 · 조달수수료 차감 없음 · 이윤 밑수 · 규모 구간 판정.
- 거울 시험 6개 — 한쪽만 바뀌면 멈춤. 금액은 안 바뀜(1208 통과·실패 0).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 21:38:19 +09:00
eomsangdon 083de5a02f Merge remote-tracking branch 'origin/main_laptop_1' into main_desktop_1 2026-09-09 21:28:26 +09:00
eomsangdonandClaude Opus 5 3a64bb5bd1 feat(B07): 표준도 제원에 상부·하부 두께 칸 — 비우면 실무 구조물도 식
확정 2차 ② 후반 「사용자가 값을 바꿀 수 있게」. 식은 이미 있었고 없던 것은 덮어쓸 칸이었음.

- 등록부(돌쌓기 계열 다섯 종류)에 `thickness_top_m`·`thickness_bottom_m` 칸을 둠.
  큰돌쌓기는 두께 식이 달라 뺐고 화면에서도 그 장에는 안 뜸.
- 빈 칸은 「안 정함」 — 자동값을 저장에 박지 않음. 상부만 넣으면 하부는 그 위에서 식을 이음.
- 근거 문구가 어디서 온 값인지 적음(「사용자 입력」 / 「뒷길이 45㎝ + 0.3」).

화면 실측(랩탑_보조, 표준도 3장 돌쌓기(찰)) — 0.60 넣고 저장하니 2개소 반영,
입적 24.375 → 20.625㎥ 로 움직였고 칸을 비워 되돌리니 24.375 로 복귀함.
시험 다섯 추가, 전체 1203 통과·실패 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 21:27:17 +09:00
eomsangdonandClaude Opus 5 f39c195b52 feat(B09): 유가 지역 단가를 물림 — 시도를 고르면 그 값으로 기계 연료비가 다시 섬
품셈 8-1-7 5호 「유류가격은 해당지역의 가격으로 한다」. 칸은 있었으나 시도별 값이
없어 잠겨 있었음. 오피넷 avgSidoPrice.do 스냅샷을 받아 데이터셋으로 세우고 물림.

- 안 고르면 전국평균 그대로 — 현장 소재지를 임의로 찍지 않음.
- 판에 없는 지역은 조용히 전국평균으로 눕지 않고 사유를 남김.
- 「지역 공시가」를 고를 수 있는지는 코드가 아니라 판이 정함.
- ⚠ 원천의 시도 가름이 행정구역과 다름(20=전남광주 한 줄, 07·16 없음) — 원문 그대로 둠.
- 수집 스크립트에 시도별 호출을 더함(전국평균과 두 벌로 보존).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 21:22:15 +09:00
eomsangdonandClaude Opus 5 92ba0780cd fix(B08): 구조물이 0개면 동바리 안내를 안 띄움
「동바리 대상 없음」은 옹벽·집수정을 세어 보고 하는 말인데, 셀 구조물이 하나도
없어도 뜨고 있었음. 화면 조건에 구조물 수를 함께 봄 — 서버 값·금액은 안 바뀜.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 21:08:00 +09:00
eomsangdonandClaude Opus 5 5b79e4eebc knowledge(원가입력): 표준도 원단위 보류 사유를 우리 말로 — 무엇을 받아야 하는지까지 적음
옛 문구가 영어 한 줄("unresolved source gap")이라 무엇이 없어 미뤄졌는지 안 보였음.
지금 사실대로 적고 받아야 할 자료(실무 구조물 일람표)와 지식DB 근거 자리를 함께 붙임.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 21:03:43 +09:00
eomsangdonandClaude Opus 5 a3d73fcf5c test(B06): 측구 선택이 캐시·재계산·저장 patch 네 통로에 실리는지 잠금
화면 실측에서 토글이 안 돌던 까닭이 「칸 하나 빠짐」이었음 — 통로 어느 한 곳만
빠져도 눌린 값이 조용히 사라지므로 네 파일을 함께 지킴. patch 병합이 「끔」(False)을
걷지 않는 것도 함께 봄.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 20:40:29 +09:00
eomsangdon 79bc4055f9 Merge remote-tracking branch 'origin/main_laptop_1' into main_desktop_1 2026-09-09 20:33:59 +09:00
eomsangdonandClaude Opus 5 5907de85c6 feat(B06): 측구 선택과 결과를 가른 칸 ditch_choice 추가
- 사용자가 누른 선택(`ditch_choice`)과 자동 판정 결과(`ditch_enabled`)를 다른 칸으로 나눔.
- 캐시(`CrossDesignChoice`)에 칸이 없어 토글이 화면에서 안 돌던 자리 이음 —
  선택이 있으면 그것을 따르고, 없으면 저장분 결과를 자동값과 다를 때만 선택으로 살림.
- 서버 patch 스키마에도 같은 칸을 둠. 최상위 `None` 은 병합에서 걷히므로
  「자동」으로 되돌리는 길은 아직 없음(카드 토글은 켬/끔 둘뿐이라 지금은 손해 없음).

화면 실측(카드에서 껐다 켜기)은 PLAN.md 3-16 에 미체크로 남아 있음.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 20:32:50 +09:00
eomsangdonandClaude Opus 5 83c842e37a feat(B09): 공구손료·잡재료 칸 — 기본은 빔, 넣으면 주재료비의 %로 붙음
사용자 확정 5차 작은 것 1 「지금은 안 넣되 숫자 넣으면 되게 열어 둘 것」.
근거는 산림품셈 1-2-6 — 주재료비(할증수량 제외)의 2~5%까지, 산정 근거 명시.

- 기초자료 탭 「산출 조건」에 칸 하나 + [적용]. 비면 줄 자체가 안 섬(지금 상태 그대로).
- 밑수는 **자재 줄만** — 노무·경비, 하위 일위대가 재료비는 안 듦(층마다 거듭 세지 않음).
- 상한 5% 초과는 거절(400) — 조용히 깎아 넣지 않음.
- ⚠ 지금은 일위대가에 주재료비가 선 공종이 0개라 붙을 밑수가 없음 — 그 사실을 칸 밑에 띄움.
- 곁다리: 비율 줄(제잡비·공구손료)이 저장했다 읽으면 사라지던 것을 고침.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 20:30:10 +09:00
eomsangdon 404ec16e65 Merge remote-tracking branch 'origin/main_desktop_1' into sub_desktop_1 2026-09-09 20:19:33 +09:00
eomsangdon 8d3a72e7b7 auto: 2026-09-09 20:19 (EOMSANGDON-HOME) 2026-09-09 20:19:21 +09:00
eomsangdonandClaude Opus 5 8171a22a56 chore(plan): 전달용 계획서 사본 걷음 — 두 판이 같아 합칠 것이 없었음
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 20:15:53 +09:00
eomsangdon 0e95b9b8ce Merge remote-tracking branch 'origin/main_laptop_1' into sub_desktop_1 2026-09-09 20:13:15 +09:00
eomsangdon 738c3062fa Merge remote-tracking branch 'origin/main_desktop_1' into sub_desktop_1 2026-09-09 20:13:12 +09:00
eomsangdonandClaude Opus 5 98a594d5b2 chore(plan): 계획서 합치기용 랩탑 판 전달 — 합친 뒤 지울 것
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 20:12:36 +09:00
eomsangdon c5d5ba2197 Merge remote-tracking branch 'origin/main_desktop_1' into HEAD 2026-09-09 19:54:29 +09:00
eomsangdon 14b1525b94 auto: 2026-09-09 19:54 (ESD_LAPTOP) 2026-09-09 19:54:25 +09:00
eomsangdonandClaude Opus 5 1edfc00960 Merge origin/main_laptop_1 — 위키 그래프 충돌 다섯을 랩탑 것으로 품
두 PC 가 각자 `graphify update` 를 돌려 같은 이름으로 다른 그래프를 냈음.
그래프는 만들어지는 물건이라 내용을 합칠 것이 아니고, 랩탑 것이 최신·전체라 그쪽을 취함
(CLAUDE.md 6장 「같은 자리를 서로 다르게 고쳐 부딪히면 랩탑 쪽」).

  2026-09-09/graph.json 796KB → 906KB · graph.html 845KB → 985KB
  + .graphify_analysis.json · .graphify_labels.json · cache/stat-index.json

곁들여 되살린 것 —
  B08_Quantity/0_old_260726_codex.zip 이 랩탑 `auto:` 커밋에 삭제로 실려 있었음.
  랩탑이 지운 것이 아니고 이 PC 파일이 이력과 해시까지 같아, 시놀로지가 랩탑 쪽에
  파일을 못 놓은 자국으로 보고 되살림. 지우기로 정하면 한 줄로 다시 뺄 수 있음.

⚠ 남은 것 — 두 PC 가 다 위키화를 돌리면 이 충돌이 되풀이됨. 만드는 곳을 한 곳으로
   모을지 사용자 판단 대기.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 19:50:50 +09:00
eomsangdonandClaude Opus 5 c59f36eccd feat(B09): 표본이 얇은 노임에 신뢰도 표시 + 층따기 사전 밑수 정정
PLAN 9-6 · 8-32 두 잔손질.

① 미공표 직종 신뢰도 플래그 (9-6)
   지식DB 가 「단가 채택 시 플래그 유지 필요」(노임단가_적용 §2-3) ·
   「해당 단가 사용 시 경고 표시」(원가_입력변수_사전)로 두었는데 노임 층에 없었음.
   - load_labor_reliability() — 원문 기호 `*`(조사현장 5개 미만)·`**`(미조사) 그대로.
     정상 공표 직종은 아예 안 담음(빈 값과 「정상」을 구별할 일이 없게).
   - PriceTitle.reliability — 노임 제목 전부 + 조종원 줄에도 같이 붙임.
   - build_summary 의 labor_reliability → 화면 힌트 줄로 경고.
   ⚠ 금액을 막지 않음 — 값은 그대로 서고 「조사현장이 적다」는 사실만 나름.
   ⚠ 내역에 실제로 실린 것만 경고 — 카탈로그 40직종을 다 띄우면 쓰지도 않는 직종이
     화면을 채움. 실측 둘: 1037 벌목부 · 1050 일반기계운전사(지식DB 예시 그대로).

② 층따기 사전 밑수 (8-32)
   원가_출력변수_사전 B2-9 가 「㎡·m」였음. 품셈 9-18 은 ㎥ 당이고, 우리도 확정 2차 ①
   로 면적이 정본이되 길이를 곱해 ㎥ 로 내보내고 있음. 두 축을 한 칸에 적어 ㎡ 로
   내도 되는 것처럼 읽히던 자리 — 밑수를 ㎥ 로 고치고 까닭을 비고에 적음.
   코드는 이미 ㎥ 로 내보내 수치 변화 없음.

시험 여섯 신설 · 전체 1182 통과 · 실패 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 19:47:43 +09:00
eomsangdon dee9e95d73 auto: 2026-09-09 19:43 (ESD_LAPTOP) 2026-09-09 19:43:41 +09:00
eomsangdon 5bf4ff8d1f auto: 2026-09-09 19:43 (EOMSANGDON-HOME) 2026-09-09 19:43:12 +09:00
eomsangdonandClaude Opus 5 db38e75724 chore(wiki): graphify 산출물 전체를 git 으로 공유 (2026-09-09 사용자 확정)
날짜별 산출물까지 통째로 실어 창끼리 같은 위키를 보게 함. 374 파일 13MB.

PC 마다 값이 다른 둘만 제외 —
  `.graphify_python`            이 PC 파이썬 실행 경로
  `.graphify_incremental.json`  이 PC 저장소 절대경로가 박혀 있음

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 19:42:12 +09:00
eomsangdonandClaude Opus 5 2d0d779c95 chore(wiki): graphify 그래프를 git 으로 나르게 함
창끼리 같은 위키를 찾게 그래프 본체 여섯만 추적 (합쳐 120KB).
위키화 뒤 `git sync` 한 번이면 문서와 그래프가 함께 옴.

- `.gitignore` 40행 `graphify-out/` 에 `/` 가 없어 docs/wiki/graphify-out 까지
  같이 막고 있었음 (`git check-ignore` 로 확인). 뿌리에만 걸도록 고침
- 날짜별 산출물 13MB · `.graphify_python`(PC 별 경로) · `.graphify_root` ·
  `.graphify_incremental.json`(이 PC 절대경로가 박힘) 은 계속 제외
- `.gitattributes` — 줄끝 변환을 끔. 바꾸면 서명(.sig)이 깨지고 창마다 헛 diff 가 남음

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 19:40:52 +09:00
eomsangdonandClaude Opus 5 0ff26d4378 chore(tester): 시험 예외 목록에서 사토장 둘 뺌 — 정본 까닭이 덮음
`spoil_bank.side` · `extra_distance_m` 은 정본에 `default_basis` 로 까닭이 적혀 있어
목록 없이도 통과함(빼고 돌려 확인). **앞으로도 목록에 넣지 말 것**을 그 자리에 적음.

⚠ 같은 상태인 것이 **13 개 더 있음** — `revetment`·`soil_guard`·C군 `side` 계열.
  빼도 통과하나 이번에는 안 건드림(주석 덩어리가 얽혀 있어 잔손질 범위를 넘음).

`resources/tester/` 1183 통과 / 22 건너뜀 / 실패 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 19:40:40 +09:00
eomsangdonandClaude Opus 5 f9874fd5c9 knowledge(verification): 계획서 공통기반·참고·검증프로젝트 이관
사용자 판단으로 계획서에서 뺀 것 — 원문 그대로 보관.

- 공통기반 0-5·0-7 : 행동지침 5장(계산 자리·데이터 3층)과 겹침
- 8-33            : 창별 검증 프로젝트 표는 OWNERS.md 자원 점유로, 나머지는 여기
- 참고 절 셋       : 데이터 세트 정의는 지침과 중복, 구조물 구현 기준·계곡 통과
                    시설 선정은 옛 자료

계획서 1,167줄 6.4만 자 → 1,058줄 5.9만 자.
미체크 53 → 57 (0-8 고칠 순서 셋 · 투영 이월 하나를 체크박스로 세움).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 19:16:00 +09:00
eomsangdonandClaude Opus 5 ca639d57c5 knowledge(verification): 계획서 완료분 근거 31덩이 이관 (4.4만 자)
상시계획서에 남아 있던 완료된 조사·근거 원문을 검증 폴더로 옮김.
계획서에는 결과만 남기고 경로 인용도 두지 않음 (2026-09-09 사용자 확정).

계획서 1,841줄 10.5만 자 → 1,166줄 6.5만 자 (-38%).
미체크 항목 53건 그대로 — 살아 있는 일감 손실 없음.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 19:10:42 +09:00
eomsangdon 7291a98471 Merge PR #14 - fix(tester): 옮긴 시험이 옛 경로 부르던 것 바로잡음 2026-09-09 18:28:07 +09:00
eomsangdon 9f6082452e Merge remote-tracking branch 'origin/main' into main_laptop_1 2026-09-09 18:23:53 +09:00
eomsangdonandClaude Opus 5 265ba8352e fix(tester): 옮긴 시험이 옛 경로(tmp/tests)를 부르던 것 바로잡음
시험을 `resources/tester` 로 옮긴 뒤 **한 건이 실패**하고 있었음 —
`test_preview_cost` 가 짝 파일을 `tmp.tests.…` 로 불러 못 찾았음(옮긴 폴더에 없음).

- `from resources.tester.test_preview_assets import …` 로 고침
- 실행 안내 문구 셋도 새 경로로(`diag_structures` · `helper_b06_fill_slope_length` ·
  `test_common_util_crs`)
- 정책 시험 설명은 **사실이 바뀌었으므로** 고쳐 적음 — 「git 밖이라」가 아니라
  「옮겨서 함께 건너가되, 까닭은 여전히 값 옆(정본)에 두는 것이 옳다」

`resources/tester/` 1183 통과 / 22 건너뜀 / **실패 0**.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 18:23:46 +09:00
eomsangdon 46795d1f18 chore: 네 창 작업 269건 main 반영 (2026-09-09) (#13) 2026-09-09 18:21:26 +09:00
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
eomsangdonandClaude Opus 5 d7cb14f416 test(B08): tmp/tests 중 tester 에 없던 47 개를 resources/tester 로 옮김
tmp/ 가 창끼리 안 건너가는 것이 확정돼(랩탑이 시간 두고 두 번 확인) 시험·예외가
저절로 건너가도록 git 안으로 옮김. 사용자 확정.

- 내용은 하나도 안 고침 — 자리만 옮김. tmp/tests 는 남겨 둠.
- 같은 이름이 이미 있던 64 개는 랩탑 것을 그대로 두고 건너뜀.
- helper_b05_*.js 둘은 랩탑이 .cjs 로 이미 올린 것과 **줄바꿈만 다른 같은 내용**이라
  복사본을 도로 뺌(시험이 .cjs 를 부름).
- resources/tester/ 에서 전체 1176 통과 · 29 건너뜀 · 실패 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 17:15:57 +09:00
eomsangdon a5eb559f3d Merge remote-tracking branch 'origin/sub_laptop_1' into main_desktop_1 2026-09-09 17:13:14 +09:00
eomsangdon 9f4610ff53 Merge remote-tracking branch 'origin/sub_desktop_1' into main_desktop_1 2026-09-09 17:13:12 +09:00
eomsangdonandClaude Opus 5 0ef32b5279 chore(tester): 시험을 resources/tester/ 로 옮김 — 창끼리 건너가게
⚠ **뿌리** — `tmp/` 는 창 사이에 안 건너감(실측 확인: 상대 창이 놓은 `tmp/_sync_probe.txt`
가 시간을 두고 두 번 봐도 안 보임). 그래서 **정본(등록부 스키마)만 건너가고 그것을 읽는
시험은 안 건너가** 오늘 두 번, 같은 시험이 **연 창은 통과·받은 창은 실패**가 됐음.

- `tmp/tests/*` 를 `resources/tester/` 로 **복사**(127 파일). 내용은 **한 줄도 안 고침**
- `tmp/tests` 는 **남겨 둠** — 되돌릴 자리(사용자 지시)
- 실행: `./venv/Scripts/python.exe -m pytest resources/tester/ -q`
  옮기기 전과 **같은 수**: 617 통과 / 22 건너뜀 / 실패 0

⇒ 이제 시험·예외·까닭이 **정본과 함께** 움직임. 오늘 세운 「예외는 정본 스키마에」와 짝임.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 17:12:30 +09:00
eomsangdon 7d1e0c36d4 Merge remote-tracking branch 'origin/sub_desktop_1' into sub_laptop_1 2026-09-09 16:11:47 +09:00
eomsangdon bfae84aa0e Merge remote-tracking branch 'origin/main_laptop_1' into sub_laptop_1 2026-09-09 16:11:46 +09:00
eomsangdon f7dfa57e8f Merge remote-tracking branch 'origin/main_laptop_1' into sub_desktop_1 2026-09-09 15:38:56 +09:00
eomsangdon 186ae4911c Merge remote-tracking branch 'origin/main_desktop_1' into sub_desktop_1 2026-09-09 15:38:54 +09:00
eomsangdon 5e8acb1312 Merge remote-tracking branch 'origin/sub_desktop_1' into main_desktop_1 2026-09-09 15:38:44 +09:00
eomsangdon fe8a30c31f Merge remote-tracking branch 'origin/main_laptop_1' into main_desktop_1 2026-09-09 15:38:42 +09:00
eomsangdonandClaude Opus 5 799e0b1e79 feat(B09): 확정 5차 — 제근 밑수를 건설품셈에서 빌려 옴 (÷1,000 환산 포함)
사용자 확정 5차 6번 「제근 밑수 — 면적 축. 건설품셈 3-9-2 「1,000㎡당」을 빌려 씀」.

- `WorkItemUnit.BORROWED_UNITS` 신설 — **사용자가 정한 자리만** 담음. 우리가 골라 채우는
  표가 아님. 값과 **근거 문구를 한 자리에** 둠(⚠ 교차 참조 표시 — 임도 전용 품이 있는데
  건설품셈을 쓰는 것이라 화면이 그 사실을 밝혀야 함)
- ⚠⚠ `BORROWED_BASIS_PER` — **「1,000㎡당」이라 ÷1,000 환산**. 단위만 「㎡」로 달고 값을
  그대로 두면 **금액이 천 배**가 됨. 단위와 배수를 한 자리에 두고 시험으로 못 박음
- ⇒ 제근 여섯 갈래에 밑수가 붙어 단가가 섬 — 굴착기 0.7㎥·소림 **55.4원/㎡**

⚠ **자릿수가 견준 값과 어긋남을 사유에 함께 적음** — 실무 영월 「뿌리뽑기」는 475원/㎡ 이고,
빌려 온 3-9-2 는 같은 1,000㎡당에 굴착기(0.2㎥) 3.76hr 로 산림품셈 9-21 의 0.80hr 보다
4.7배 큼. **100㎡당으로 보면 실무와 자릿수가 맞음.** 값은 확정대로 두고 **어긋남을 보임** —
지어내지도, 조용히 넘기지도 않음.

검증: pytest 311 통과(신규 4)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 13:22:10 +09:00
eomsangdonandClaude Opus 5 5cc5329cac fix(B06): 자동과 같은 측구 선택은 「자동」으로 풀림 — 다시 굳지 않게
화면 토글이 **2단**이라 「자동으로 되돌리기」 단추가 없음. 되돌리려면 원래 값으로 다시
누르는 수밖에 없는데, 그것을 선택으로 굳히면 **방금 고친 병이 그대로 되돌아옴**
(지형이 바뀌어도 안 따라감).

⇒ 선택이 자동값과 같으면 **선택 없음(자동)** 으로 본다. 파이썬·TS 짝 양쪽.
시험 하나 추가 — 「자동과 같은 선택은 자동으로 푼다」. 전체 617 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 13:18:21 +09:00
eomsangdonandClaude Opus 5 ac8e8f1e59 fix(B08): 물량 0 인 구조물을 내역에서 뺌 — 0 원 줄이 만들어지던 자리
물넘이포장이 면적을 못 받아 「0.0 ㎡」로 내역에 서고 있었음. 코드가 붙어 있어
0 원 줄이 만들어지고 화면에는 값이 있는 줄로 보임 — 0 은 「없음」과 구별이 안 됨.
줄은 그대로 넘기되 in_bill False + 까닭(원단위 사유 그대로) + input_missing 로 둠.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 13:13:54 +09:00
eomsangdonandClaude Opus 5 01c96e9a11 fix(B06): 측구 「선택」과 「결과」를 가름 — 한 번 저장되면 자동이 안 돌던 자리
⚠⚠ 한 칸(`ditch_enabled`)에 **두 뜻**이 담겨 있었음.
결과(실제 섰나)를 그대로 다시 입력으로 넣어 읽었으므로 **한 번 저장되면 자동 판정이
영영 다시 안 돌았음.** 계획고를 내려 절토가 생겨도 측구가 안 서고 **아무 말도 안 나왔음.**

- **선택** `ditch_choice` (없음 = 자동) · **결과** `ditch_enabled` (실제 섰나)로 가름
- 자동 판정을 **먼저** 하고 선택을 그 위에 얹음. 양성 단면은 선택보다 기하가 먼저
- ⚠ **옛 저장분은 자동값과 다를 때만 선택으로 살림** — 같으면 자동이 그렇게 냈던 것이고
  다르면 사용자가 일부러 바꾼 것임. 설계 의도를 잃지 않으면서 굳은 값을 푼 것
  (오늘 `length_m` 에서 겪은 「저장분이 걸린 자리」를 같은 방식으로 처리)
- 화면 카드는 이제 **선택**을 읽어 상태를 세우고, 표시는 **결과**를 보임
- 파이썬·TS 짝 양쪽 + 호출부 여섯 곳(재계산·저장·확정·사토장·요청 스키마)

시험 다섯 추가 — 「결과를 다시 넣어도 자동이 계속 돎」이 그 잠금. 전체 616 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 13:10:47 +09:00
eomsangdonandClaude Opus 5 e71147c1b2 fix(B08): 코드 없는 줄에 막힘 표시를 붙임 — 금액이 조용히 빠지던 자리
랩탑 메인이 화면에서 잡음: 「측구터파기 · 굴삭기+브레카」가 work_item_code null
인데 blocked_kind 도 null 이라 아무 말 없이 금액만 빠졌음.

인계본의 bill_flag_warnings·unmatched_work_items 에는 이미 실려 있었음 —
목록은 있는데 줄에 표시가 없었던 것. 줄 단위로 보는 쪽(B09·화면)은 목록을 안 봄.
같은 모양이 여덟 줄이었음(흙깎기·측구터파기·도자운반 둘·덤프운반 둘·지장목제거·큰돌쌓기).

- 토공 줄: 코드가 없으면 시공법 미지정이면 input_missing, 매핑을 못 이었으면
  unit_data_missing 으로 갈라 답. 다음에 할 일이 다름(사용자 입력 vs 매핑 작업).
- 운반 줄: 같은 규칙. 무대(free_haul)는 품에 포함이라 안 세우는 것이지 막힌 게
  아니므로 표시를 안 답.
- 불변식 시험을 세움 — 코드도 막힘 표시도 없이 내역에 서는 줄이 하나라도 있으면 깨짐.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 13:10:22 +09:00
eomsangdonandClaude Opus 5 072f560a59 fix(B08): 옹벽 묶음 감사 둘 — 구조물 이름 코드값 노출 · 터파기 빠진 줄이 안 보이던 것
- 레지스트리 이름이 없으면 내역 줄 이름에 코드값이 그대로 떴음(`retaining_wall`).
  _Wording.type_label 이 이미 대비표를 들고 있으므로 그것을 씀 — 이제 「옹벽」으로 섬.
- 관측 원단위로 가는 구조물은 표에 터파기 줄이 없으면 그 구조물만 조용히 빠졌음.
  옹벽이 터파기 0 줄인데 사유도 안 났음(돌쌓기는 세 줄이 섬). 값을 지어내지 않고
  「터파기가 안 선 구조물」 줄을 in_bill False · blocked_kind unit_data_missing 로
  세워 빠졌다는 사실이 보이게 함.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 13:06:06 +09:00
eomsangdonandClaude Opus 5 036da3f9f9 refactor(B08): 인계 줄 파일 700줄 분리 — 준비공·배수관·연장·자재를 _Rows_Prep 로
777줄이던 _Handoff_Rows 를 565 + 255 로 가름. 줄의 모양은 안 바뀜 —
갈라낸 넷을 본체에서 다시 내보내 부르는 쪽 import 도 그대로임.
상태 낱말은 _Preparation_Status 한 벌에서 읽음.

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