knowledge(M01): PLAN 7-5 「고친 뒤」 — 분석 문서 셋에 결과 기록
- 분석·데이터만(코드 변경은 앞 커밋에 이미 있음) · ref/_분석_안쓰는마스터.md· _분석_UnitPrice.md·_분석_검사코드_어디에.md 에 고친 뒤 절 추가 - PLAN.md 7-4·7-5 체크 갱신(심볼릭 링크 밖 공유 파일이라 git 대상 아님) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
This commit is contained in:
@@ -31,3 +31,12 @@
|
||||
- **지금 당장은 문제 없음** — 산림 쪽 기본 파일명으로 매번 정상 작동, 시험도 그 경로로 통과 중.
|
||||
- **잠재 문제 하나**: `load_basis_missing()`은 파일이 없으면 예외 없이 **빈 딕셔너리로 조용히 넘어감**(516~517행 `if not os.path.exists(path): return {}`). `old/` 를 지우는 날(그게 이 폴더들의 최종 목표) 이 함수를 안 옮기고 그대로 두면 **에러 하나 없이 밑수 검사가 통째로 사라짐** — 10배·100배 틀린 금액이 아무 경고 없이 내역서에 설 수 있음. 걷기 전에 반드시 먼저 옮겨야 할 항목으로 표시해 둠.
|
||||
- 건설 벌(3,164줄)은 이미 아무도 안 읽어 지금 걷어도 즉시 영향 없음 — 다만 건설 견적 기능이 나중에 켜질 때 필요한지는 그때 확인.
|
||||
|
||||
## 고친 뒤 (2026-09-22 PLAN 7-5 ⑤ · 브레인 판정 「새 마스터 JSON 쪽」)
|
||||
|
||||
- 이 문서를 쓴 뒤(일감 34) `B09_Estimation_UnitPrice.py` 자체가 7-3 에서 **`old_code/` 로 통째로 옮겨짐** — 지금은 부르는 살아 있는 자리가 0(다시 짤 때 참고용).
|
||||
- 그래도 데이터는 최상위 마스터로 옮김 — `resources/master_data/기준수량없음_산림품셈_2026-01-01.json`(옛 `old/2_공종_산림_밑수없음_2026-01-01.json`, 산림 벌만 — 건설 벌은 원래부터 안 읽혀 그대로 `old/` 에 둠).
|
||||
- `load_basis_missing()` 의 기본 파일명·자리를 새 파일로 바꿈 — 겸사겸사 **숨은 버그 하나 바로잡음**: 7-3 이 파일을 `old_code/` 로 옮기며 뿌리 경로 계산(`dirname` 두 번)이 한 단 모자라져, 그동안 조용히 빈 딕셔너리만 돌려주고 있었음(경고했던 「old/ 지우는 날 조용히 사라짐」이 이미 벌어져 있었던 셈).
|
||||
- 견본 대조 — 새 자리에서 79건 읽힘(`F0042`·`F0447` 등 값 대조 확인), old/ 옛 자리는 파일 자체가 없어짐(git mv 로 옮김, 복제 안 함).
|
||||
- `check_master.py` 의 「틀」 검사는 이 파일 하나만 이름으로 면제(8장 표·요소 틀에 안 맞는 특수 자료라 억지로 맞추지 않음) — `check_master.py 틀` 전체 재실행 0건 확인.
|
||||
- `test_b09_table_reading_2.py`(직접 단위시험)는 `conftest.py` 의 `test_b09_*` 제외 글롭에 이미 걸려 있어 안 돎 — B09 를 마스터 얼개로 다시 짤 때 같이 되살릴 것(이번 범위 밖).
|
||||
|
||||
@@ -32,6 +32,11 @@
|
||||
|
||||
결론 — 완전히 같은 검사를 옮겨 합칠 기존 자리는 없음. 옮긴다면 **자리(마스터 JSON이냐 코드 상수냐)를 새로 정하는 일**임.
|
||||
|
||||
## 고친 뒤 (2026-09-22 — 브레인 판정: 갈래 A)
|
||||
|
||||
- 「값이니 코드 상수보다 마스터가 맞음」 판정대로 갈래 A(새 마스터 JSON)로 옮김 — `resources/master_data/기준수량없음_산림품셈_2026-01-01.json`.
|
||||
- 8장 표·요소 틀에 억지로 맞추지 않음(구조를 건드리면 값을 지어낼 위험) — `schema_version`·`items` 모양 그대로 옮기고, `check_master.py` 「틀」 검사는 이 파일 하나만 이름으로 면제. 자세한 건 `ref/_분석_UnitPrice.md` 「고친 뒤」.
|
||||
|
||||
## ④ 옮긴다면 어디 — 두 갈래(고르지 않음)
|
||||
|
||||
**갈래 A — 새 마스터 JSON으로(`resources/master_data/` 최상위, M01 이 관리)**
|
||||
|
||||
@@ -115,3 +115,46 @@ B05·B06 화면과 시험 2개가 지금도 부름.
|
||||
- `old/` 는 이미 4개 파일로 B05·B06 화면을 떠받치고 있어 **7-5 에서 `old/` 를 통째로 지우면 안 됨** —
|
||||
7-4 세 번째 체크(공종 마스터를 `old/` 에 두되 버리지 않음)와도 들어맞음.
|
||||
- `old/` 안의 21개(54,244줄)는 이미 옮겨져 있고 아무도 안 읽음 — 「지울 후보」 로 7-5·사용자 몫에 넘김.
|
||||
|
||||
## 고친 뒤 (2026-09-22 PLAN 7-4·7-5)
|
||||
|
||||
**① 다시 훑은 결과 — 품셈재료 이관·B05B06 자료 복귀로 그림이 바뀜**
|
||||
|
||||
- 품셈재료(`재료_품셈재료.json`)가 7-4b 에서 이미 `old/` 로 옮겨짐 — 로직의 MP 직접참조는 0.
|
||||
- B05·B06 전용 자료 둘(돌쌓기경사·사방기슭막이치수)이 옛 자료 정리 때 실수로 `old/`·`ref/` 에 같이 쓸려 들어간 것을 되짚어 `resources/data_masonry/`(옛 이름)로 되돌림 — 바로 앞 일감.
|
||||
- 그 결과 「절대 옮기면 안 되는 것 6개」 가운데 **진짜 살아 있던 건 그 둘뿐**(B05·B06 화면이 직접 읽음). 공종 마스터 2·공종 산림건설 연결·공종 자원별칭은 `common_util_work_item_key.py`·`common_util_work_item_link.py`·`common_util_aliases.py` 를 거쳐 old_code(끊긴 B08·B09)만 읽고 있었음 — B05·B06 은 안 읽음(`ref/_분석_B05B06_옛자료.md` 가 코드로 확인).
|
||||
|
||||
**② 아무도 안 읽는 파일 7개를 `old/` 로 옮김(지우지 않음)**
|
||||
|
||||
| 파일 | 옛 자리 | 줄 수 | 옮기기 전 재확인 |
|
||||
|---|---|---|---|
|
||||
| `_원문목록.json` | `resources/master_data/` | 201 | 코드 0곳(문서만 언급) |
|
||||
| `_열목록_화면표.csv` | `ref/` | 45 | 코드 0곳 |
|
||||
| `수량_돌쌓기찰라이브러리_소광리_2026-01-01.json` | `ref/` | 285 | 코드 0곳 |
|
||||
| `공종_수량연결_실무_2026-01-01.json` | `ref/` | 691 | old_code(`B08_Quantity_Engine_Handoff_Mapping.py`)만 — old_code 자체가 안 돎 |
|
||||
| `수량_구조물원단위_울진_2026-01-01.json` | `ref/` | 652 | old_code(`B08_Quantity_Engine_ObservedUnit.py`)만 |
|
||||
| `품셈_산림_재료할증_울진_2026-01-01.json` | `ref/` | 181 | old_code(`B08_Quantity_Engine_MaterialSummary.py`)만 |
|
||||
| `품셈_산림_돌종류계수_울진_2026-01-01.json` | `ref/` | 164 | old_code(`B08_Quantity_Engine_UnitQuantity_StoneSpec.py`)만 |
|
||||
| `공종_자원별칭_실무_2026-01-01.json`(167) | `ref/` | 167 | `common_util_aliases.py` → old_code 5곳 + 시험 2개(이미 `ModuleNotFoundError` 로 깨져 있었음 — 실제로 도는 자리 0) |
|
||||
|
||||
임의 결정 한 줄 — 「약한 후보(old_code 정리 뒤에나)」로 미뤄 뒀던 4개도, B08·B09 가 이미 7-3 에서 통째로 `old_code/` 로 옮겨져 **아무것도 안 부르는 게 확인돼** 이번에 같이 옮김(더 미룰 까닭 없음).
|
||||
|
||||
**③④ old/·ref 를 아직 읽는 코드 — 전부 센 목록**
|
||||
|
||||
| 자리 | 파일 | 무엇을 읽나 | 왜 | 끊을 수 있나 |
|
||||
|---|---|---|---|---|
|
||||
| 살아 있던 공용 모듈 | `common_util_work_item_key.py` | `old/2_공종_*_마스터_*.json` | old_code(B08 인계·B09 인계)만 부름 | **끊음** — `old_code/common_util/` 로 옮김(경로 계산만 한 단 보정, 가리키는 대상은 그대로 `old/` 공종 마스터) |
|
||||
| 살아 있던 공용 모듈 | `common_util_work_item_link.py` | `old/2_공종_산림건설_연결_*.json` | old_code(B09 청구서)만 부름 | **끊음** — 위와 같이 옮김 |
|
||||
| 살아 있던 공용 모듈 | `common_util_aliases.py` | `ref/공종_자원별칭_실무` | old_code + 깨진 시험 2 | **끊음** — `old_code/common_util/` 로 옮기고 대상 파일도 `old/` 로 |
|
||||
| 시험(살아 있던 자리, 이미 깨짐) | `test_b09_fuel_kind_vibrator.py`·`test_b08_root_removal_excavator.py` | 위 aliases 경유 | B08·B09 옛 엔진(ModuleNotFoundError) | **끊음** — `old_code/resources/tester/` 로 옮김(7-3 이 놓친 것) |
|
||||
| 빌더 도구 | `resources/master_data/scripts/_migrate_base.py` | `old/` 여럿 | 옛 인력·재료 값을 새 표로 한 번 옮긴 대조 밑감 | 못 끊음 — 이관이 옳았는지 되짚는 게 이 도구의 목적 |
|
||||
| 빌더 도구 | `build_시설자재가격.py` | `ref/_없는_재료.md` | `--count` 로 몇 줄 남았는지 셈 | 못 끊음 — 사람이 손으로 돌리는 검사 도구 |
|
||||
| 빌더 도구 | `update_관급단가_보강.py` | `ref/_관급_보강_후보.json`(씀) | 관급단가 보강 후보를 파일로 냄 | 못 끊음 — 출력 자리일 뿐 |
|
||||
| 이관 대조 시험 | `test_masterdata_check.py`·`test_자재품목_분류.py` | `old/재료_품셈재료.json` | 7-4b 이관(옛→새)이 맞았는지 옛 값과 대조 | 못 끊음 — 대조가 시험의 목적 자체 |
|
||||
| 원가계산 엔진(옛 코드) | `old_code/B09_Estimation/B09_Estimation_UnitPrice.py`(`load_basis_missing`) | `old/2_공종_산림_밑수없음` → **새 최상위 마스터로 이관**(아래 ⑤) | 밑수(기준수량) 없는 표를 가려냄 | 이관함 — 자리는 최상위로, 함수는 old_code 에 그대로(다시 짤 때 참고) |
|
||||
|
||||
**⑥ 끝 수 — `old/`·`ref/` 를 읽는 코드**
|
||||
|
||||
- **실제로 돌아가는 로직 코드 = 0곳**(오늘 셋 다 끊음).
|
||||
- 남은 것은 성격이 다른 둘뿐 — 사람이 손으로만 돌리는 검사·빌더 도구 **5곳**(전부터 그랬음, 자동으로 안 돎) · 이관이 맞았는지 대조하는 시험 **2곳**(끊으면 검사 자체가 없어짐).
|
||||
- `old/` 안의 나머지(공종 마스터 2·산림건설 연결·21개 안 읽는 옛 파일)는 삭제 후보로 그대로 사용자 몫에 남김.
|
||||
|
||||
Reference in New Issue
Block a user