feat(B08 구조물도): 카드에 B09 원가에서 고친 일위대가 칸 수 표시 — 노임 새 판 · 재적용 뒤에도 덮개 남음 (PLAN 702-4)

- 사본 셈 길(/items/{폴더}/calc) 답에 B09고침 = 그 사본 블록 + 부른 블록 덮개 수(B09 cover_count)
- B08 구조물도 조합 칸 = 「B09 원가에서 고친 일위대가 칸 N — 이 카드 금액은 고치기 전 사본 값」(카드 셈 길이 달라 금액 반영 대신 표시 · 브레인 정함)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-31 12:41:37 +09:00
co-authored by Claude Opus 5.5
parent 8d80e1f680
commit 970211bb5f
2 changed files with 24 additions and 1 deletions
+15
View File
@@ -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)
@@ -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