fix(m01): 흐름 합계 끝수 = 비용 출력 상자에 실린 로직 자신의 끝수 · 새 로직만 기본 1원 미만 버림

왼쪽 흐름 보기 소계 · 계와 오른쪽 원가 합계가 같은 끝수를 씀(Round.totalRoundOf)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EauA2ATmqNRbeV48s9CcBr
This commit is contained in:
2026-10-02 00:34:17 +09:00
co-authored by Claude Sonnet 5.5
parent fa33abb5f0
commit a5edf43d6e
4 changed files with 70 additions and 9 deletions
+32 -1
View File
@@ -37,8 +37,9 @@ function load(f) {
return box.exports;
}
const m = load(file);
const r = load(path.join(root, "M02_MasterTemplete", "DataFlow", "M02_DF_Round.ts"));
const jobs = JSON.parse(fs.readFileSync(0, "utf8"));
const out = jobs.map((job) => m.flowRows(job.lg, job.ev, job.round));
const out = jobs.map((job) => job.op === "totalRound" ? r.totalRoundOf(job.lg, job.fallback) : m.flowRows(job.lg, job.ev, job.round));
process.stdout.write(JSON.stringify(out));
setTimeout(() => process.exit(0), 50);
"""
@@ -182,3 +183,33 @@ def test_missing_value_shows_dash():
rows = run([{"lg": lg, "ev": ev, "round": ROUND}])[0]
assert group(rows, "labor")["lines"][0]["text"] == "—"
assert rows["errors"] == ["끊김"]
def test_total_round_follows_converted_logic_own_round():
"""옮긴 로직 = 비용 출력 상자에 실린 끝수 · 새 로직(끝수 없음) = 기본."""
default = {"places": 0, "method": "버림"}
own = {"places": 1, "method": "반올림"}
converted = logic(
[out_box("o1", "인건비", "노무비", round_=own), out_box("o2", "작업량", "값")]
)
fresh = logic([out_box("o1", "인건비", "노무비")])
only_plain = logic([out_box("o3", "작업량", "값", round_={"places": 3, "method": "버림"})])
got = run(
[
{"op": "totalRound", "lg": converted, "fallback": default},
{"op": "totalRound", "lg": fresh, "fallback": default},
{"op": "totalRound", "lg": only_plain, "fallback": default},
]
)
assert got == [own, default, default] # 값(비용 아님)의 끝수는 합계 끝수가 아님
def test_subtotal_and_total_use_converted_round():
own = {"places": 1, "method": "반올림"}
lg = logic([out_box("o1", "인건비", "노무비", round_=own)])
ev = result(
{"o1": 3216.7}, {"노무비": 3216.7, "재료비": 0, "경비": 0, "값들": {}, "계": 3216.7}
)
rows = run([{"lg": lg, "ev": ev, "round": {"item": ROUND["item"], "total": own}}])[0]
assert group(rows, "labor")["subText"] == "3,216.7"
assert rows["totalText"] == "3,216.7"