- 서버 `kind_group()` 이 내는 갈래 둘에 한글 이름을 붙임. 상자 설명도 한 줄씩 —
기초단가는 「**얼마인가** · 때가 되면 갈아 끼우는 값」, 품셈 기준은 「**얼마나 드나** · 품셈·법령이 정한 계수」
- ⭐ **서버가 읽을 자리를 못박음** — `labels["base_price_groups"][group]["name_ko"]`.
지금 서버에 갈래 이름 읽는 코드가 아직 없어, 두 창이 서로 다른 자리를 보면
2026-09-15 의 「26칸이 영문으로 뜸」 사고가 되풀이됨
- 시험 둘 더함 — 서버가 내는 갈래마다 이름표에 이름이 있는지 · 상자마다 kind 가 서고
그 kind 이름이 영문 그대로가 아닌지(빈 상자·영문 상자 막음)
- 새 kind 열 15칸은 앞 커밋(`46fe2bc0`)에서 이미 이름 붙음 — 지금 영문으로 뜨는 열 0
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FFCnEYNH4tsS2MbHvzBhZk
- 안티그래비티가 찾아 준 주소 일곱(2026-09-16) — 제조노임(중소기업중앙회 kbiz 게시판 mnSeq=325) ·
기계·기계 운전경비(공사비원가관리센터 cost.kict.re.kr · CODIL 대체) · 자재(나라장터 g2b 가격정보) ·
유가 전국·지역(오피넷 평균판매가격 · API avgAllPrice/avgSidoPrice) · 요율(조달청 시설공사 제비율)
- 채운 줄은 `checked_on` 을 2026-09-16 으로 · 건설노임 한 줄은 2026-09-15 그대로
- 주소가 온 자리를 `policy.address_found_on` 에 적음 · 「주소를 지어내지 않는다」 방침은 그대로 둠
- 제조노임 비고에서 「받는 자리를 아직 못 받았다」 문구를 걷고 「최신 공표일은 게시판에서 봐야 함」으로 바꿈
- ⚠ 최신 공표일은 여전히 넷이 모름 — 자재·유가 셋은 수시·일별이라 한 날로 안 정해짐(주소와 별개)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FFCnEYNH4tsS2MbHvzBhZk
- kind 아홉을 이름표 `merged_tables` 에 더함(다섯 → **열넷**) — coef · material_surcharge ·
formwork_reuse · rebar_complexity · timber_structure_class · masonry_slope ·
masonry_back_length · stone_kind · masonry_class. 영문으로 뜨던 21칸 **0**
- ⚠ 구간 이름은 **원문 표기 그대로**(`~1.5`·`~3`·`~5`·`~7`·`7이상` · 돌 직경 `40~60`) —
열쇠의 몸이라 예쁘게 고치면 덮개가 주인을 잃음. 시험이 그 표기를 박아 둠
- 축 칸(`table`·`bond`·`face`·`height_bracket`·`stone_kind`·`back_length_cm`·`class`·
`soil_type`·`type_id`·`material`)은 이름에 「줄을 가리는 축 — 못 고침」을 적음
- `coef/source_rows`·`duplicate_note` 는 암괴 중복 두 줄을 한 줄로 합친 사유 칸으로 이름 붙임
- 줄 열쇠 아홉을 `row_keys` 에 더함 — 서버가 줄마다 내는 `@axis` 가 곧 열쇠 ·
넷은 **id 칸이 없어 축으로만 가려짐**(masonry_slope·masonry_back_length·stone_kind·masonry_class)
- 시험 셋 더함(12건) — 이름표 축이 서버 `@axis` 를 다 덮는지 · 구간 표기가 원문 그대로인지 ·
축 칸이 고칠 수 있는 칸으로 서 있지 않은지
- ⚠ 예외 하나 적어 둠 — `formwork_reuse.reuse_count` 는 갈래표에서는 **값**, 비율표에서는 **축**이라
서버가 한 판정만 내는 지금은 고칠 수 있는 칸으로 섬(판정 대기)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FFCnEYNH4tsS2MbHvzBhZk
- **이원화가 아님을 두 자리에 못박음** — `material_surcharge.original_tables`
「원문 표는 coef/surcharge_mat」 · `coef.variables.surcharge_mat.used_value_at`
「읽어 쓰는 값은 material_surcharge/rates_pct」. 저쪽은 원문 보관이라 읽는 코드가 0
- **암괴 중복 두 줄** — L·C 둘 다 첫 줄에 `duplicate_same_value`, 둘째 줄에 `hidden_duplicate` +
사유 「원문 두 줄 · 값 같음 — 화면에는 한 줄로 보임. 원문은 그대로 둠」.
⚠ 원본 줄은 안 지움 · `selection: pending` 과 「원문 오기 가능성」 주석 그대로 살림
⚠ 「역이 섞인 점질토」는 값이 달라 안 접음(L 1.35~1.4 ↔ 1.3~1.4)
- **참고 사례 갈래(`reference`) 새로 둠** — `structure_unit_observed`(울진소광 한 현장 관찰값) ·
`revetment_sabang`(교본값에 설명 글 섞임). 트리엔 남되 기초데이터가 아님(사용자 판정).
갈래 셈 로직 17 → 15 · 참고 사례 2
- 마스터 둘이 바뀌어 폴더 지문(`_manifest`) 둘 갱신 · 새 열 넷·값 묶음 둘 이름표 추가
- ⚠ `test_z01_master_data.py`(랩탑 메인)가 갈래 수를 박아 두어 함께 고침 — 데이터가 바뀌면
따라가야 하는 상수임
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FFCnEYNH4tsS2MbHvzBhZk
- 까닭 — 고르기 규칙이 「물품코드마다 가장 나중 공시」인데 값이 안 실린 공시(`prce=0`)가 옛 제값을 덮음.
각형강관 25*25*1.4t `1,460 → 1,500 → 0`. 「가격이 0」이 아니라 **그 공시에 값이 안 실린 것**임
- 새 규칙 `_build_mat_price.py` — **원천 스냅숏은 읽기만** · 마스터 0원 줄만 손댐 ·
6,999 중 **70 줄만 바뀌고 나머지 6,929 줄은 한 글자도 안 바뀜**(줄 수 그대로) · 0원 0 남음
- ⚠ 같은 날짜에 0 과 제값이 함께 실림(2025-04-24) — 날짜만 보면 0 을 집음.
**0 을 건너뛴 뒤** 가장 나중 공시를 고름
- 조용히 안 바꿈 — 줄마다 `price_adopted_reason` 「○ 공시에 값이 없어 ○ 값을 씀」 ·
공시 **날짜·번호도 채택한 공시의 것**으로(어느 판 값인지 화면에서 보임) ·
`selection_policy` 에 0 건너뛰기 명시 · 못 고칠 줄 자리 `zero_price_unrecovered`(오늘은 빔)
- 이름표에 새 열 「값을 고른 사유」 · 마스터가 바뀌어 폴더 지문(`_manifest`) sha·크기 갱신
- 새 시험 7건 — 0원이 남는지 · 사유가 붙는지 · 날짜·번호가 채택 공시와 같은지 ·
같은 날 0 과 제값이 섞여도 제값을 집는지 · 0원 아닌 줄을 안 건드렸는지 ·
앞 제값이 없으면 빨강이 아니라 목록에 남는지
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FFCnEYNH4tsS2MbHvzBhZk
- ⓐ 다섯 표 열을 **서버 응답 그대로** 다시 적음(열 88 = 노임 12 · 기계 23 · 자재 15 · 유가 10 · 요율 28).
⇒ 영문으로 떨어지던 19칸 0 으로 — 기계 6(`operating_effective_date`·`fuel_price_krw_per_l`·
`fuel_price_date`·`operator_daily_wage_krw`·`operator_wage_date`·`hourly_note`) ·
요율 13(`part`·`base_rule`·`embedded_in`·`manager_thresholds.…` 따위)
- ④ **요율 축을 한 칸으로 안 합침**(브레인 판정) — 등급·연도·공사 종류·대상액·추정금액·추정가격·
직접공사비·공사기간 여덟 축을 원문 칸 그대로 둠. 합치면 어느 축인지 사라지고 축이 둘 이상인 줄을
못 읽으며 `@id`(`{변수}/{목록}/{축=값;…}`)가 흔들림. 앞서 지어냈던 `item_key`·`bracket_basis` 는 걷음
- **「고칠 수 있나」를 이름표에서 뺌** — 서버 `spec()` 한 곳이 정함(판정 두 벌 금지)
- ⓑ 새 시험 `test_master_labels_base_prices.py` 9건 — ⭐ **영문으로 떨어지는 열이 있으면 빨강**.
이름표 파일이 아니라 **서버 응답**을 재므로 두 창이 갈리면 그 자리에서 잡힘 ·
묵은 열 이름표 · 요율 축 여덟 · 줄 열쇠에 축이 살아 있나 · 계산값 넷 잠김 · 단위까지 봄
- 왜 오늘 두 번 당했나 — 서버가 「못 찾으면 영문 key」로 **조용히 떨어지고**,
이름표 시험은 서버가 보는 자리를 안 봤음. 어긋나도 아무도 모르던 자리임
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FFCnEYNH4tsS2MbHvzBhZk