일감 4·5 의 엔진 덩어리. PLAN 8-11·8-3·8-7.
프로젝트 설정 (common_util/common_util_project_settings.py)
자리 = <project_root>/project_settings.json, 루트의 project_manifest.json 옆.
매니페스트 stages 는 단계 산출물 목록이고 설정은 두 페이지가 함께 읽는
프로젝트 값이라 단계 폴더에 넣으면 주인이 애매해짐.
구획 quantity(B08) · estimation(B09) — 남의 구획은 읽기만.
⚠ 경계를 코드로 막음 — save_section() 이 이름 붙은 한 구획만 갈아 끼우고
통째로 쓰는 함수를 두지 않음. 두 페이지가 같은 파일을 쓰므로 통째로 덮으면
상대 값이 사라짐(오늘 main.py 에서 같은 모양의 사고를 이미 겪음).
⚠ *_override 기본은 None — 「안 정했으면 config 정본을 씀」. 기본값을 복사해
넣으면 정본이 바뀌어도 옛 프로젝트가 안 따라옴.
⚠ dataset_versions 는 기록이지 정본이 아님 — 되살릴 때 쓰는 정본은 프로젝트
스냅샷이고 어긋나면 스냅샷이 이김.
estimation.rate_dataset 은 「연도」가 아니라 판을 가리킴 — 제비율은 연중에도
개정됨(현행판 2026-04-13). B09 확정 반영.
토공집계표 (열 = 구분·공종·규격·단위·계·비고, 거창 실무 시트 그대로)
⚠ 암 갈래 개수를 코드에 안 박음 — 울진 2 · 거창 5 · BOM 1 로 공사마다 다름.
프로젝트 설정의 세트를 받아 그만큼 줄을 냄. 비율이 아직 없으면 지어내지 않고
「암」 한 줄로 냄. 비율 합이 100 이 아니어도 준 비율끼리 안분해 총량 보존.
⚠ 반영률 기본 100 % — 실무 관측 80/50/80 은 참고이지 기본값 아님(법대로).
바꾼 경우에만 비고에 「80 % 반영」이 남음 — 누가 정한 값인지 보이게.
운반 가중평균 ((운반수단 x 지반유형)별 1줄)
실무 울진이 도자 토사/암 · 덤프 토사/암 4줄을 올림. 가중평균 = Σ(토량x거리)/Σ토량
으로 단순평균이 아님. 개별 구간은 근거로 함께 냄 — 어느 구간이 그 평균을
만들었는지 되짚게.
입력은 이미 있는 HaulPlan — 띠·장거리이동에 equipment·haul_distance_m·
지반유형별 물량(ea/rr/br)이 다 있어 다시 세지 않음.
⚠ 무대(free_haul)는 in_bill=False — 품셈 1-2-7 로 품에 포함이고 인력운반 10-6
도 「소운반 20m 초과분」이라 붙일 단가가 없음. 값은 내되 내역 줄만 뺌 —
「무대+도자+덤프 = 총 운반토량」 검산에 씀.
검증 — 28건 통과 (토공집계·설정 19 + 운반 9).
가중평균이 단순평균과 다름을 못 박음(도자 토사 600@40+400@50 → 44m, 45 아님).
울진2·거창5 두 세트가 같은 코드로 서는 것, 무대가 내역 줄이 아닌 것,
구획을 따로 저장해도 상대 값이 안 지워지는 것을 각각 시험함.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>