From 018f628bf93f43976ec198e826986ef035a5defa Mon Sep 17 00:00:00 2001 From: umsangdon Date: Wed, 9 Sep 2026 06:47:53 +0900 Subject: [PATCH] =?UTF-8?q?feat(B08):=20=EA=B5=AC=EC=A1=B0=EB=AC=BC=20?= =?UTF-8?q?=EC=9E=94=ED=86=A0=EC=97=90=20=EC=83=81=ED=83=9C(=EC=9E=90?= =?UTF-8?q?=EC=97=B0=EC=83=81=ED=83=9C)=EB=A5=BC=20=EA=B0=92=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=8B=A4=EC=9D=8C=20=E2=80=94=20=EC=9C=A0=ED=86=A0?= =?UTF-8?q?=EA=B3=A1=EC=84=A0=20=EC=9E=94=EB=9F=89=EA=B3=BC=20=EC=84=9E?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=95=8A=EA=B2=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 유토곡선 잔량은 다짐상태인데 이 값은 자연상태(제자리 기하 부피)라 그냥 더하면 섞임 (2026-09-09 랩탑 메인 지적). `volume_basis: "natural"` 을 총량·측점마다 실음 - ⚠ 엄밀히는 되메움에 쓰이는 흙이 다짐부피 ÷ C 라 조금 더 들지만, 실무 정본 시트도 그냥 빼므로(터파기 1.55 − 되메우기 0.30 = 잔토 1.25) 값은 그대로 두고 사실만 적음 - tmp/tests 1건 추가 Co-Authored-By: Claude Opus 5 (1M context) --- B08_Quantity/B08_Quantity_Engine_HaulInputs.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/B08_Quantity/B08_Quantity_Engine_HaulInputs.py b/B08_Quantity/B08_Quantity_Engine_HaulInputs.py index c1c2894d..5c8e3045 100644 --- a/B08_Quantity/B08_Quantity_Engine_HaulInputs.py +++ b/B08_Quantity/B08_Quantity_Engine_HaulInputs.py @@ -30,6 +30,15 @@ from B08_Quantity.B08_Quantity_Engine_UnitQuantity import COLLECTED_STONE_KEY, G #: 유토곡선이 읽는 칸 이름 — 양쪽이 같은 낱말을 써야 인계에서 어긋나지 않는다. STRUCTURE_SPOIL_KEY = "structure_spoil_m3" STRUCTURE_SPOIL_POINTS_KEY = "structure_spoil_points" +#: ⚠⚠ **이 값은 자연상태(본바닥)다.** 유토곡선 잔량은 **다짐상태**라 그냥 더하면 상태가 +#: 섞인다(2026-09-09 랩탑 메인 지적). 받는 쪽이 `× C` 로 맞춰 담을 수 있게 **상태를 값으로 +#: 적어 보낸다** — 말로만 두면 다음 사람이 못 본다. +#: 까닭: 터파기·되메우기가 **제자리 기하 부피**(H × 폭 × 연장)이고 잔토는 그 차이다. +#: ⚠ 엄밀히는 되메움에 **쓰이는 흙**은 다짐부피 ÷ C 라 조금 더 든다. 실무 정본 시트도 +#: 그냥 빼므로(터파기 1.55 − 되메우기 0.30 = 잔토 1.25) 여기서도 그대로 두되, +#: **그 사실을 적어 둔다** — 값을 임의로 보정하지 않는다. +VOLUME_BASIS_KEY = "volume_basis" +VOLUME_BASIS_NATURAL = "natural" SPOIL_COMPONENT = "잔토처리" @@ -52,6 +61,7 @@ def haul_inputs(unit_quantity_table: dict[str, Any] | None) -> dict[str, Any]: COLLECTED_STONE_KEY: None, STRUCTURE_SPOIL_KEY: None, STRUCTURE_SPOIL_POINTS_KEY: [], + VOLUME_BASIS_KEY: VOLUME_BASIS_NATURAL, } total = 0.0 points: list[dict[str, Any]] = [] @@ -73,6 +83,7 @@ def haul_inputs(unit_quantity_table: dict[str, Any] | None) -> dict[str, Any]: { "chainage_m": chainage, "spoil_m3": round(amount, 3), + VOLUME_BASIS_KEY: VOLUME_BASIS_NATURAL, "ground_type": ground, "ground_label": GROUND_TYPE_LABEL.get(str(ground)) if ground else None, "ground_basis": str(structure.get("ground_type_basis") or ""), @@ -83,4 +94,6 @@ def haul_inputs(unit_quantity_table: dict[str, Any] | None) -> dict[str, Any]: COLLECTED_STONE_KEY: collected, STRUCTURE_SPOIL_KEY: round(total, 3) if points or total else None, STRUCTURE_SPOIL_POINTS_KEY: sorted(points, key=lambda row: row["chainage_m"]), + # 총량에도 상태를 적는다 — 측점값을 안 쓰는 쪽도 상태를 알아야 한다. + VOLUME_BASIS_KEY: VOLUME_BASIS_NATURAL, }