feat(B08): 콘크리트 구조물 관측 원단위 + 품셈 몫 표시

⑩ 콘크리트 구조물. 품셈에 구조물별 표준 물량표가 없어(구조물_수량.md ·
배수공_수량.md §2) 실무 설계원본 관측값을 데이터 파일로 둠.

- `resources/data_structure_unit/` — 반중력식옹벽 H=2.0(m당) · 돌집수정 ㄷ/ㄴ형 ·
  집수정 Ø800 · 콘크리트포장 T=20cm. 줄마다 출처를 실음.
- 규격 정확 일치로만 씀. 보간하지 않음 — H=1.6 을 H=2.0 에서 줄여 쓰면 틀림
  (기초·벽 두께는 높이에 비례하지 않음). 안 맞으면 「원단위 미확보」로 드러내고
  표에 있는 규격을 함께 알림.
- BOX암거·세월교는 관측값도 없고 저장 제원에 두께가 없어 전개식도 못 세움.
  `not_found` 에 사유와 함께 남기고 미확보로 냄 — 두께를 지어내면 콘크리트·
  거푸집·철근으로 번져 나감.
- 성분마다 `basis_kind`(derived/observed)를 달아 화면에 「치수 전개 / 실무 관측」
  으로 보임. 두 근거가 한 표에 섞이므로 안 적으면 되짚을 수 없음.
- 배수관의 유입부 집수정을 별도 줄로 세움. 품셈도 관부설과 집수정을 다른
  공종으로 둠 — 한 줄로 합치면 어느 쪽 물량인지 못 가름.

품셈 몫 표시 (조율 창 제보 교차 확인)
- `인력(10%)`·`장비(90%)` 처럼 딱지가 비율을 달고 오는 표 25건 확인. 형태 판정은
  정상(requirement)이었으나 **장비 몫이 시공능력 공식이라 값이 아님**을 아무도
  알 수 없었음. `resource_shares`·`partial_ratio` 를 실어 「단가가 일부만 선 것」이
  정상으로 흘러가지 않게 함. 공식 기호는 첫 표에만 있고 뒤 표가 물려받으므로
  기호 유무가 아니라 몫 유무로 판정 — 기호로 세면 절반을 놓침(9-13-2).

반영률 계약 갱신 — breakdown 을 늘 실음(`application_ratio_breakdown` ·
`quantity_breakdown`). `application_ratio_pct` 는 두 율이 같을 때만 채우는 편의값.

