feat(import): 교대만으로 가져오기 허용

교각 없이 A1 · A2 같은 교대만으로도 가져오고 저장할 수 있게 한다 (A1 + A2 짝 받침 성립, 2026-11-06 검토).
- 불러오기 창: 교각 또는 교대가 1기 이상이면 [가져오기] 활성, 안내 "교대만 가져옵니다"
- 3D: 교각이 없으면 첫 교대의 IP1을 좌표 기준점으로 교대를 그리고, 카메라를 교대에 맞춤(abutView)
- 프로젝트 파일: 교각 0기 + 교대 저장·열기 왕복 테스트 추가
- 브라우저 검증 scripts/verify-abut-only.cjs (CDP 9444 · Vite 5173): A1만 가져오기 → ① ② ③ 이동,
  런타임 예외 0, 교대 받침 카드(S −1.910 % 종단경사 · T 30 · h3 245 · E 400)와 ③ 교대 철근 표시 확인.
  P1 + A1 함께 가져오기 회귀도 통과

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Opus 5.5 committed 2026-11-06 15:30:13 +09:00
1 parent 9d357de4d1
commit 2668f17bf2
3 files changed
+108 -5

No files matched your search

+11
View File
@@ -113,3 +113,14 @@ describe('짝 받침 성립 범위 (검토 2026-11-06)', () => {
expect(pairs.every((p) => p.warnings.length === 0)).toBe(true);
});
});
describe('교대만 있는 프로젝트 (가져오기 허용 2026-11-06)', () => {
it('a project file with no pier and A1 only round-trips', async () => {
const { parseProject, serializeProject, SCHEMA_VERSION } = await import('../src/core/project');
const file = { schemaVersion: SCHEMA_VERSION, project: { name: '교대만', bridge: '', client: '', author: '', crs: '', memo: '' },
source: { fileName: '운곡교P1입력.xlsx', sheets: [] }, history: [], piers: [], abutments: [a1] };
const back = parseProject(serializeProject(file as Parameters<typeof serializeProject>[0]));
expect(back.piers).toEqual([]);
expect(back.abutments?.map((a) => a.name)).toEqual(['A1']);
});
});