feat(ui): 묶음 카드 공용 양식 · B09 묶음 탭 셋 카드 기본(171-2 · 171-3)

- 171-2 새 공용 ui_template_group_cards(.ts · .css) — 머리(호표 · 명칭 · 규격 · 단위 · 합계) · 몸 줄(이름 · 규격 · 수량 · 단위 · 합계 · 비고) · 합계 줄(노무 · 재료 · 경비 · 계)
- 글자 14px 한 벌 · 줄 간격 좁게(공용 카드 16px 끼움 없음) · 숫자 오른쪽 · 줄 금액 = 합계만 + 비목 셋 풍선
- 가로 열 수 1~4(기본 2) · 묶음 12 넘으면 요약 보기(머리 · 합계만 · 머리 누름 = 펼침 · 모두 펼침 · 접기)
- 157-2 산근 카드 파일 갈음(지움)
- 171-3 일위대가표 · 중기사용료 · 단가산출근거 = 카드 기본 · [표로 보기] = 표 그대로 · 보기 · 열 수 기억(b_page_state 두 줄 · 탭마다)
- 값 · 풍선 · 칸 누름 이동 = 표 줄 그대로 · 집계표 · 설계내역서 · B08 대상 밖
- 시험 test_171_2 · test_171_3 · 공용 도우미(가짜 DOM) · test_157_2 갈음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015KYZ2HWWdUwZWYnn3tQz7X
This commit is contained in:
2026-10-10 08:46:56 +09:00
co-authored by Claude Opus 5.5
parent ac1961c0a3
commit 40ed04b15f
13 changed files with 1079 additions and 341 deletions
+5 -5
View File
@@ -57,7 +57,7 @@ import {
} from "./B09_Estimation_UI_Tabs_Summary";
import { buildCost, buildTotal } from "./B09_Estimation_UI_Tabs_Total";
import { buildSg, buildSgList } from "./B09_Estimation_UI_Tabs_Sangeun";
import { renderSgPanel } from "./B09_Estimation_UI_Tabs_Sangeun_Cards";
import { isGroupTab, renderGroupPanel } from "./B09_Estimation_UI_Tabs_Groups";
function L(key: keyof typeof ui_locales): string {
return ui_locales[key][currentLanguageIndex];
@@ -238,11 +238,11 @@ export function renderB09Estimation(root: HTMLElement): void {
return made;
};
const hint = spec.hint ? note(spec.hint) : null;
// 157-2 산근 = 보기 둘(표 · 호표별 카드) — 머리 단추로 바꿈
if (tab === "sg") {
const redraw = (): void => show("sg");
// 171-3 묶음 탭(일위대가표 · 중기사용료 · 단가산출근거) = 묶음 카드 기본 · 머리 단추로 표
if (isGroupTab(tab)) {
const redraw = (): void => show(tab);
return void panel.replaceChildren(
...renderSgPanel({ spec, hint, focus, goto, makeTable, redraw }),
...renderGroupPanel({ tab, spec, hint, focus, goto, makeTable, redraw }),
);
}
const table = makeTable();