fix(B08): 준비공 축 감사 셋 — 면적 0 막음 · 표토 대상 어긋남 사유 · 규준틀 준용 표시
- 표토제거: 대상 면적 0 ㎡ 에 0 ㎥ 를 「값 있음」으로 내고 있었음. 0 은 「없음」과 구별이 안 되고 받는 쪽이 「표토가 없는 노선」으로 읽음. 두께 미입력은 이미 막고 있었는데 면적 0 만 통과하던 자리. 운반 줄은 제거를 밑수로 삼아 함께 막힘. - 표토 대상 면적이 별표2 문언과 두 방향으로 어긋남 — 법은 「노면·절토대상지」인데 우리는 절토·성토 사면적을 다 더하고 노면(연장 × 노폭)은 안 셈. 성토대상지는 별표2 (7) 이 「제거·정리」로만 두어 운반·적치 의무를 안 검. 값은 그대로 두고 사유로만 드러냄 — 실무 확인 사항이라 임의로 확정하지 않음. - 비탈 규준틀 재료량이 「수평 값 준용」인 사실이 상수 주석에만 있고 화면 근거에는 없었음 — 값이 서면 어디서 온 값인지 안 보이던 자리. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -146,6 +146,22 @@ def _topsoil_row(slope: dict[str, float], thickness_m: float | None) -> dict[str
|
||||
쓴다(사면 계열의 면고르기 면적과 같은 자리).
|
||||
"""
|
||||
area = float(slope.get("face_dressing_fill", 0.0)) + float(slope.get("face_dressing_cut", 0.0))
|
||||
# ⚠ 면적이 0 이면 **0 ㎥ 를 「값 있음」으로 내지 않는다** — 0 은 「없음」과 구별이 안 되고,
|
||||
# 받는 쪽이 「표토가 없는 노선」으로 읽는다. 절·성토 사면적이 0 인 임도는 성립하지
|
||||
# 않으므로 이 자리는 사실상 **사면표가 아직 안 선 것**이다(2026-09-09 감사에서 잡음).
|
||||
if area <= 0:
|
||||
return {
|
||||
"group": "준비공",
|
||||
"item": "표토제거",
|
||||
"unit": "㎥",
|
||||
"amount": None,
|
||||
"status": STATUS_PENDING,
|
||||
"reason": (
|
||||
"대상 면적이 0 ㎡ 입니다 — 사면표(면고르기 면적)가 아직 서지 않았습니다. "
|
||||
"0 ㎥ 로 내면 「표토가 없는 노선」으로 읽히므로 값을 세우지 않습니다"
|
||||
),
|
||||
"work_item_code": "FP-09-15",
|
||||
}
|
||||
if thickness_m is None or float(thickness_m) <= 0:
|
||||
return {
|
||||
"group": "준비공",
|
||||
@@ -168,11 +184,26 @@ def _topsoil_row(slope: dict[str, float], thickness_m: float | None) -> dict[str
|
||||
"unit": "㎥",
|
||||
"amount": area * thickness,
|
||||
"status": STATUS_READY,
|
||||
"reason": f"사면적 {area:,.1f}㎡ × 두께 {thickness:g}m (품셈 9-15)",
|
||||
"reason": (f"사면적 {area:,.1f}㎡ × 두께 {thickness:g}m (품셈 9-15) · {TOPSOIL_AREA_GAP}"),
|
||||
"work_item_code": "FP-09-15",
|
||||
}
|
||||
|
||||
|
||||
#: ⚠⚠ **대상 면적이 법 문언과 어긋난다**(2026-09-09 준비공 축 감사에서 잡음).
|
||||
#: 별표2 Ⅰ.2.차.(6) 은 대상을 **「노면·절토대상지」**로 못박고, 성토대상지는 (7) 에서
|
||||
#: 「표토 등은 **제거·정리**한다」로 따로 두어 **운반·적치 의무를 안 건다.**
|
||||
#: 우리는 `face_dressing_cut + face_dressing_fill` 로 **절토·성토 사면적을 다 더하고**
|
||||
#: **노면(연장 × 노폭)은 안 센다** — 두 방향으로 어긋난 셈이다.
|
||||
#: ㉡ 계열(「또는」을 다 더함) — 성토 사면까지 운반·적치 물량에 실림
|
||||
#: 빠짐 — 노면 표토가 아예 안 섬(법이 첫째로 든 대상)
|
||||
#: ⚠ **값을 임의로 고치지 않는다** — 실무가 사면적 한 덩이로 잡는지, 노면을 따로 잡는지가
|
||||
#: 사용자·실무자 확인 사항이다. 지금은 **사유로 드러내기만** 한다.
|
||||
TOPSOIL_AREA_GAP = (
|
||||
"⚠ 대상 면적 확인 필요 — 별표2 는 「노면·절토대상지」로 두는데 우리는 절토·성토"
|
||||
" **사면적을 다 더하고 노면은 안 셈**. 성토대상지는 별표2 (7) 이 「제거·정리」로만 두어"
|
||||
" 운반·적치 의무를 안 검. 실무 확인 뒤 대상을 확정할 것"
|
||||
)
|
||||
|
||||
#: 표토 운반·적치 — ⚠ **법이 요구하는데 우리가 제거만 세고 있던 자리**(2026-09-09).
|
||||
#: 시행규칙 별표2 Ⅰ.2.차.(6)·Ⅰ.3.카.(6):
|
||||
#: 「노면·절토대상지에 있는 입목…과 그 뿌리, **표토는 전량 제거한 후** 강우 시 유실되거나
|
||||
@@ -434,6 +465,13 @@ def frame_material_rows(
|
||||
"basis": (
|
||||
f"{frame.get('item')} {float(count):g}개소 × {per_ea:g}{unit}/개소"
|
||||
f" ({picked}) · {FRAME_MATERIAL_SOURCE}"
|
||||
# ⚠ 준용이라는 사실이 상수 주석에만 있고 **화면 근거에는 없던**
|
||||
# 자리다 — 값이 서면 어디서 온 값인지 안 보인다(2026-09-09 감사).
|
||||
+ (
|
||||
" · ⚠ 비탈 규준틀 재료량은 그 시트에 없어 **수평 값을 준용**함"
|
||||
if str(frame.get("item")) == "비탈 규준틀"
|
||||
else ""
|
||||
)
|
||||
+ (f" · 손율 {loss}%(품셈 [주]③)" if loss else "")
|
||||
),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user