feat(B08): 구조물 잔토에 상태(자연상태)를 값으로 실음 — 유토곡선 잔량과 섞이지 않게
- 유토곡선 잔량은 다짐상태인데 이 값은 자연상태(제자리 기하 부피)라 그냥 더하면 섞임 (2026-09-09 랩탑 메인 지적). `volume_basis: "natural"` 을 총량·측점마다 실음 - ⚠ 엄밀히는 되메움에 쓰이는 흙이 다짐부피 ÷ C 라 조금 더 들지만, 실무 정본 시트도 그냥 빼므로(터파기 1.55 − 되메우기 0.30 = 잔토 1.25) 값은 그대로 두고 사실만 적음 - tmp/tests 1건 추가 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user