feat(ui): 기둥·말뚝 통합 입력 · 현장타설 화면 · 헤더 한 줄 정리

- 기둥·말뚝 입력을 한 카드로 통합(공통 입력, 구간별 예외 보존, 횡철근 표)
- 현장타설 실배근 · 삽도 · 수량을 화면에 연결하고 프로젝트 저장 · 복원
- 상단 헤더를 한 줄로 축약(상태 축약, 파일 메뉴, 말줄임)
- 디자인 검토 반영(가져오기 범위, ③ 모델 높이 · 접기, 검토 항목 이동)
- 화면 검증 스크립트(verify-unified-input · verify-design-fixes 등) 보관

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-11-06 13:15:01 +09:00
1 parent 2e0bfb6fc8
commit da7b13a568
10 files changed
+1067 -95

No files matched your search

+40 -23
View File
@@ -11,22 +11,26 @@
<header class="top">
<div class="brand">
<strong>Pierzainer</strong>
<span>교각 설계</span>
<span id="project-line" class="proj">프로젝트 미지정</span>
</div>
<nav class="steps" aria-label="단계">
<button id="nav-shape" class="step current" type="button" aria-current="step">① 형상 생성 <em id="step1-status">미생성</em></button>
<button id="nav-plan" class="step" type="button">② 형상계획 <em id="step2-status">예정</em></button>
<button id="nav-rebar" class="step" type="button">③ 철근배근 <em id="step3-status">예정</em></button>
<button id="nav-quantity" class="step" type="button">④ 재료표 <em id="step4-status">예정</em></button>
<button id="nav-shape" class="step current" data-label="① 형상 생성" aria-label="① 형상 생성" type="button" aria-current="step">① 형상 <em id="step1-status"></em></button>
<button id="nav-plan" class="step" data-label="② 형상계획" aria-label="② 형상계획" type="button">② 계획 <em id="step2-status"></em></button>
<button id="nav-rebar" class="step" data-label="③ 철근배근" aria-label="③ 철근배근" type="button">③ 배근 <em id="step3-status"></em></button>
<button id="nav-quantity" class="step" data-label="④ 재료표" aria-label="④ 재료표" type="button">④ 재료 <em id="step4-status"></em></button>
</nav>
<div class="actions">
<span id="save-status" class="savest">저장 전</span>
<button id="home-from-app" class="btn-s" type="button" hidden>홈으로</button>
<button id="home-from-app" class="btn-s" type="button" hidden>홈</button>
<button id="save-project" class="btn-s" type="button" disabled title="프로젝트 파일 저장 (Ctrl+S)">저장</button>
<button id="open-import" class="btn-s" type="button">엑셀 불러오기</button>
<button id="open-project" class="btn-s" type="button">프로젝트 열기</button>
<button id="regen" class="btn-p" type="button" disabled>선택 교각 형상 생성</button>
<details id="file-menu" class="file-menu">
<summary class="btn-s">불러오기</summary>
<div class="file-menu-items">
<button id="open-import" class="btn small" type="button">엑셀 불러오기</button>
<button id="open-project" class="btn small" type="button">프로젝트 열기</button>
</div>
</details>
<button id="regen" class="btn-p" type="button" disabled>생성</button>
<input id="project-file" type="file" accept=".json" hidden />
</div>
</header>
@@ -288,7 +292,16 @@
<ul id="rebar-tabs" class="members"></ul>
<p class="pnote">형상은 ② 형상계획 기준입니다. 형상이 바뀌면 "형상 바뀜"으로 표시합니다.</p>
</aside>
<div class="center-col">
<div class="center-col review-workspace" id="review-workspace">
<div class="workspace-tools" aria-label="검토 공간 조절">
<label class="model-height-control" for="review-model-height">모델 높이
<input id="review-model-height" type="range" min="180" max="560" step="20" value="240" />
<output id="review-model-height-value" for="review-model-height">240 px</output>
</label>
<button id="review-model-toggle" class="btn small" type="button" aria-expanded="true" aria-controls="slot-rebar">모델 접기</button>
<button id="review-inputs" class="btn small" type="button">입력 보기</button>
<button id="review-table" class="btn small" type="button">철근표 보기</button>
</div>
<div class="viewer-slot" id="slot-rebar"></div>
<section class="panel viewer" aria-labelledby="rebar-title">
<div class="viewer-head"><h2 id="rebar-title">철근표</h2></div>
@@ -299,24 +312,26 @@
<aside class="panel results" aria-labelledby="rebar-issues-title">
<h2 id="rebar-issues-title">알림</h2>
<ul id="rebar-issues" class="issues"></ul>
<h2>검토 필요 (결정 대기)</h2>
<ul class="issues">
<li>Q-B5 B1·B3·B5·B7 다리 길이 (제안값 사용)</li>
<li>Q-B6 B2·B6 이음 위치와 길이</li>
<li>Q-C9 P4–B11 간섭: 무시로 결정, 문서 반영 필요</li>
</ul>
<h2>부재 검토</h2>
<p id="review-summary" class="muted small" aria-live="polite"></p>
<ul id="review-tasks" class="issues review-tasks"></ul>
<section class="common" aria-labelledby="common-title">
<p id="common-title" class="lbl">공통 설정</p>
<h3 id="common-title">공통 설정</h3>
<fieldset class="material-fields">
<legend>재료</legend>
<label class="mat">fck (MPa) <input id="mat-fck" type="number" step="any" /></label>
<label class="mat">D 규격 강도 <select id="mat-grade-d"><option value="300" selected>SD300</option><option value="400">SD400</option><option value="500">SD500</option></select></label>
<label class="mat">H 규격 강도 <select id="mat-grade-h"><option value="300">SD300</option><option value="400" selected>SD400</option><option value="500">SD500</option></select></label>
<label class="mat">S 규격 강도 <select id="mat-grade-s"><option value="300">SD300</option><option value="400">SD400</option><option value="500" selected>SD500</option></select></label>
<label class="mat">재료표 할증 (%) · 기본 0 가정 <input id="mat-waste" type="number" step="0.5" min="0" /></label>
<p class="lbl">굽힘 내면반경 (× 철근 지름)</p>
</fieldset>
<fieldset class="material-fields">
<legend>굽힘 내면반경 (× 철근 지름)</legend>
<label class="mat">D16 이하 <input id="bend-small16" type="number" step="0.5" min="0.5" /></label>
<label class="mat">D19–D25 <input id="bend-main25" type="number" step="0.5" min="0.5" /></label>
<label class="mat">D29–D35 <input id="bend-main35" type="number" step="0.5" min="0.5" /></label>
<label class="mat">D38 이상 <input id="bend-main51" type="number" step="0.5" min="0.5" /></label>
</fieldset>
<p id="mat-note" class="muted small"></p>
</section>
</aside>
@@ -389,20 +404,22 @@
<div class="dlg-col">
<section>
<h3>미리보기</h3>
<p id="preview-title" class="muted"></p>
<p id="preview-title" class="muted" aria-live="polite"></p>
<h4>교각 정보</h4>
<div class="pv-scroll"><table id="pv-pier" class="grid-table"></table></div>
<h4>교대 정보</h4>
<div class="pv-scroll"><table id="pv-abuts" class="grid-table"></table></div>
<h4>받침</h4>
<div class="pv-scroll">
<table id="pv-bearings" class="grid-table">
<thead><tr><th>교각</th><th>번호</th><th>x (m)</th><th>y (m)</th><th>z (m)</th><th>방위각</th><th>위치</th></tr></thead>
<thead><tr><th>구조물</th><th>번호</th><th>x (m)</th><th>y (m)</th><th>z (m)</th><th>방위각</th><th>위치</th></tr></thead>
<tbody></tbody>
</table>
</div>
<h4>IP</h4>
<div class="pv-scroll">
<table id="pv-ips" class="grid-table">
<thead><tr><th>교각</th><th>점</th><th>x (m)</th><th>y (m)</th><th>꺾임각</th></tr></thead>
<thead><tr><th>구조물</th><th>점</th><th>x (m)</th><th>y (m)</th><th>꺾임각</th></tr></thead>
<tbody></tbody>
</table>
</div>
@@ -411,9 +428,9 @@
</div>
<footer class="dlg-foot">
<span id="dlg-selected" class="muted"></span>
<span id="dlg-selected" class="muted" aria-live="polite"></span>
<button id="dlg-cancel" class="btn" type="button">취소</button>
<button id="dlg-apply" class="btn primary" type="button" disabled>선택한 교각 0기 형상 생성</button>
<button id="dlg-apply" class="btn primary" type="button" disabled>불러올 구조물을 선택하세요</button>
</footer>
</dialog>