Merge remote-tracking branch 'origin/main_laptop_1' into sub_desktop_1

랩탑 메인이 건설 공종 축·목차 오기 고침·파일 쪼개기를 냈음. 충돌 셋 해소:

- **열쇠 벌**(`_Keys.py`) — 랩탑의 갈래별 매개(`key_prefix`·`general_roots`)를 취하고,
  내 잣대 읽기(`axis_policy.json`)를 되살려 **기본값이 자료에서 옴**
  ⇒ 랩탑이 코드로 되돌려 둔 `GENERAL_PROVISION_ROOTS` 는 잣대를 못 읽는 자리용 기본값으로만 남김
- **산림 마스터·지문** — 랩탑 것(코덱스 원문 대조로 표 넷 제자리 · 잎 358 → 360)
- **이름표** — 랩탑이 건설 kind 를 정식으로 냈으므로 내 「기다리는 자리」(`pending_merged_tables`) 버림 ·
  공용 `columns` 여덟과 값 낱말 여섯은 살림 · `toc_duplicate_rows` 이름표는 뺌
  (오기 고침으로 빈 목록이 되어 「묵은 이름표」가 됨 — 다시 생기면 그때 붙일 것)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QsGw1Dz9HmhuAxGisxmDPF
This commit is contained in:
2026-09-17 13:32:47 +09:00
co-authored by Claude Opus 5
21 changed files with 206573 additions and 2329 deletions
@@ -65,7 +65,7 @@
},
"work_item": {
"name_ko": "공종 축",
"summary": "**무엇을 하나** — 품셈 목차에서 일위대가가 붙는 잎 공종을 평평하게 편 목록(산림·건설). 읽기만."
"summary": "**무슨 일인가** — 품셈 목차가 세운 공종 나무를 잎으로 평평하게 편 목록(산림·건설). 줄의 열쇠는 `work_item_key`(FW·CW), 목차 번호는 칸이다. 읽기만."
}
},
"merged_tables": [
@@ -1366,7 +1366,7 @@
"sources": [
"work_item_master::work_items"
],
"rows_note": "잎 358 줄 · 갈래 펴면 618",
"rows_note": "잎 360 줄 · 갈래 펴면 620",
"columns": [
{
"key": "work_item_code",
@@ -1421,6 +1421,69 @@
"visible": true
}
]
},
{
"key": "work_item_const",
"name_ko": "건설품셈 기준",
"summary": "건설 품셈 공종 축의 잎 — 일위대가가 붙는 단위. 이름은 부문부터 전체 경로, 부모 마디 계산 규칙은 표 수준 `rules`.",
"sources": [
"work_item_master_const::work_items"
],
"rows_note": "잎 995 줄 · 갈래 키 아직 없음(편 수 = 잎 수)",
"columns": [
{
"key": "work_item_code",
"name_ko": "공종코드",
"unit": "",
"visible": true,
"note": "건설 목차 코드(CP-부문-장-절-항). ⚠ 불변 열쇠 아님 — 개정 때 번호가 밀림. 열쇠는 `@id`(CW-)."
},
{
"key": "number",
"name_ko": "품셈 번호",
"unit": "",
"visible": true
},
{
"key": "name",
"name_ko": "이름",
"unit": "",
"visible": true,
"note": "부문부터 전체 경로(「공통부문 › 토공사 › 굴착 › 굴착(인력/토사)」) — 부문마다 장 번호가 1부터라 부문이 뿌리."
},
{
"key": "variant_keys",
"name_ko": "갈래 키",
"unit": "",
"visible": true
},
{
"key": "pum_tables",
"name_ko": "딸린 품셈 표",
"unit": "",
"visible": true
},
{
"key": "rule",
"name_ko": "계산 규칙",
"unit": "",
"visible": true,
"note": "부모 마디 방식 — `choose_one`(아래 중 하나) · `sum_steps`(아래를 무게대로 더해야 한 단위)."
},
{
"key": "step_weight",
"name_ko": "단계 무게",
"unit": "",
"visible": true,
"note": "`sum_steps` 일 때만 — 건설은 아직 합산형 선언 없음."
},
{
"key": "effective_date",
"name_ko": "적용 시작일",
"unit": "",
"visible": true
}
]
}
],
"machine_cost_chain": {
@@ -1759,11 +1822,20 @@
{
"table": "work_item_forest",
"name_ko": "산림품셈 기준",
"verdict": "있음(임시) — 지금은 목차 코드 · 불변 열쇠 오면 그 칸",
"verdict": "있음",
"key": [
"work_item_code"
"work_item_key"
],
"checked": "잎 358공종코드 겹침 0(전수 · `test_z01_work_items`). 목차 번호라 품셈 개정으로 밀림 — 데스크탑 서브가 붙이는 불변 열쇠(FW-)가 오면 서버가 그 칸을 `@id` 로 씀(`Z01_MasterData_WorkItems.KEY_FIELD`)."
"checked": "잎 360불변 열쇠(FW-) 겹침 0(전수 · `test_z01_work_items`). 목차 코드(FP-)는 칸으로만 — 개정 때 밀림."
},
{
"table": "work_item_const",
"name_ko": "건설품셈 기준",
"verdict": "있음",
"key": [
"work_item_key"
],
"checked": "잎 995 줄 불변 열쇠(CW-) 겹침 0(전수 · `test_work_item_master_const`). 목차 코드(CP-)는 칸으로만 — 개정 때 밀림."
}
],
"null_is_real": {
@@ -1857,15 +1929,15 @@
}
},
"counts": {
"merged_tables": 16,
"merged_columns": 164,
"merged_tables": 17,
"merged_columns": 172,
"files": 34,
"tables": 92,
"columns": 472,
"value_groups": 176,
"columns": 471,
"value_groups": 177,
"unknown": 0,
"value_groups_by_kind": {
"doc": 110,
"doc": 111,
"value": 66
}
},
@@ -2066,7 +2138,7 @@
"name_ko": "공종에 못 붙인 표",
"summary": "목차 어디에도 못 붙인 품셈 표.",
"shape": "list",
"rows": 17,
"rows": 15,
"columns": [
{
"key": "pum_table_id",
@@ -2194,24 +2266,12 @@
]
},
{
"key": "toc_duplicate_rows",
"name_ko": "목차 번호가 겹친 줄",
"summary": "품셈 목차가 같은 번호를 두 번 적은 자리. 번호를 열쇠로 못 쓰는 실물이다.",
"key": "toc_corrections",
"name_ko": "목차 오기를 본문 번호로 바로잡은 줄",
"summary": "품셈 목차가 같은 번호를 두 번 적은 자리를 본문 절 제목 번호로 고친 기록. 목차만 믿으면 표가 딴 줄에 붙는다.",
"shape": "list",
"rows": 2,
"columns": [
{
"key": "toc_code",
"name_ko": "목차 코드",
"unit": "",
"visible": true
},
{
"key": "toc_number",
"name_ko": "목차 번호",
"unit": "",
"visible": true
},
{
"key": "name",
"name_ko": "이름",
@@ -2219,8 +2279,14 @@
"visible": true
},
{
"key": "slot",
"name_ko": "장부 자리",
"key": "toc_number",
"name_ko": "목차에 적힌 번호",
"unit": "",
"visible": true
},
{
"key": "body_number",
"name_ko": "본문 절 번호",
"unit": "",
"visible": true
}
@@ -2245,6 +2311,12 @@
"name_ko": "목차 판(고시)",
"summary": "목차 번호가 묶인 고시 판. 값이 아니라 **판을 가리키는 표**다.",
"kind": "doc"
},
{
"key": "toc_duplicate_rows",
"name_ko": "목차 번호가 겹친 줄",
"summary": "목차가 같은 번호를 두 번 적었는데 본문 번호로도 못 가른 자리. 비어 있어야 정상 — 줄이 생기면 표가 딴 줄에 붙는다.",
"kind": "doc"
}
]
},
@@ -7059,6 +7131,11 @@
"unit": "",
"visible": true
},
"body_number": {
"name_ko": "본문 절 번호",
"unit": "",
"visible": true
},
"bond_codes": {
"name_ko": "쌓기 방식별 공종코드",
"unit": "",
@@ -8676,72 +8753,104 @@
}
},
"unknown": [],
"pending_merged_tables": {
"note": "**서버가 아직 안 내는 kind** 의 이름표를 미리 지어 둔 자리. `merged_tables` 는 서버 kind 와 한 짝이어야 해서(묵은 열 시험) 여기 둔다. 서버가 kind 를 내는 날 **그대로 `merged_tables` 로 옮기고** `test_master_labels_cover.py` 의 `MERGED_KEYS` 에 한 줄 더할 것.",
"items": [
"work_item_axis": {
"note": "공종 축(불변 열쇠 FW·CW) 화면 이름표. 기초데이터 열넷 셈(`merged_tables`)에 섞이지 않게 여기 따로 둔다. Z01 이 이 구획을 읽어 상자 이름·열 이름을 뜨면 된다.",
"group": "work_item",
"kinds": [
{
"key": "work_item_forest",
"name_ko": "산림 공종",
"summary": "산림사업 표준품셈 목차가 세운 공종 나무.",
"source": "resources/data_work_item_master/work_item_master_2026-01-01.json",
"key_prefix": "FW"
},
{
"key": "work_item_const",
"name_ko": "건설품셈 기준",
"summary": "건설공사 표준품셈 공종 축의 잎 — 일위대가가 붙는 단위. 산림과 같은 칸·같은 규칙이다. ⚠ 자리만 먼저 냄 — 뽑는 일은 랩탑 메인, 덜어낼 잣대는 `axis_policy.json`.",
"sources": [
"work_item_master_const::work_items"
],
"rows_note": "아직 안 뽑음 — 원문 표 2,192 · 목차 줄 2,000 안팎 예상",
"columns": [
{
"key": "work_item_code",
"name_ko": "공종코드",
"unit": "",
"visible": true,
"note": "품셈 목차 코드(FP-). ⚠ 불변 열쇠 아님 — 개정 때 번호가 밀림. 열쇠는 `@id`(FW-)."
},
{
"key": "number",
"name_ko": "품셈 번호",
"unit": "",
"visible": true
},
{
"key": "name",
"name_ko": "이름",
"unit": "",
"visible": true,
"note": "뿌리부터 전체 경로(「토공 › 토사깍기 › 기계」) — 잎 이름만으론 겹침."
},
{
"key": "variant_keys",
"name_ko": "갈래 키",
"unit": "",
"visible": true
},
{
"key": "pum_tables",
"name_ko": "딸린 품셈 표",
"unit": "",
"visible": true
},
{
"key": "rule",
"name_ko": "계산 규칙",
"unit": "",
"visible": true,
"note": "부모 마디 방식 — `choose_one`(아래 중 하나) · `sum_steps`(아래를 무게대로 더해야 한 단위)."
},
{
"key": "step_weight",
"name_ko": "단계 무게",
"unit": "",
"visible": true,
"note": "`sum_steps` 일 때만 — 발파암 절취 0.1 · 깍기 0.9 · 집토 1."
},
{
"key": "effective_date",
"name_ko": "적용 시작일",
"unit": "",
"visible": true
}
]
"name_ko": "건설 공종",
"summary": "건설공사 표준품셈 목차가 세울 공종 나무(아직 안 뽑음).",
"source": "resources/data_cost_input_value/pum_const_2026.json",
"key_prefix": "CW"
}
]
],
"columns": [
{
"key": "work_item_key",
"name_ko": "공종 열쇠",
"unit": "",
"visible": true
},
{
"key": "path_name",
"name_ko": "전체 경로 이름",
"unit": "",
"visible": true
},
{
"key": "name",
"name_ko": "이름",
"unit": "",
"visible": true
},
{
"key": "toc_code",
"name_ko": "그 판 목차 코드",
"unit": "",
"visible": true
},
{
"key": "toc_number",
"name_ko": "그 판 목차 번호",
"unit": "",
"visible": true
},
{
"key": "toc_edition",
"name_ko": "목차 판(고시)",
"unit": "",
"visible": false
},
{
"key": "level",
"name_ko": "단계",
"unit": "",
"visible": true
},
{
"key": "axis_role",
"name_ko": "줄 구실",
"unit": "",
"visible": true
},
{
"key": "pum_tables",
"name_ko": "딸린 품셈 표",
"unit": "",
"visible": true
},
{
"key": "rule",
"name_ko": "계산 규칙",
"unit": "",
"visible": true
},
{
"key": "step_weight",
"name_ko": "단계 비중",
"unit": "",
"visible": true
}
],
"values": {
"axis_role": {
"work_item": "공종 — 품셈 표가 붙은 줄",
"group": "묶는 마디 — 표는 없고 아래를 고르는 자리(계산 규칙을 지닌다)",
"general_provision": "총칙 — 문서 구역이나 값표가 붙어 B09 가 읽는다",
"empty": "빈 잎 — 표도 아래도 없는 자리"
},
"rule": {
"choose_one": "아래 하나를 고름",
"sum_steps": "아래를 단계로 다 더함"
}
}
}
}