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:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user