feat(M02): 일위대가 조합 서고 — 좌측 항목 둘 · 상세 목록표(51-4)

- 좌측 컨테이너 = 층 단추 + 「단가산출 승격」 · 「일위대가 사전조합」 항목만 · 새로 · 본떠 · 지우기 단추 없앰
- 항목 누름 = 상세 칸 목록표(고름 · 키 · 이름 · 단위 · 기준 금액 · 고친 날) · 줄 누름 = 그 문서 상세
- 머리 [생성] · [복사](고른 줄) · [삭제](고른 줄 · 쓰는 곳 있으면 서버 까닭 알림)
- 층 목록 서고 줄에 1 단위 기준 계(`기준금액`) 실음 · 시험 한 개 · 화면 시나리오 51-4

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PSXsvyDxjNmufteN5bqmt
This commit is contained in:
2026-10-05 19:39:07 +09:00
co-authored by Claude Opus 5.5
parent 466dd61517
commit 9d9955631f
10 changed files with 487 additions and 226 deletions
@@ -137,12 +137,10 @@ export function buildSide(opt: SideOptions): SideHandle {
// 일위대가 조합 서고(50-3) — 구조물 조합 바로 아래 · 층마다(마스터 · 회사 · 개인)
const precombo = buildPrecomboSection({
layer,
canEdit: canEdit(layer, opt.isAdmin),
bar: opt.precomboBar ?? [],
confirmLeave: opt.confirmLeave,
onOpen: opt.onOpen,
isOpen: (kind, name) => isPicked(kind, name),
refresh: () => refresh(),
openKind: () => (opt.getOpen()?.layer === layer ? (opt.getOpen()?.kind ?? null) : null),
});
const precomboSec = section(PRECOMBO_TITLE, precombo.body);
// 구조물 옵션 정의 · 도면 양식은 시스템 층(마스터 템플릿)에만 · 정의 고쳐 씀은 시스템 관리자만 · 다른 역할은 읽기만(PLAN 48-2)
@@ -221,7 +219,7 @@ export function buildSide(opt: SideOptions): SideHandle {
* (양식이 열려 있으면 옵션 · 일위대가 조합 고름은 지움) */
function paint(): void {
paintList();
precombo.paint(items);
precombo.paint();
paintButtons();
if (opt.getOpen()) options.clear();
if (opt.getOpen()) practice?.clear();
@@ -245,7 +243,7 @@ export function buildSide(opt: SideOptions): SideHandle {
if (mine !== seq) return;
paintList();
paintButtons();
precombo.paint(items);
precombo.paint();
}
/* --- 시스템 층 새로 · 본떠 · 지우기(도면 양식만 — 구조물 도면은 집계표 열이 정함) --- */