diff --git a/B08_Quantity/B08_Quantity_UI_Drawing.ts b/B08_Quantity/B08_Quantity_UI_Drawing.ts index dccc5f357..725ff48fb 100644 --- a/B08_Quantity/B08_Quantity_UI_Drawing.ts +++ b/B08_Quantity/B08_Quantity_UI_Drawing.ts @@ -119,6 +119,21 @@ function comboSection( return section; } const source = sourceOf(request.projectId, copy.폴더); + // 702-4 B09 원가에서 고친 일위대가 칸(덮개) — 카드 금액 = 사본 셈(고치기 전) · 셈 답 `B09고침` 수 + const covered = note(""); + covered.hidden = true; + const labor = source.labor; + if (labor) { + const calc = labor.calc; + labor.calc = (...args) => + calc(...args).then((got) => { + const n = Number((got as { B09고침?: number }).B09고침) || 0; + covered.textContent = `B09 원가에서 고친 일위대가 칸 ${n} — 이 카드 금액은 고치기 전 사본 값 · 원가 금액은 B09`; + covered.hidden = !n; + return got; + }); + } + section.append(covered); if (!copy.부분.includes("도면")) section.append(note(L("B08_Quantity_Drawing_NoDrawing"))); const load = (): void => void cards.load({ id: copy.폴더, label: name }); // 카드 안 [저장]은 없음(자료 자리에 write 없음) — [수정]만 사본 편집 화면으로(163-3) diff --git a/M02_MasterTemplete/M02_Project_Items_Router.py b/M02_MasterTemplete/M02_Project_Items_Router.py index 6f9f780d7..b532cd6e6 100644 --- a/M02_MasterTemplete/M02_Project_Items_Router.py +++ b/M02_MasterTemplete/M02_Project_Items_Router.py @@ -219,4 +219,12 @@ async def save_item_as( async def calc_item( project_id: str, folder: str, session: dict[str, Any] = Depends(verify_session) ) -> dict[str, Any]: - return await _run(copies.calc, await _root(session, project_id), folder) + root = await _root(session, project_id) + out = await _run(copies.calc, root, folder) + from B09_Estimation.B09_Estimation_Labor_Source import cover_count # B09 → M02 순환 피함 + + try: # 702-4 B09 원가에서 고친 일위대가 칸 수(카드 금액 = 사본 셈 · 고치기 전) + out["B09고침"] = await asyncio.to_thread(cover_count, root, folder) + except Exception: # noqa: BLE001 — 표시만 · 카드 셈은 그대로 + out["B09고침"] = 0 + return out