docs(verification): 계획서 8·9장 완료분 근거를 원문 그대로 이관

끝난 항목의 조사·근거·검증 원문은 계획서에 안 남기는 것이 사용자 확정 규칙임.
계획서에는 결과 한두 줄만 두고 원문 22건을 이 파일로 통째로 옮김.

- 함께 옮긴 것: 항목이 이미 닫혀 자리를 잃은 고아 근거 두 덩어리.
- 살아 있는 정보는 계획서에 한 줄로 남김 — 마스터가 반쯤 빈 것, 야면석 규격 넷에 값이
  없는 것, 공구손료가 붙을 밑수가 아직 0 인 것, 유가 지역 자동 연동을 안 한 것,
  수송비에서 우리가 정한 둘, 품 할증이 임도 토공용이 아니라는 것.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-10 00:23:54 +09:00
co-authored by Claude Opus 5
parent 3edc60a5ae
commit c4d37d48d4
@@ -0,0 +1,407 @@
# 계획서 8·9장 완료분 근거 — 원문 이관 (2026-09-09 밤 작업분)
> 규칙(2026-09-09 사용자 확정) — **끝난 항목의 조사·근거·검증 원문은 계획서에 안 남긴다.**
> 계획서에는 결과 한두 줄만 두고, 원문은 여기에 **통째로, 그대로** 옮긴다.
> ⚠ 계획서에 이 파일 경로를 적지 않는다(링크도 쌓인다) — 찾는 일은 위키·graphify 몫.
옮긴 항목 **22건** (B08 8장 · B09 9장의 `- [x]` 완료분).
- [x] **밑수 단위 「인」 6건 중 넷이 오독****이미 고쳐져 있었음**(커밋 `4fc5b38d`, 2026-09-09 11:46).
**자체검증 (2026-09-09 밤, 데스크탑 메인)** — 코드·데이터 대조만 하고 손대지 않음.
· 규칙 = `person_basis_ok`(`B08_Quantity_Build_WorkItemMaster.py`) — 「인」·「공」은
**앞에 숫자가 붙었을 때만** 밑수로 인정. 표 위 본문·표 안 두 갈래 모두에 물려 있음.
· 실측 = 마스터 전수에 **「인」 밑수로 선 공종 0건**. 드론방제·지상방제·야면석 채집·
휘발유는 밑수 「미확보」로 서 있음(0.36㎥ 같은 없는 값이 안 섬).
· 안 사라졌는지 = 2-2-5 천공기는 「천공인부 **1인당** 1대」라 `("인", 1.0)` 그대로 섬.
· 시험 = `test_b08_master_basis_person.py` 5개 통과.
ⓘ 아래 옛 메모는 **무엇을 왜 골랐는지**의 근거라 남겨 둠.
⚠ 2026-09-09 재판정 — **데스크탑 보조의 「참조 따라가기」와 같은 집안**이라 겹칠 수 있음.
`F0228`·`F0229`(드론방제 → **ha당**) · `F0230`(지상방제 → 차량살포) ·
`F0401`(야면석 채집 → **㎡·㎥당**) · `F0046`(휘발유 → **/대/일**) 넷이 오독이고,
`F0068`(천공기 「천공인부 **1인당** 1대」)만 맞음.
**고치는 방향** — 밑수 「인」은 원문에 「<숫자>인당」이 그대로 있을 때만 인정.
**넓게 「인」을 통째로 버리면 2-2-5 가 사라짐** — 좁게 고칠 것.
지금 값에는 안 걸리나 방제·야면석 계열이 서는 날 소요량이 통째로 틀림.
- [x] **안내 문구 둘이 사실과 어긋나던 것** `[잔손질]`**둘 다 닫힘.**
✅ 타설 문구는 **조건이 붙었음**(`is_default` 가 아닐 때만 뜸 — `UI_Page.ts:598`).
**동바리 문구** — 구조물 수를 함께 보게 고침(2026-09-09 밤, 데스크탑 메인).
**자체검증**`B08_Quantity_UI_MaterialGrid.ts` 의 조건에 `structure_count > 0` 을 더함.
· 화면 실측(공용 브라우저 새 탭, 구조물 원단위 탭) —
**구조물 0개 프로젝트**(`5cff3920`): 머리말 「구조물 0개…」만 뜨고 **동바리 줄 없음**.
**구조물 6개 프로젝트**(`79da822d`): 동바리 줄이 **전과 같이 그대로 뜸**.
· 두 프로젝트 모두 서버 응답은 `shoring.applicable=false`**같음** — 갈린 것은 화면뿐이라
값·금액 변화 없음. 보던 프로젝트는 원래대로 되돌려 놓음.
- [x] **관 줄 밑감 — 연장(m)** `[밑감 들어옴 · 남은 것은 ㉠㉡㉢ 답 대기]` 앞서 「브라우저에만 있으니 서버로 옮기거나 저장 때 남겨야 한다」로
갈래를 냈는데, **그 계산이 이미 서버 Node 로 돌고 있었음**`computeCardCulvert`
`B06_Section_Server_Calc_Node.ts``recompute_server_side` 로 [저장]·[확정] 때 돎
(구조물 폐회로 면적이 그 길로 정본에 실림). ⇒ **그 다리에 값 한 줄 더 실으면 됨.**
랩탑 창이 측점 `design`**`pipe_length_m`**(m 단위 올림 끝난 값)로 넣기로 함.
B08 은 `get_cross_section_designs` 로 그 자리를 이미 읽으므로 **읽는 코드를 새로 안 만듦.**
⚠ 값이 정본에 실리려면 그 프로젝트에서 **[저장] 한 번**이 필요함.
ⓘ 이 줄이 서기 전에 위 ㉠·㉡·㉢ 이 먼저 정해져야 함(2026-09-09 에 한 줄에 뭉쳐 있던 것을 가름).
**밑감은 들어왔음**(2026-09-09 밤 확인) — 랩탑이 측점 `design.pipe_length_m` 자리를 만들었고
(`B06_Section_Schema` · `_Server_Calc_Prebuild` · `_Structure_Layouts`), **B08 이 그 값을 읽고 있음**
(`B08_Quantity_Engine_Pipe`). ⇒ **남은 것은 ㉠·㉡·㉢ 사용자 답뿐임.**
- [x] **밑수 대조 가드 — 내역에 실리는 줄은 이제 전부 대조됨** (2026-09-09 밤 마무리 · 커밋 `8a78927d`)
**자체검증 (2026-09-09 밤, 데스크탑 메인)** — 「반은 놀고 있음」은 **이제 옛말임.**
· 실측 — 프로젝트 `79da822d` 인계에서 **내역에 실리는 25 줄 중 24 줄이 이미 대조되고 있었고**,
못 보던 것은 **`FP-11-01` 가설창고(개소) 한 줄뿐**이었음.
· 그 한 줄을 채움 — 품셈 11-1 은 절 머리에 「(단위: …)」가 없어 **마스터가 못 채우는 자리**라,
매핑 통로에 **원문 근거와 함께 「개소」**를 적음([주]① 「설치 또는 해체 시에 각각」 ·
[주]③ 「트럭크레인 사용시간은 **1개설치당** 2시간」).
· 매핑에 `ancillary`(준비공 부대시설) 절을 만들고 **그 절도 대조에 쓰이게** 함.
· **⇒ 지금 내역 25 줄 = 대조 25 줄.** 일부러 `개소``m` 으로 보내면 가드가
「보내는 단위 「m」가 품셈 밑수 「개소」와 다릅니다」로 잡는 것을 시험으로 못 박음.
· 전체 **1245 통과 · 실패 0**.
**마스터 자체는 여전히 반쯤 빔** — 밑수 단위가 선 공종 **163/477**, 단위 빈 일위대가 **48**.
다만 그 나머지는 **우리가 안 쓰는 공종**(조림·방제 계열)이라 **지금 금액에는 안 걸림**.
쓰기 시작하는 날 그 공종의 원문 줄을 매핑에 적으면 그날 대조가 섬(통로는 이미 있음).
ⓘ 아래 옛 기록은 **무엇을 어떻게 채웠는지**의 근거라 남겨 둠.
- [x] ~~**⚠⚠ 밑수 대조 가드가 반은 놀고 있음 — 마스터가 비어서**~~ `[옛 기록]` (2026-09-08 실측) —
**오늘 「단위가 조용히 어긋난 자리」가 여섯 번** 났고(개소가 미터로 · 준비공 표 통째로 ·
B군 코드 빔 · 성분 줄 안 감 · 돌쌓기 m↔㎡ · **층따기 ㎡↔㎥**) 앞의 다섯은 이제 가드가
잡는데 **여섯째는 마스터에 밑수가 없어 못 잡았음.**
- [x] **⚠ 견적가격은 4순위임 — 화면 문구 이미 있음** (2026-09-09 확인)
`B09_Estimation_Lists_Sources.py:111` 「견적을 넣을 때는 업체명·견적일을 함께 남기십시오 —
국가계약법 시행령 §9 의 4순위(앞의 셋으로 정할 수 없을 때)라 근거가 남아야 합니다.」
~~(국가계약법 시행령 제9조) —~~
①거래실례가격 ②원가계산 ③표준시장단가 ④「①②③에 의할 수 없는 경우 감정가격·
유사 거래실례가격 또는 **견적가격**」.
⇒ **사급 단가에 견적을 쓰려면 「앞의 셋이 없다」는 것이 전제**임. 화면에 그 사유를 남길 것.
- [x] **층따기 — 사전 문구 고침** `[잔손질 — 사전 한 줄]` (2026-09-09 완료)
**자체검증**`원가_출력변수_사전` B2-9 줄의 밑수를 **「㎡·m」 → 「㎥」**로 고치고,
비고에 **왜 두 축이 있는지**를 적었음(화면·집계는 면적이 정본이고 길이 칸을 곱해 ㎥ 로
내보냄 · 확정 2차 ①). 종전 표기가 두 축을 한 칸에 적어 **㎡ 로 내도 되는 것처럼** 읽히던
자리임. 코드는 이미 ㎥ 로 내보내고 있어 **수치 변화 없음** — 전체 시험 1182 통과·실패 0.
**어긋남 자체는 닫혔음** — 확정 ① 로 **면적이 정본**이고 **길이 칸을 곱해 ㎥** 로 냄
(화면 칸 `ab51fa38` · 인계 줄이 그 길로 섬).
**남은 것은 사전 문구 하나**`원가_출력변수_사전 B2-9` 가 아직 **「㎡·m」**로 적혀 있어
품셈 9-18(㎥) 과 어긋난 채임. **다음 사람이 또 ㎡ 로 낼 자리**라 한 줄 고칠 것.
**높이·폭 수치는 전수로도 없음이 확정** — 교본 **세 곳**(6장 4절 · 15장 부록 4-3 ·
성토_비탈면)이 전부 「**설계도서에 명시되어 있는 높이와 폭으로**」 같은 문장임.
- [x] **`_manifest.json``pum_std_drawing` `deferred` 사유 문구** `[잔손질]` — 우리 말로 고침.
**자체검증 (2026-09-09 밤, 데스크탑 메인)**
· 옛 문구 「current technical DB identifies this as an unresolved source gap」 를
**「구조물 표준도 원단위(옹벽·날개벽·집수정 규격별 콘크리트·거푸집·철근량)를 담을 자리.
품셈·교본에 표가 없어 실무 구조물 일람표에서 뽑아야 하는데 그 자료가 아직 안 들어옴
— 자료 확보 대기」** 로 바꾸고, `source_needed`(무엇을 받아야 하나) ·
`knowledge_ref`(지식DB 근거 자리) 두 칸을 함께 붙임.
· 근거 = `원가_입력변수_사전 G6` 「pum_std_drawing … **현행 공백 E1**(실무 일람표 추출 필요)」.
· JSON 다시 읽어 파싱 확인. **이 파일을 읽는 코드는 없음**(장부 파일) — 값·화면 변화 없음.
**문구를 바꾸는 것과 자료를 받는 것은 다른 일임** — 표준도 원단위 자체는 여전히 대기이고,
그 대기 줄은 9-6 「날개벽·집수정 원단위」 쪽에 살아 있음.
⚠ 같은 `deferred` 의 나머지 셋(`mat_rebar`·`mat_remicon`·`asphalt_concrete`)은 **영어 그대로 둠**
— 지시가 이 한 줄이었음. 우리 말로 맞추려면 따로 한 번에 할 것.
- [x] `[반나절]` **돌 무게 인자표** — 「뒷길이 × 0.77 × 2.65」, 야면석은 0.42.
**이미 들어가 있었음**(커밋 `252e6b54`, 2026-09-09 12:08) — 「미착수」는 계획서가 안 지워진 것.
**자체검증 (2026-09-09 밤, 데스크탑 메인)** — 코드·시험 대조만 하고 손대지 않음.
· 자리 = **B08 한 벌**. `B08_Quantity_Engine_UnitQuantity.stone_weight_per_m2` 하나를
돌쌓기·골막이(같은 파일)와 기슭막이·바닥막이(`_Revetment`)가 함께 부름 — 두 벌이 아님.
· 갈래 = **계산식이 기본**(`0.77 × 2.65`), **야면석 계열만 관측표**. 야면석은 공극이 커
같은 식이 안 맞아 원문 값을 그대로 씀(35→0.575 · 45→0.880 · 55→1.100 ton/㎡ ·
돌붙임(메) 0.42 ton/㎡ — 울진 소광 원단위 라이브러리 L103).
· 잠정 표시 = 줄 근거에 「⚠ 잠정 — 실무자 협의 후 명확히 할 값」이 붙어 화면까지 나감.
· 시험 = `test_b08_coeff_and_strength.py` 둘(관측표 갈래 · 계산식 갈래) 통과.
**남는 자리 하나** — 야면석은 뒷길이 **25·30·60·75 에 값이 없어** 그 규격에서는 돌 줄이
안 서고 사유만 남음(원본에 없는 칸을 지어내지 않는 규칙 그대로). 돌붙임 0.42 를 끌어다
메우고 싶어지는 자리인데 **밑수가 다른 표**(돌쌓기 비탈면적 ↔ 돌붙임 평면적)라 안 합침.
- [x] `[잔손질]` **공구손료 칸** — 「지금은 안 넣되 숫자 넣으면 되게 열어 둘 것」.
⇒ B09 **기초자료 탭 「산출 조건」에 칸 하나**를 세움 — `공구손료·잡재료 (주재료비의) [ ]% [적용]`.
근거는 **산림품셈 1-2-6**(주재료비의 2~5%까지, 산정 근거 명시) — 화면에 원문을 그대로 붙임.
**자체검증 (2026-09-09 밤, 데스크탑 메인)**
· 값이 **비면 줄 자체가 안 섬** — 금액 한 원도 안 움직임(시험 `test_비면_한_원도_안_움직인다`).
· 넣으면 **재료비**로 붙고 밑수는 **자재 줄만** — 노무·경비, 하위 일위대가 재료비는 안 듦.
· **상한 5% 초과는 거절**(400) — 조용히 깎아 넣지 않음. 화면에 사유가 그대로 뜸.
· 화면 왕복 실측(공용 브라우저 새 탭, 프로젝트 `79da822d`) — 빈 칸 → 3% [적용] →
「지금 3% 로 붙고 있습니다」 → 6% [적용] → 「⚠ … 5% 까지입니다 … 받은 값 6%」 →
칸 비우고 [적용] → 「비어 있어 안 붙고 있습니다」. **끝나고 빈 칸으로 되돌려 놓음**
(`project_settings.json``misc_material_percent` = `""` 확인).
· 시험 8개 신설(`resources/tester/test_b09_misc_material.py`), 전체 **1189 통과 · 실패 0**.
**지금은 넣어도 붙을 밑수가 없음** — 일위대가에 **주재료비가 선 공종이 0개**임(자재는
자재대 표에서 따로 금액이 섬 · 사급 단가는 확정 5차 큰 것 8 로 대기 중). 그 사실을
**칸 밑에 그대로 띄움** — 안 그러면 값을 넣고도 왜 안 붙는지 모름. 사급 단가가 서는 날
이 칸이 함께 살아남.
**곁다리로 고친 것** — 비율 줄(제잡비·공구손료)이 **저장했다 다시 읽으면 사라지고 있었음**
(`B09_Estimation_Storage``percent_of_parent` 만 적고 있었음). 둘 다 적도록 고침.
- [x] `[반나절]` **유가 지역 단가** (2026-09-09 밤, 데스크탑 메인) — 화면에서 시도를 고르면
그 지역 공시가로 **기계 연료비가 다시 섬**. 근거는 품셈 8-1-7 5호.
**「자료가 다 있음」은 사실이 아니었음** — 받아 둔 것은 **전국평균 한 벌**뿐이었고
시도별 값은 아예 안 받아 와 있었음(`_meta.md` 의 「지역별 조회 **지원**」은 API 가 된다는
말이지 자료가 있다는 말이 아니었음). 그래서 **자료부터 받고** 코드를 이었음.
**자체검증 (2026-09-09 밤)**
· 받은 것 = 오피넷 `avgSidoPrice.do` 시도별 판매가(휘발유·경유) 스냅샷 →
`original/원가계산/유가_오피넷/유가_시도별_2026-09-09.json`,
프로그램용 데이터셋 `oil_regional_2026-09-09.json`(`_manifest.json` 에 등재).
수집 스크립트에도 그 호출을 더해 **다음에 또 받을 수 있게** 함.
· 화면 = 기초자료 탭 「환율및기초자료 ③」의 **「유가 적용 범위」 칸**. 전과 달리 잠겨 있지 않고
**전국 공시가 + 시도 16곳**(값을 함께 보임)을 고름. 고르면 저장되고 프로젝트에만 걸림.
· 화면 실측(공용 브라우저 새 탭, 프로젝트 `79da822d`) — 서울 고름 →
경유 **1,886.15 · 지역 공시가 · 2026-09-09 · oil_regional**, 되돌림 →
**1,846.39 · 전국 공시가 · 2026-08-14 · oil**. **끝나고 전국 공시가로 되돌려 놓음.**
· 값이 실제로 갈리는지 = 기계 시간당 사용료 `X-0101-0019` 전국 148,450.48 → 서울 149,603.52.
· 시험 6개 신설(`test_b09_fuel_region.py`), 전체 **1197 통과 · 실패 0**.
**원천의 시도 가름이 행정구역과 다름** — 17줄 중 `00`이 전국, `20`이 「전남광주」 한 줄이고
`07`(전남)·`16`(광주)은 없음. **원문 이름·코드를 그대로 두고 쪼개지 않음**(자료에 적어 둠).
**현장 소재지 자동 연동은 안 함** — 프로젝트의 「사업 지역」은 자유 글(「울진군 금강송면」)이라
시도 코드로 옮기려면 규칙을 지어내야 함. **사용자가 고르는 칸**으로 두었음.
자동으로 잇고 싶으면 프로젝트 등록에 **시도 칸**이 하나 있어야 함(다음 물음거리).
- [x] `[하루+]` **기계 수송비를 세웠음** (2026-09-09 밤, 데스크탑 메인 · 커밋 `fdc30ecf`)
「기계경비 = 기계손료 + 운전경비 + **수송비**」인데 셋째 몫이 통째로 없었음. `FP-10-04`
중기운반이 그 수송비이고 표가 「미판정」이라 **단가가 아예 안 서고** 있었음.
**세운 방법 — 원문 그대로**
· 산림품셈 10-4 사이클 — 트레일러(20TON) `t1=20·t3=20·t4=0.42` / 트럭(10.5TON)
`t1=10·t3=10·t4=5` · `㎝=t1+t2+t3+t4` · `N=60×0.9/㎝`, **단위는 회당**.
· 속도(t2) — 건설품셈 8-1-6의 2 나 이동속도표(도로 구분별). 원문이 「-」로 둔 칸
(트레일러·고속4차선)은 **지어내지 않고 사유로 냄.**
· 새 파일 `B09_Estimation_Transport.py`(190줄) — `UnitPrice.py` 가 이미 1,106줄이라 안 보탬.
**⚠ 우리가 정한 둘 — 원문이 안 정해 화면 근거에 그대로 적었음**
㉠ t2 속도를 **자주식 이동속도표**에서 가져옴(그 표는 자주로 이동할 때의 표라 쓰임이 꼭
같지는 않음) · ㉡ t2 를 **왕복**으로 봄(건설품셈이 「왕복 수송비」라 못 박음).
**실무자 확인이 붙으면 좋은 자리.**
**자체검증**
· 거리·도로 구분은 **설계 입력** — 비면 줄이 안 서고 사유만 남음(임의 거리 금지).
· 화면 실측(기초자료 → 산출 조건) — 편도 12㎞ · 사리도로(양호) 넣으니
**트레일러 227,838원/회 · 트럭 149,507원/회**. 비우니 「거리가 안 들어와 줄을 안
세웠습니다」로 되돌아감. **끝나고 두 칸 다 비워 놓음**(설정 파일 확인).
· 시험 9개 신설(`test_b09_transport.py`), 전체 **1225 통과 · 실패 0**.
**⚠⚠ 곁다리로 잡은 큰 것 — 운전경비 표가 페이지에서 잘려 39 기종이 통째로 버려지고 있었음**
8-4-3 표가 페이지를 넘기며 앞자리를 다시 안 적어(`0080 0100 …` 로 시작) 코드 열 판독이
통째로 실패했음. 그 안에 **수송 차량(2702 트레일러)** 이 들어 있었음.
**앞 표의 앞자리를 이어받되 카탈로그에 있는 코드일 때만** 받게 함. 운전경비 줄 **92 → 158**.
ⓘ 지금 서는 일위대가 값은 **하나도 안 바뀜**(그 기종들을 쓰는 임도 공종이 아직 없음) —
수송비를 세울 수 있게 된 것이 이 고침의 값어치임.
**아직 버려지는 표 하나** — 8-4-5 콘크리트기계는 규격 칸이 22, 나머지가 21 로 어긋나
그대로 버려 둠(억지로 맞추면 기종과 연료가 어긋나 붙음).
- [x] `[잔손질]` **미공표 직종 신뢰도 플래그** (2026-09-08 제기 → 2026-09-09 완료)
**자체검증** — 노임 자료의 `reliability` 기호를 읽어 **노임 제목·화면 요약**까지 이었음.
```
읽는 자리 `load_labor_reliability()` — 원문 기호 `*`·`**` 그대로. 정상 직종은 안 담음
싣는 자리 `PriceTitle.reliability` — 노임 제목 전부 + **조종원 줄**에도 같이 붙임
경고 자리 `build_summary` 의 `labor_reliability` → 화면 힌트 줄(⚠ 노란 글씨)
```
⚠ **금액을 막지 않음** — 값은 그대로 서고 「조사현장이 적다」는 사실만 나름.
⚠ **내역에 실제로 실린 것만** 경고함 — 카탈로그 40직종을 다 띄우면 쓰지도 않는 직종이
화면을 채움. 실측 결과 **둘**이 잡힘: `1037 벌목부 [*]` · `1050 일반기계운전사 [*]`
(지식DB 가 예로 든 임도 빈발 직종이 그대로 나옴).
시험 여섯을 새로 세움(`resources/tester/test_b09_labor_reliability.py`) — 원문 기호를
우리 낱말로 바꾸지 않는지 · 정상 직종이 안 담기는지 · 카탈로그 전체를 안 띄우는지까지 검.
전체 시험 **1182 통과 · 실패 0**.
> ⓘ **메모(할 일 아님)** — 불도저 19톤 이상은 암석작업 손료 보정 제외
> (`기계경비_산정 §3 [주]①`). 우리 불도저가 **정확히 19톤**이라 파쇄암·발파암에
> **+25%를 붙이면 안 됨.** 지금 안 붙이고 있어 맞음 — 보정을 넣는 날 걸릴 자리.
- [x] `[다시 셈 끝 · 2026-09-09 밤]` **표를 못 읽어 값이 안 서는 자리 — 다시 센 수**
**⚠ 세는 자리를 바꿨음** — 「표 몇 장이 안 읽히나」는 겁만 주고 할 일을 못 가림(안 읽히는 표
대부분이 조림·방제라 임도에 안 쓰임). **「내역에 실릴 줄인데 금액이 안 서나」로 세는 것이 맞음.**
**표 (마스터 기준)** — 전체 475 · 공종에 붙은 것 **456** · 안 붙은 것 **19**.
형태별로 요구량형 279 · **미판정 76** · 참조 66 · 계수 19 · 시공능력 16.
**일위대가** — 코드 **286** · 공종 기준 **143**, **286 전부 금액이 0 보다 큼**(빈 껍데기 없음).
**⚠⚠ 진짜 구멍 셋 — 내역에 실리기로 돼 있는데 단가가 아예 없음** (프로젝트 `79da822d` 인계 54줄 실측)
| 공종 | 물량 | 왜 안 서나 |
|---|---|---|
| `FP-09-16-01` **성토(노체포설)** | **13,150.2 ㎥** | 원문에 「= ㎥/시간」 식이 셋 다 있는데 **절 머리에 「(단위: …)」가 없어 마스터가 표를 못 붙임** — 그 공종에 붙은 표가 **계수(K·f·E) 한 장뿐** |
| `FP-09-17-01` **성토면다짐** | **12,350.3 ㎡** | 같은 까닭. 원문 L5368 「A = 77.7 ㎡/시간」이 있는데 **붙은 표가 0장** |
| `FP-10-12` **덤프 운반** | 174.6 ㎥ | 운반거리·적재용량·단위중량 — **설계 입력 대기**(아래 사토장 줄과 같은 것) |
⇒ **앞의 둘은 같은 병**이고 **자료도 원문도 다 있음**(매핑 파일 `basis_source` 가 원문 줄번호까지
적어 둠: L5322·L5336·L5363 · L5368). **표를 그 공종에 붙이는 일**만 남음 — 아래에 줄로 세움.
ⓘ 함께 나온 것 — 겉으로는 「단가 못 찾음」 열 줄인데 **일곱은 갈래로 서 있는 것**이었음
(`FP-10-11#토사` 처럼 `#갈래`로 섬). **갈래를 셈에 넣지 않으면 있는 금액도 없다고 셈.**
- [x] `[반나절]` **⚠⚠ 성토·성토면다짐에 단가가 서게 함** (2026-09-09 밤, 데스크탑 메인 · 커밋 `4a6254ba`)
**막힌 까닭이 하나가 아니라 둘이었음** — 앞서 「단위 표기」 하나로 짚었던 것은 절반만 맞았음.
| 공종 | 막혔던 까닭 | 푼 방법 |
|---|---|---|
| 9-16-1 **노체포설** | 계수표(K·f·E·㎝)는 붙었는데 **기종이 [주]에만 있어** 못 고름 ⇒ 시공능력 공식이 안 돎 | 흙깎기(9-3-2)와 **같은 장비 칸**을 둠 — 무한궤도 굴착기 0.7㎥([주]① 그대로), 화면에서 바꿀 수 있음 |
| 9-17-1 **비탈면 다짐** | **표가 한 장도 없음** — 값이 절 제목에 있음(「A = 77.7 ㎡/시간」) ⇒ 표만 보는 조립이 그 공종을 아예 안 봄 | **제목·[주]에만 있는 작업량**을 싣는 자리를 두고 원문 문구를 줄에 남김 |
ⓘ **곁다리로 하나 더 나옴** — 부착 콤팩터 `0240-0007` 이 **카탈로그에 이름이 비어** 있어
손료가 통째로 안 붙고 있었음. 이름 대신 **분류번호로도** 가리게 함(조합 사용 넷은 그대로,
목록을 넓힌 것이 아님). 그래서 본체 굴착기가 **조합 사용 층(잡재료 16%)** 으로 바뀌어 섬.
**자체검증 (프로젝트 `79da822d`)**
· 단가 — 성토 **4,522.9원/㎥** · 성토면다짐 **1,443.4원/㎡**. 단위는 원문 그대로(㎥·㎡).
· 금액 — 성토 **59,477,858원** · 성토면다짐 **17,827,251원** ⇒ **합 77,305,109원**이 새로 섬.
같은 셈으로 **세부 줄 금액 합 31,276,630 → 108,581,739원**(약 3.5배). ⚠ **작은 자리가 아님.**
· 화면 실측 — 설계내역서에 `2-5-1 성토 ㎥ 13,150.19 · 4522.9 · 59,477,858` ·
`2-6-1 성토면다짐 ㎡ 12,350.32 · 1443.4 · 17,827,251` 로 뜸(전에는 단가·금액 칸이 비었음).
· 시험 6개 신설(`test_b09_fill_and_slope_price.py`), 전체 **1214 통과 · 실패 0**.
ⓘ **노체다짐(9-16-2)은 아래 줄로 옮겼음** — 단가는 세웠고 남은 것은 「셀 것인가」임.
- [x] `[하루+]` **`FP-10-04` 중기운반 · `FP-09-14-02` 다짐(플레이트 콤펙터) — 또 다른 식** — **둘 다 섰음**
(2026-09-09 밤 · 커밋 `fdc30ecf` · `6cf7de9e`)
· **중기운반** = 기계 수송비. `㎝=t1+t2+t3+t4 · N=60×0.9/㎝` 그대로. **거리·도로 구분을 넣으면 섬**
(편도 12㎞·사리도로 양호에서 트레일러 227,838원/회 · 트럭 149,507원/회).
· **플레이트 콤펙터** = 다짐 식 둘째. 롤러가 `V·W·E·D·f/N` 인데 콤펙터는 `A·N·H·f·E/P` 임.
**원문이 답까지 적어 두어**(「∙ = 4.26 ㎥/시간」) 표 계수로 셈한 값과 맞대는 시험을 둠.
단가 **14,509.5원/㎥**(손으로 미는 소형 장비라 ㎥당이 비쌈).
ⓘ 이제 우리가 아는 식은 넷임 — 굴착기 사이클 · 불도저 · **다짐 둘**(롤러·콤펙터) + 수송 사이클.
- [x] `[다시 셈 끝 · 2026-09-09 밤]` **어느 공종에도 안 붙은 표** — **19 그대로**(읽는 길이 셋 는 것과
무관함: 그 셋은 **붙은 표를 어떻게 읽나**의 이야기이고, 여기는 **붙었나 안 붙았나**의 이야기임).
**19 를 뜯어보니 임도에 쓰일 것은 하나뿐임.**
· **15장 = 조림·숲가꾸기 사례표**(풀베기·덩굴제거·솎아베기·산물수집 등 부록 2-3~2-17) — 임도 밖.
· **2장(`F0248`·`F0257`) = 표가 아니라 「…참조」 한 문장**이 표로 잘린 것.
· **1장(`F0364`) = 12-17-3 「무근진동기 제외」** [주] 조각.
· **⚠ 1장(`F0375`) = 12-27-1 지수판 설치** — 이것만 구조물에 쓰일 수 있음. 다만 **지금 인계에
지수판 줄이 없어** 값이 빠진 자리는 아님. 구조물에 지수판이 서는 날 함께 볼 것.
- [x] `[하루+]` **품의 할인·할증 26계열 — 칸을 세웠음** (2026-09-09 밤, 데스크탑 메인 · 커밋 `f6f51f33`)
**⚠⚠ 앞서 이 줄에 적혀 있던 「임도는 산지경사 할증이 늘 걸릴 자리로 보임」은 추정이었고,
원문을 다시 읽어 뒤집었음.** 다음 창이 또 붙이려 들지 않게 여기 적어 둠.
· 26계열의 **[주]가 거의 다 조림·숲가꾸기·방제 전용**을 지목함 — 1-4-1 「덩굴·뿌리제거 /
**어린나무가꾸기에 한하여**」 · 1-4-2 「**줄베기**」 · 1-4-3 「**소반별**」 ·
1-4-4·1-4-5(평균경사도) **드론 방제** · 1-4-9 「숲가꾸기·병해충방제 **작업로**」 ·
1-4-25 「도서·오지·민통선」.
· ⇒ **임도 토공에 붙이라는 지시가 원문에 없음.** 임의로 붙이면 근거 없는 할증임.
**붙는 자리 = 일위대가의 품(인력) 줄** (「어디서 붙이나」의 답)
근거 — 원문 제목이 「1-4. **품**의 할인·할증」이고 1-6 라 표가 직접노무비를 품셈으로 냄.
⚠ **B08 물량에 곱하면 자재·기계까지 부풀어** 그것이 곧 ㉠ 계열 이중계상임.
**자체검증**
· 화면 = 기초자료 → 「품의 할인·할증 (산림품셈 1-4) — 고른 것만 붙습니다」. 계열마다 고르는
칸 하나 + **[주] 원문 그대로**. 기본은 「안 고름」.
· 화면 실측 — 안 고름: 「한 계열도 안 골라 한 원도 안 움직이고 있습니다」 →
1-4-1 「6월∼9월 10%」 고름: 「지금 10% 가 품에 붙고 있습니다」, 일위대가 **육상 암절취(2~3m)
노무 67,664.8 → 74,224.1 · 합계 72,333.4 → 78,892.6** → 되돌리니 원래 문구.
**끝나고 안 고름으로 되돌려 놓음**(설정 파일 확인).
· 품이 늘면 **제잡비 밑수도 함께 늘도록** 줄 차례를 지킴(할증 줄이 제잡비보다 먼저).
· 밑수는 **사람 품만** — 기계 층 안의 조종원 노임은 안 셈(제잡비와 같은 규칙, 시험으로 못 박음).
· 시험 7개 신설(`test_b09_labor_surcharge.py`), 전체 **1234 통과 · 실패 0**.
⚠ **율 표는 24개임** — 1-4-24(「**장비품의** -20%」·방제 전용)와 1-4-26(율이 아니라
**적용시공량 규칙** `Q=B/2`)은 성격이 달라 이 칸에 안 담음. 버린 것이 아니라 다른 것임.
- [x] **공구손료·잡재료 2~5 % — 칸을 세웠음** (2026-09-09 데스크탑 메인, `83c842e3`)
9-11 둘째 줄과 **같은 일감이었음**(한 항목이 두 절에 서 있었음). B09 기초자료 탭
「산출 조건」에 칸이 서고 **기본은 빔** — 넣으면 주재료비의 %로 재료비에 붙음
(`B09_Estimation_PriceBook.py:155,209,248`). 몇 %인지는 사용자 몫으로 남음.
~~(2026-09-08) — `품셈_적용기준.md §1`~~
「명시 없을 시 **주재료비의 2~5 %** 별도 계상(산정 근거 명시)」.
**범위값이라 어느 값을 쓸지 확정 대기**임.
⇒ **2026-09-09 확인: 지금은 안 붙고 있음**(공구손료 층이 하나도 없음). 이중계상 걱정은
없고, **「2~5% 중 몇 %」 하나만 정하면 붙일 수 있음.**
⇒ **2026-09-09 밤: 칸을 세움**(9-11 둘째 줄) — B09 기초자료 탭 「산출 조건」. 기본은 빔.
남은 것은 **사용자가 몇 %인지 정하는 것**과, 붙을 밑수인 **주재료비가 일위대가에 서는 것**
(사급 자재 단가 — 확정 5차 큰 것 8).
- [x] `[하루+]` **설계서 구성표를 세웠음 — 「못 내는 다섯」을 다시 가름** (2026-09-09 밤 · 커밋 `e38b8323`)
**화면** — 원가계산에 **「설계서 구성」 탭**. 법이 적은 차례 그대로 열셋을 놓고 줄마다
**상태(있음·반쪽·없음) · 누가 만드나 · 어디서 나오나 · 못 내면 무엇이 필요한가**를 적음.
**⚠ 다시 가른 결과 — 「우리가 못 내는 다섯」이 아니라 「우리가 더 낼 것 셋」이었음**
```
있음 7 예산내역서 · 일위대가표 · 단가산출서(B09) · 수량계산서 · 자재총괄표 · 토적표(B08) · 목차(이 표)
남 몫 3 일반시방서 · 특별시방서 · 예정공정표 ← 설계자·발주청이 쓰는 문서
우리 3 공사설명서(없음) · 각종 중기경비계산서(반쪽) · 산출기초(반쪽)
```
· **법이 목차를 정했다고 열셋을 다 프로그램이 만들 것은 아님** — 시방서 둘은 표준시방서를
인용하고 현장 특기사항을 적는 문서이고, 예정공정표는 공기를 공종에 나누는 **설계 판단**임.
우리는 공사기간(일)만 받아 요율 구간에 쓰고, 그것으로 공정표를 지어내지 않음.
· **공사설명서는 값이 거의 다 있음** — 공사명·총공사비·유효폭·노견·설계속도·종단구배·
최소곡선반경. **받아야 할 것은 서식과 설계하중 표기**(실무 거창은 「DB-18(32.45T)」).
· ✅ **중기경비계산서 — 세웠음**(2026-09-09 밤 · 커밋 `23f9656e` · `3934bd8d`).
원가계산 → **중기** 탭의 목록표 아래에 **기종마다 한 장**. 취득가·내용시간·손료계수
(상각 750 + 정비 583 + 관리 478 = 1,811 처럼 원문 10⁻⁷ 그대로) → 시간당 손료 ·
주연료와 유가 · 조종원 일당과 시간당 환산 · 시간당 사용료 3분할을 차례로 보임.
**내역에 선 기종 17 장**만 냄(카탈로그 613 을 다 뿌리지 않음).
⚠ **부착 장비는 손료만 드는 것이 정상**이라 결함으로 안 셈(제 엔진이 없어 연료·조종원이
본체에 듦 — 건설품셈 제8장 [주]⑤).
⚠ **같은 기종이 두 장일 수 있음** — 조합 사용이면 잡재료가 16% 로 줄어 재료비가 달라짐
(굴착기 0.7 재료비 26,130 → 24,845). 갈래를 적어 두 장임을 밝힘.
⚠ **수송비는 이 장에 안 붙임** — 「회당」으로 서는 별개 공종이라 자리만 가리킴.
· 계산서 합계가 **일위대가가 실제로 쓰는 값과 같은지** 시험으로 못 박음(두 벌 방지).
⇒ **「설계서 구성」이 반쪽 → 있음**으로 바뀌어 **법이 정한 13 중 8 이 섬**
(우리가 더 낼 것 **둘** — 공사설명서 · 산출기초).
· **산출기초도 반쪽** — 근거 문구는 줄마다 있으나 **한 장으로 묶는 자리**가 없음.
⚠ **사방사업은 목록이 다름** — 사방사업법 [별표0] 은 **위치도·관계지적조서·공사원가계산서·
설계도면**을 더 두고 「예산내역서」 대신 「설계내역서」라 적음. 이 표는 임도(별표2) 기준임.
**자체검증** — 화면 실측으로 열셋이 차례대로 뜨는 것과 요약 한 줄을 확인. 시험 6개 신설,
전체 **1258 통과 · 실패 0**.
- [x] ~~`[하루+]` **⚠⚠ 설계서 목차가 법에 통째로 박혀 있었음 — 우리가 못 내는 것 다섯**~~ `[옛 기록]` (2026-09-08 별표2 원문)
**별표2 (5)(가)** — 「설계서는 **목차·공사설명서·일반시방서·특별시방서·예정공정표·예산내역서·
일위대가표·단가산출서·각종중기경비계산서·공종별 수량계산서·각종 소요자재총괄표·토적표·
산출기초** 순으로 작성한다」
- [x] `[반나절]` **제비율 데이터에 밑수·처리 규칙까지 실었음** (2026-09-09 밤, 데스크탑 메인)
**자체검증** — 금액은 한 원도 안 움직임(계산은 그대로, 데이터가 그 계산을 적게 됐을 뿐).
· 빠져 있던 밑수 한 칸(건설기계대여대금 지급보증수수료 = 직접공사비)을 채움.
이제 **밑수 칸이 빈 요율이 없음**(시험이 그것을 셈).
· `processing_rules` 로 실은 것 — 자르는 법(줄 원 단위 버림 · 관급자재대만 천원 올림) ·
안전관리비 A·B 두 식과 **1.2**(B 배수)·**1.1**(관급 부가세 제수) · **조달수수료 차감 없음** ·
이윤 밑수(순공사원가+일반관리비−재료비) · 규모 구간 판정(추정가격, 없으면 반복 수렴).
· **거울 시험 6개**(`test_b09_rate_rules_mirror.py`) — 데이터가 적은 밑수로 실제 금액이 서는지
비목마다 맞대 보고, 두 수(1.2·1.1)와 자르는 법도 코드와 대조함. **한쪽만 바뀌면 멈춤.**
· 전체 **1208 통과 · 실패 0** (랩탑 병합 뒤 한 번 더 돌려 같음).
ⓘ **계산을 데이터로 옮긴 것이 아님** — 계산은 코드에 그대로 두고, 데이터가 **그 규칙을 적어
두게** 했음. 옮기려면 엔진을 다시 짜야 하고 그 자리에서 금액이 흔들림.
## 곁딸린 고아 근거 두 덩어리 (항목이 이미 닫혀 자리를 잃은 것)
```
마스터 공종 477 · 표 있는 것 364 · 밑수 단위가 선 것 167 ← 나머지 None
우리가 쓰는 공종 28 중 마스터가 아는 것 18 · 매핑이 채운 것 1 · ⚠ 모르는 것 9
FP-05-24 씨앗뿜어붙이기 · FP-09-03-02 기계(흙깎기) · FP-09-04 암절취 · FP-09-05 발파암
FP-09-16 노체 · FP-09-17-01 비탈면 다짐 · FP-10-11 불도저 운반 · FP-10-12 덤프 운반
FP-12-06 콘크리트 포장(인력시공)
```
⚠ **특히 운반 둘과 암절취·발파암** — 금액이 큰 자리임.
✅ **통로는 냈음** — 매핑에 원문 밑수를 적을 수 있게 함(`basis_unit` + `basis_source` =
**어느 원문 줄에서 읽었는지**). **원문 줄만 오면 그날 붙음.**
✅ **일곱이 원문 줄과 함께 확정됨**(2026-09-08 B09) — 기계(흙깎기) `` L4704 ·
**암절취 `` L4725·L4738** · **발파암 `` L4744·L4777** · 노체 `` L5322·L5336·L5363 ·
비탈면 다짐 `` L5368(**성토면다짐이 ㎡ 인 근거**) · **불도저 운반 `` L5919** ·
**덤프 운반 `` L5928·L5971·L5985`**. **⇒ 걱정하던 넷(운반 둘·암절취·발파암)이 전부 `㎥` 로 확정.**
남은 둘 — 씨앗뿜어붙이기(원문에 단위 표기 자체가 없음) · 콘크리트 포장
(「(단위: 일당)」 = **품의 단위라 거절**).
**넓히다 규칙이 한 번 샜음** — 상위 절이 하위만 단위를 적는 경우를 채우게 넓혔더니
**「13. 돌공사」가 ton 으로** 나왔음(하위 열여섯 중 하나가 장 전체를 대표). 좁힌 규칙 —
㉠ 장 자체엔 안 줌 ㉡ **말한 하위가 둘 이상**이고 ㉢ 값이 하나로 모일 때만. 짝 시험 있음.
**단위 빈 일위대가 73 → 61.**
```
있음 예산내역서·일위대가표·단가산출서(B09) · 수량계산서·자재총괄표·토적표(B08)
없음 목차·공사설명서·일반시방서·특별시방서·예정공정표 ← 문서류(만들지부터 결정)
없음 ⚠ 각종중기경비계산서 ← 문서가 아니라 **산출물**
반쪽 산출기초 — 근거 문구는 있으나 별도 장이 없음
```
**「무엇을 내야 하나」가 법에 목록으로 있음.** 앞서 B09 가 찾은 **중기경비계산서**가
그 목록 안에 있는 것이 확인됨.