feat(792-3): run_line · B09 산근 셈이 엔진 새 의미를 따름 — 네 길 같은 금액
- master_cut: 엔진 답 덧칸 `셈법`(새 칸 뗀 작은 로직) · `plain(got, gone)` 이 셈법 있으면 줄 자리 · 합밖 · 단계 · 블록 끝전 · 조정 그대로(켜쌓기율 · 별도계상 뒤 다시 버림이 큰나머지 · 조정을 덮던 흠) · `kept` - M02_Labor_Doc: run_line 답이 단계 · 셈법을 넘김 · drop_apart 가 plain 에 뺄 줄 차례를 줌(686 줄 · 늘지 않음) - 새 B09_Estimation_Sangeun_Sum: 산근 풀이 · 산근 글이 새 의미 로직만 엔진 규칙(표시 · 줄 자리 · 합밖 · 번지 · 단계 · 끝전 · 조정) · 옛 로직 = Q ROUND 2 · ROUNDDOWN 1 · 0 그대로 - B09 산근 글: 로직 줄(중기 세 줄) 금액을 줄 하나로 묶어 차례를 호표와 맞춤(합 같음) - 지킴 시험 test_792_3_engine_paths: 견본 넷(봉화 · 소광 · 영월 · 임도) + 단위 로직 = 엔진 · M02 SK · SC 한 줄 · B09 산근(글 계 포함) 같은 금액 · 다시 버림 셈법 지킴 - test_791_1: 견본 넷을 만들기 함수로 떼어 냄(같은 기대) - test_222_1 낡은 기대 셋 고침: 751-3 끝수 뒤 별도계상 뺀 기준 = 남은 줄 비목 합 원 버림(소수 없음) · 옛 기대는 「원 버린 기준 − 소수 재료 금액」이라 0.6 원 어긋남 - test_145_1: 작업량 Q 이름 규칙이 B09_Estimation_Sangeun_Sum 으로 옮김 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -324,7 +324,7 @@ def test_검사():
|
||||
|
||||
|
||||
# ── ③ 실무 손 옮김 견본 넷 ─────────────────────────────────────────────
|
||||
def test_봉화_D00102_합판거푸집_STmate_번지_율():
|
||||
def 봉화():
|
||||
"""봉화 단가산출근거 2909~2943 행 — `&M00081& * 1.03 * 0.327 :=A01` · `&PA01M:M& * 11'%'` ·
|
||||
`&PA02L:S& * 1'%'` · `(=)` · `(==)` · 총계 45,652 · 34,119 · 11,192 · 341."""
|
||||
row = _logic(
|
||||
@@ -358,16 +358,21 @@ def test_봉화_D00102_합판거푸집_STmate_번지_율():
|
||||
{"LB990101": ("형틀목공", 274978), "LB990102": ("보통인부", 165545)},
|
||||
{"MT990101": ("합판(내수)", "㎡", 11468), "MT990102": ("각재", "㎥", 500661)},
|
||||
)
|
||||
return master, row, {"노무비": 34119, "재료비": 11192, "경비": 341, "계": 45652}
|
||||
|
||||
|
||||
def test_봉화_D00102_합판거푸집_STmate_번지_율():
|
||||
master, row, want = 봉화()
|
||||
assert mf.check_logic(master, row)[0] == []
|
||||
got = _calc(master, "GX990101")
|
||||
assert _money(got) == {"노무비": 34119, "재료비": 11192, "경비": 341, "계": 45652}
|
||||
assert _money(got) == want
|
||||
assert [x["금액"] for x in got["줄"]] == [
|
||||
D(x) for x in ("3862.5", "6221.2", "27497.8", "6621.8", "1109.2", "341.1")
|
||||
]
|
||||
assert [x["계"] for x in got["단계"]] == [D("11192.9"), D("34460.7"), D("45653.6")]
|
||||
|
||||
|
||||
def test_울진소광_D01489_낙석방지책_STmate_L퍼센트():
|
||||
def 소광():
|
||||
"""울진소광 32 호표(D01489) — `'공구손료 :'&S01045& * 2'%'`(S01045 단위 L% = 처음부터
|
||||
노무비 누계) · `L = Q/10 =` 표시 2 · 계 줄 420,734 · 182,223 · 230,359 · 8,152
|
||||
(계약단가 87.745 % 는 B09 몫)."""
|
||||
@@ -412,15 +417,20 @@ def test_울진소광_D01489_낙석방지책_STmate_L퍼센트():
|
||||
},
|
||||
{"MT990103": ("낙석방지책", "경간", 227000)},
|
||||
)
|
||||
return master, row, {"노무비": 182223, "재료비": 230359, "경비": 8152, "계": 420734}
|
||||
|
||||
|
||||
def test_울진소광_D01489_낙석방지책_STmate_L퍼센트():
|
||||
master, row, want = 소광()
|
||||
assert mf.check_logic(master, row)[0] == []
|
||||
got = _calc(master, "GX990102")
|
||||
assert _money(got) == {"노무비": 182223, "재료비": 230359, "경비": 8152, "계": 420734}
|
||||
assert _money(got) == want
|
||||
assert _line(got, "공구손료")["금액"] == D("3644.4")
|
||||
assert _step(got, "지주 계")["계"] == D("49824.2")
|
||||
assert _step(got, "합계")["계"] == D("420735.3")
|
||||
|
||||
|
||||
def test_동부청영월_D00003_터파기_STmate_큰나머지_끝전():
|
||||
def 영월():
|
||||
"""동부청영월 단가산출근거 54~103 행(D00003) — `f = 1/1.3 =` · `E=…=` ·
|
||||
`Q = 3600*q*K*f*E/Cm =`(표시 2) · `&X00205L/M/S& / Q * 0.9` · 계 원 버림 + 큰 나머지
|
||||
5,471 · 4,764 · 310 · 397."""
|
||||
@@ -446,16 +456,21 @@ def test_동부청영월_D00003_터파기_STmate_큰나머지_끝전():
|
||||
끝전="큰나머지",
|
||||
)
|
||||
master = _master([row, _HOUR], {"LB990106": ("보통인부", 165545)})
|
||||
return master, row, {"노무비": 4764, "재료비": 310, "경비": 397, "계": 5471}
|
||||
|
||||
|
||||
def test_동부청영월_D00003_터파기_STmate_큰나머지_끝전():
|
||||
master, row, want = 영월()
|
||||
assert mf.check_logic(master, row)[0] == []
|
||||
got = _calc(master, "GX990103")
|
||||
assert got["중간"]["Q"] == D("52.39")
|
||||
assert _money(got) == {"노무비": 4764, "재료비": 310, "경비": 397, "계": 5471}
|
||||
assert _money(got) == want
|
||||
assert _step(got, "계")["계"] == D("5471.0")
|
||||
row["끝전"] = "비목버림" # 비목 원 버림이면 1 원 모자람
|
||||
assert _calc(master, "GX990103")["계"] == 5470
|
||||
|
||||
|
||||
def test_북부청임도_18_문양거푸집_EST_줄_자리():
|
||||
def 임도():
|
||||
"""북부청임도 단가산출 18 번(문양거푸집) — `5,786.1 × 2% = 116`(그 줄만 반올림 0) ·
|
||||
`인부소계 : 24,467.3` · 노무비 24,467 · 재료비 5,902 · 계 30,369."""
|
||||
row = _logic(
|
||||
@@ -480,11 +495,16 @@ def test_북부청임도_18_문양거푸집_EST_줄_자리():
|
||||
{"LB990107": ("형틀목공", 275790), "LB990108": ("보통인부", 172068)},
|
||||
{"MT990104": ("문양거푸집(ABS코팅폼)", "㎡", 4166)},
|
||||
)
|
||||
return master, row, {"노무비": 24467, "재료비": 5902, "경비": 0, "계": 30369}
|
||||
|
||||
|
||||
def test_북부청임도_18_문양거푸집_EST_줄_자리():
|
||||
master, row, want = 임도()
|
||||
assert mf.check_logic(master, row)[0] == []
|
||||
got = _calc(master, "GX990104")
|
||||
assert _line(got, "잡재료비")["금액"] == 116
|
||||
assert _step(got, "인부소계")["계"] == D("24467.3")
|
||||
assert _money(got) == {"노무비": 24467, "재료비": 5902, "경비": 0, "계": 30369}
|
||||
assert _money(got) == want
|
||||
del row["덧줄"][0]["자리"] # 기본 0.1 버림이면 엑셀과 1 원 다름
|
||||
assert _calc(master, "GX990104")["계"] == 30368
|
||||
|
||||
|
||||
Reference in New Issue
Block a user