검증 — 관측 원단위 17건 · 인계 43건 · 품셈 23건 통과, 전체 548 passed. tsc 오류 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-08 00:38:18 +09:00
co-authored by Claude Opus 5
parent 96c304ac35
commit 513769796f
9 changed files with 1909 additions and 8 deletions
@@ -0,0 +1,121 @@
{
"schema_version": "1.0",
"dataset_id": "structure_unit_observed",
"effective_date": "2026-01-01",
"note": "콘크리트 구조물의 **관측** 원단위표. 품셈에는 구조물별 표준 물량표가 없어(구조물_수량.md · 배수공_수량.md §2) 실무 설계원본에서 뽑은 값이다.",
"policy": {
"basis": "observed",
"no_interpolation": true,
"no_invented_dimensions": true,
"notes": [
"⚠ 관측값은 **그 규격에서만** 맞다. 규격이 다르면 비례로 늘리지 않는다 — 벽 두께·기초는 높이에 비례하지 않는다.",
"⚠ 규격이 표에 없으면 「원단위 미확보」로 드러낸다. 가까운 값을 갖다 쓰지 않는다.",
"⚠ 줄마다 basis 를 싣는다 — 치수에서 나온 값(derived)과 한 표에 섞이기 때문이다."
]
},
"sources": {
"uljin_library": {
"doc": "울진소광 구조도 숨김탭 원단위 라이브러리",
"path": "resources/knowledge/original/실무문서/_원단위라이브러리_울진소광.md"
},
"uljin_compare": {
"doc": "종합비교 04 — 임도 구조물 원단위 (울진 1공구 수량집계표 관측)",
"path": "resources/knowledge/original/실무문서/_종합비교/04_임도구조물_원단위.md"
}
},
"entries": [
{
"type_id": "retaining_wall",
"spec": { "form": "반중력식", "height_m": 2.0 },
"unit": "m",
"source": "uljin_library",
"source_note": "§7 옹벽류 — 반중력식옹벽 H=2.0",
"components": [
{ "name": "콘크리트", "unit": "㎥", "amount": 1.35, "destination": "unit_price", "basis_note": "기초 0.75 + 벽체 0.60" },
{ "name": "버림콘크리트", "unit": "㎥", "amount": 0.15, "destination": "unit_price" },
{ "name": "유로폼", "unit": "㎡", "amount": 3.2, "destination": "unit_price", "basis_note": "배면+전면" },
{ "name": "합판거푸집", "unit": "㎡", "amount": 0.6, "destination": "unit_price", "basis_note": "기초" },
{ "name": "물구멍", "unit": "m", "amount": 0.32, "destination": "material", "basis_note": "Ø50" },
{ "name": "이형철근 D13", "unit": "kg", "amount": 13.45, "destination": "material" },
{ "name": "이형철근 D16", "unit": "kg", "amount": 30.42, "destination": "material" }
]
},
{
"type_id": "pipe_inlet_basin",
"spec": { "inlet_basin_form": "돌집수정 ㄷ형" },
"unit": "개소",
"source": "uljin_compare",
"source_note": "관보호공 돌집수정 ㄷ형 /개소",
"components": [
{ "name": "콘크리트", "unit": "㎥", "amount": 4.03, "destination": "unit_price" },
{ "name": "모르터", "unit": "㎥", "amount": 0.157, "destination": "unit_price" },
{ "name": "터파기", "unit": "㎥", "amount": 21.1, "destination": "earthwork", "basis_note": "토사 14.8 + 암 6.3 — 지반 구분은 토공집계가 다시 가름" },
{ "name": "되메우기", "unit": "㎥", "amount": 2.6, "destination": "earthwork" },
{ "name": "잔토처리", "unit": "㎥", "amount": 18.5, "destination": "earthwork" }
]
},
{
"type_id": "pipe_inlet_basin",
"spec": { "inlet_basin_form": "돌집수정 ㄴ형" },
"unit": "개소",
"source": "uljin_compare",
"source_note": "관보호공 돌집수정 ㄴ형 /개소",
"components": [
{ "name": "콘크리트", "unit": "㎥", "amount": 2.69, "destination": "unit_price" },
{ "name": "모르터", "unit": "㎥", "amount": 0.096, "destination": "unit_price" },
{ "name": "터파기", "unit": "㎥", "amount": 16.4, "destination": "earthwork", "basis_note": "토사 4.9 + 암 11.5" },
{ "name": "되메우기", "unit": "㎥", "amount": 1.2, "destination": "earthwork" },
{ "name": "잔토처리", "unit": "㎥", "amount": 15.2, "destination": "earthwork" }
]
},
{
"type_id": "pipe_inlet_basin",
"spec": { "inlet_basin_form": "□형(기본형)", "inlet_basin_material": "콘크리트", "pipe_diameter_mm": "800" },
"unit": "개소",
"source": "uljin_library",
"source_note": "§2 집수정 Ø800 — 내부 3.0×1.0×1.2, 벽 0.2, 바닥기초 3.4×1.4×0.2",
"components": [
{ "name": "콘크리트", "unit": "㎥", "amount": 2.84, "destination": "unit_price" },
{ "name": "합판거푸집", "unit": "㎡", "amount": 21.28, "destination": "unit_price" },
{ "name": "이형철근 D13", "unit": "kg", "amount": 4.78, "destination": "material" },
{ "name": "면목", "unit": "m", "amount": 12.67, "destination": "material", "basis_note": "A25" },
{ "name": "터파기", "unit": "㎥", "amount": 10.64, "destination": "earthwork" },
{ "name": "되메우기", "unit": "㎥", "amount": 6.44, "destination": "earthwork" },
{ "name": "잔토처리", "unit": "㎥", "amount": 4.2, "destination": "earthwork" }
]
},
{
"type_id": "ford_pavement",
"spec": { "thickness_cm": 20 },
"unit": "㎡",
"source": "uljin_compare",
"source_note": "콘크리트포장 T=20cm /㎡",
"components": [
{ "name": "레미콘", "unit": "㎥", "amount": 0.2, "destination": "unit_price" },
{ "name": "와이어메쉬", "unit": "㎡", "amount": 1.16, "destination": "material" },
{ "name": "터파기", "unit": "㎥", "amount": 0.2, "destination": "earthwork" },
{ "name": "잔토처리", "unit": "㎥", "amount": 0.2, "destination": "earthwork" }
]
}
],
"not_found": {
"note": "규격은 우리 모델에 있으나 **관측 원단위가 어디에도 없는** 것. 지어내지 않는다.",
"items": [
{
"type_id": "box_culvert",
"why": "울진 2공구에 BOX암거가 실재하나 원단위 라이브러리에 탭이 없음. 게다가 structures.json 의 BOX 제원은 body_width_m·body_height_m 와 날개벽뿐이라 **벽·저판·상판 두께가 없어 전개식도 못 세움**.",
"needs": "표준 단면(벽·저판·상판 두께) 확보 — 사용자 확정 대기"
},
{
"type_id": "ford_bridge",
"why": "세월교 본체(날개벽 포함) 원단위 없음. 관 부분은 pipe 로 따로 섬.",
"needs": "표준도 물량 또는 실무 관측"
},
{
"type_id": "retaining_wall",
"spec": { "form": "반중력식", "height_m": 1.6 },
"why": "울진 2공구에 H=1.6 이 실재하나 수치가 라이브러리에 없음. H=2.0 값을 비례로 줄이지 않음 — 기초·벽체는 높이에 비례하지 않음."
}
]
}
}