feat(abut): 형상 입력을 삽도 아래 격자로 배치하고 확인 필요 패널 추가

- 형상 입력(라벨·입력·기본값)을 3열 격자로 배치. 삽도는 격자 전체 폭을 차지
- ② 형상계획 편집 영역 끝에 "확인 필요 (spec_abut)" 패널: QA-4~QA-8 (교대 형상 관련)
- 인접 무시 기준(5 mm)은 검사 설정 화면이 없어 이번 단계에서는 옮기지 않음
- 테스트 641건 통과, 타입 검사·빌드 통과. 브라우저 시각 확인은 미실시

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-11-03 17:57:30 +09:00
1 parent 08b1138c96
commit a14497a771
2 files changed
+22

No files matched your search

+16
View File
@@ -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 {
+6
View File
@@ -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; }