feat(B09 설계내역서): 줄 펼침 — 줄 누르면 표 아래 일위대가 구성 · 셀에서 고친 칸 덮개 · 품셈 값 곁 · [품셈 값으로] (PLAN 702-1 · 702-2)

- 새 파일 B09_Estimation_UI_Tabs_Bill_Fold.ts — 일위대가(dg) 연결 줄만 · 값 = 일위대가표와 같은 셈(daega_blocks) · 부른 대가 3단까지 「ㄴ」
- 칸 = 품명 · 규격 · 품·수량 · 단위 · 노 · 재 · 경 단가 · 금액 · 품셈 값 · 비고 · 합계 줄
- 품 · 수량 · 단가 두 번 눌러 고침 → 캐시 daega_cover 즉시 · 짝 셈 다시 · 고친 칸 색(is-edited) · 풍선 = 품셈 값 · 우클릭 · [모두 품셈 값으로] · 빈칸 입력 = 되돌림
- 고리 = UI_Tabs_Bill fold 한 줄 · BillTable.fold 형 · Shell 표 아래 자리 + computeLabor 에 덮개 넘김

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-31 12:41:36 +09:00
co-authored by Claude Opus 5.5
parent 969d7f74f3
commit 8d80e1f680
4 changed files with 242 additions and 1 deletions
+3 -1
View File
@@ -100,6 +100,7 @@ export function computeSheets(payload: Row, user: Row): Row {
payload.inputs.daega,
{ ...computeBase(payload.inputs, user), gaps: [] },
sg,
user.daega_cover, // 702-2 고친 칸 덮개
);
const books = { daega: labor.daega, sg_list: kept.sg_list, sg_hand: kept.sg_hand };
const base = computeEstimation(
@@ -264,7 +265,8 @@ export function renderB09Estimation(root: HTMLElement): void {
// 203 안내 글 영역 하나 — 설계내역서 레벨 안내 + 탭 안내 이어 붙임
if (level && hint) hint.textContent = `${level.guide.textContent} · ${hint.textContent}`;
const foot = hint ?? level?.guide;
panel.replaceChildren(table.root, ...(foot ? [foot] : []));
const fold = bill?.fold?.(table.root); // 702-1 줄 펼침 = 표 아래
panel.replaceChildren(table.root, ...(fold ? [fold] : []), ...(foot ? [foot] : []));
if (at >= 0) requestAnimationFrame(() => table.focusRow(at, false)); // 스크롤만(표시 = 빨강)
};