fix(M02): 51-2 일위대가 줄 상세 — 표 아래 따로 상자 대신 고른 줄 바로 아래 하위 행(접고 폄)

- 줄 누름 = 그 줄 아래 하위 행(같은 표 · 같은 칸 · 이름 앞 ▸/▾ · 한 줄만 · 다시 누름 = 닫힘)
- 단가산출 · 승격 = 그 로직 재료 · 노무 · 경비 줄 · 사전조합 = 안 줄 · 금액 칸 = 기준 / 반영 두 줄 꼴
- 서버 승격 줄 = 1 단위로 나눔(하위 합 = 위 줄 기준)
- 50-4 M01 시험계산 상자 · 안 쓰는 글 걷어냄
- 시험: 승격 줄 합 = 기준 · ui_checks 51-2 시나리오

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
This commit is contained in:
2026-10-05 19:31:01 +09:00
co-authored by Claude Opus 5.5
parent ac9e24f34b
commit ab599ce334
7 changed files with 204 additions and 131 deletions
+10 -1
View File
@@ -336,7 +336,16 @@ class Expand:
"로직": line.get("로직"),
"기준": {k: Decimal(str(v)) / times for k, v in base.items()} if base else None,
"까닭": why,
"줄": got.get("줄"), # 원 로직 표(줄 누름 상세 · 50-3 ④) — 원 로직 결과단위 그대로
# 원 로직 줄(줄 누름 하위 행 · 51-2) — 1 단위로 나눔(하위 합 = 기준)
"줄": [
{
**x,
"수량": Decimal(str(x["수량"])) / times,
"금액": Decimal(str(x["금액"])) / times,
"비목": {k: Decimal(str(v)) / times for k, v in (x.get("비목") or {}).items()},
}
for x in got.get("줄") or []
],
}
def _combo(self, doc: dict, trail: tuple[str, ...]) -> dict[str, Any]: