From a14497a771e566c0e3c266e7c32e3c1341fe0c69 Mon Sep 17 00:00:00 2001 From: ypshim Date: Tue, 3 Nov 2026 17:57:30 +0900 Subject: [PATCH] =?UTF-8?q?feat(abut):=20=ED=98=95=EC=83=81=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EC=9D=84=20=EC=82=BD=EB=8F=84=20=EC=95=84=EB=9E=98=20?= =?UTF-8?q?=EA=B2=A9=EC=9E=90=EB=A1=9C=20=EB=B0=B0=EC=B9=98=ED=95=98?= =?UTF-8?q?=EA=B3=A0=20=ED=99=95=EC=9D=B8=20=ED=95=84=EC=9A=94=20=ED=8C=A8?= =?UTF-8?q?=EB=84=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 형상 입력(라벨·입력·기본값)을 3열 격자로 배치. 삽도는 격자 전체 폭을 차지 - ② 형상계획 편집 영역 끝에 "확인 필요 (spec_abut)" 패널: QA-4~QA-8 (교대 형상 관련) - 인접 무시 기준(5 mm)은 검사 설정 화면이 없어 이번 단계에서는 옮기지 않음 - 테스트 641건 통과, 타입 검사·빌드 통과. 브라우저 시각 확인은 미실시 Co-Authored-By: Claude Haiku 5.5 --- src/main.ts | 16 ++++++++++++++++ src/style.css | 6 ++++++ 2 files changed, 22 insertions(+) diff --git a/src/main.ts b/src/main.ts index a820be5..b2a7720 100644 --- a/src/main.ts +++ b/src/main.ts @@ -694,6 +694,15 @@ function focusAbut(name: string): void { /** 교대 편집 카드: the values of the selected abutment. Each change is checked, rebuilds the abutment in the 3D view and marks the project as changed. */ /** The 교대 입력 panel slots of ① (replaces the pier info) and ② (under the list). */ +/** Open questions of spec_abut that touch the 벽체·흉벽 shape (the 확인 필요 panel of the mockup). */ +const ABUT_QA_NOTES = [ + 'QA-4 흉벽 level 2500의 기준점, Level 좌·우 450 / 995 (가정, 계산 미사용)', + 'QA-5 말뚝 D600 / 609.6, 전면 열 본수 (가정)', + 'QA-6 날개벽 외측면 = 교좌면 끝 skew 선 (가정)', + 'QA-7 수축줄눈 개수 (10 m 기준)', + 'QA-8 브라켓형·오목형·반일체식 벽체 생성 규칙 미정 (type-1만 생성)', +]; + const ABUT_SLOTS = { shape: { root: 'abut-panel', name: 'abut-panel-name', input: 'abut-panel-input', toggle: 'abut-panel-edit-toggle', editor: 'abut-panel-editor', summary: 'abut-panel-summary', basic: 'abut-panel-basic', bearings: 'abut-panel-bearings', shape: 'abut-panel-shape', msg: 'abut-panel-msg', prefix: 'abs' }, plan: { wing: 'abut-panel-plan-wing', root: 'abut-panel-plan',name: 'abut-panel-plan-name', toggle: 'abut-panel-plan-edit-toggle', editor: 'abut-panel-plan-editor', summary: 'abut-panel-plan-summary', basic: 'abut-panel-plan-basic', bearings: 'abut-panel-plan-bearings', shape: 'abut-panel-plan-shape', msg: 'abut-panel-plan-msg', prefix: 'abp' }, @@ -885,6 +894,13 @@ function fillAbutSlot(slot: (typeof ABUT_SLOTS)[keyof typeof ABUT_SLOTS], rec: A }); shape.append(lab, input, el('span', `기본 ${ABUT_SHAPE_DEFAULT[f.key]}`, 'muted small')); } + // 확인 필요 (spec_abut, 시안 오른쪽 패널): the open 교대 questions that touch the shape (2026-11-03). + if (planCard) { + const qa = el('div', undefined, 'abut-qa'); + qa.append(el('p', '확인 필요 (spec_abut)', 'lbl')); + for (const line of ABUT_QA_NOTES) qa.append(el('p', line, 'muted small')); + shape.append(qa); + } } function abutSummary(rec: AbutRecord): string { diff --git a/src/style.css b/src/style.css index 625c96a..c61cded 100644 --- a/src/style.css +++ b/src/style.css @@ -889,3 +889,9 @@ body { background: #eef1f4; font-family: 'Noto Sans KR', system-ui, sans-serif; #view-plan.abut-selected .abut-members-title, #view-plan.abut-selected #abut-members { display: block; } #abut-members .pier-name span:first-child { display: block; } + +/* 교대 형상 입력: the 삽도 on top, then a 3-column grid of input · default (시안 ②), the 확인 필요 notes at the end (2026-11-03). */ +#abut-panel-plan-shape, #abut-panel-shape { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr); gap: 6px 10px; align-items: center; } +#abut-panel-plan-shape > .abut-section, #abut-panel-shape > .abut-section, #abut-panel-plan-shape > .abut-qa { grid-column: 1 / -1; } +.abut-qa { border-top: 1px solid #d5dbe2; padding-top: 8px; } +.abut-qa p { margin: 3px 0; }