fix(b08): BOX 비계 단위 ㎡→㎥(공㎥) — 원단위 성분·묶음 조각 FP-12-19 · 사유 「비계 폭 1.0m 관측(울진)」(브레인 승인)
울진 단위 칸 「공/m3」 · 시종점 식의 ×1.00 은 연장일 수 없어 폭 1.0m 로 역산 · 값은 그대로(면 × 1.0) · B09 12-19 쪽은 안 건드림 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
This commit is contained in:
@@ -41,6 +41,8 @@ NOTE_SHORING_SCAFFOLD = (
|
||||
"(울진 2×2 「강재 3개월」) — 품셈 12-20 강관동바리 · 12-19 강관비계로 이음 ·"
|
||||
" 시종점 두 면은 개소당 한 번(원문은 m당 칸)"
|
||||
)
|
||||
#: 비계는 공㎥(품셈 12-19 밑수) = 면 × 폭 — 울진 단위 칸 「공/m3」 · 시종점 식 ×1.00 은 연장일 수 없음.
|
||||
SCAFFOLD_NOTE = "비계 폭 1.0m 관측(울진)"
|
||||
NOTE_WING = "날개벽 수량 근거 없음(교본·실무 모두 · 판정 ⑤) — 날개벽 줄 안 섬"
|
||||
NOTE_RUBBLE = (
|
||||
"기초잡석 — 근거 둘(예제·울진 집계표)에는 잡석 줄이 없음 — 사용자 확정 3차 ② 로 세움"
|
||||
@@ -104,7 +106,7 @@ def box_culvert(options: dict[str, Any]) -> tuple[list[Component], list[str]]:
|
||||
f"{width:g}×{height:g} − {haunch:g}²÷2×4",
|
||||
"",
|
||||
),
|
||||
("비계", "㎡", 2 * outer_h, f"외벽 양면 {outer_h:g}×2", ""),
|
||||
("비계", "㎥", 2 * outer_h, f"외벽 양면 {outer_h:g}×2 × 폭 1.0({SCAFFOLD_NOTE})", ""),
|
||||
]
|
||||
notes: list[str] = [SOURCES, NOTE_FORMWORK, NOTE_SHORING_SCAFFOLD, NOTE_WING, NOTE_RUBBLE]
|
||||
if math.isclose(width, 2.0) and math.isclose(height, 2.0):
|
||||
|
||||
@@ -478,8 +478,9 @@
|
||||
{
|
||||
"code": "FP-12-19",
|
||||
"name": "강관비계",
|
||||
"unit": "㎡",
|
||||
"from_components": ["비계"]
|
||||
"unit": "㎥",
|
||||
"from_components": ["비계"],
|
||||
"why": "12-19 밑수는 공㎥ — 울진 기번3 단위 칸 「공/m3」 · 시종점 식의 ×1.00 은 연장일 수 없어(끝면은 연장과 무관) 비계 폭 1.0m 관측(울진)으로 면 × 1.0 = 공㎥"
|
||||
},
|
||||
{
|
||||
"code": "FP-12-25",
|
||||
|
||||
@@ -49,6 +49,9 @@ def test_울진_2x2_m당_값을_연장에_곱한다() -> None:
|
||||
assert got[("동바리", "")] == pytest.approx(3.92 * 10)
|
||||
# 비계 — 벽체 m당 5.2 × 연장 + 시종점 두 면 13.52 는 한 번(원문은 m당에 넣었음 · 사유).
|
||||
assert got[("비계", "")] == pytest.approx(5.2 * 10 + 13.52)
|
||||
# 비계는 공㎥(12-19 밑수) — 울진 단위 칸 「공/m3」 · 시종점 식 ×1.00 은 연장일 수 없어 폭 1.0m.
|
||||
scaffold = next(c for c in result.components if c.name == "비계")
|
||||
assert scaffold.unit == "㎥" and "비계 폭 1.0m 관측(울진)" in scaffold.basis
|
||||
assert (result.billing_unit, result.billing_quantity) == ("m", 10.0)
|
||||
text = " ".join(notes)
|
||||
assert "관측" in text and "날개벽" in text
|
||||
@@ -129,3 +132,5 @@ def test_인계_묶음이_조각을_세운다() -> None:
|
||||
assert {"FP-12-01-01", "FP-12-04", "FP-12-38", "FP-12-03", "FP-12-20", "FP-12-19"} <= set(parts)
|
||||
assert parts["FP-12-03"]["quantity"] == pytest.approx((179 + 157) * 10 / 1000)
|
||||
assert parts["FP-12-20"]["quantity"] == pytest.approx(3.92 * 10)
|
||||
assert parts["FP-12-19"]["unit"] == "㎥"
|
||||
assert parts["FP-12-19"]["quantity"] == pytest.approx(5.2 * 10 + 13.52)
|
||||
|
||||
Reference in New Issue
Block a user