feat(abut): 교대 형상·입력 패널과 교각 받침·솔플레이트 개편
- 교대 형상(src/core/abut, 3D 장면, 목록·카메라·맞춤)과 교대 입력 패널 추가 - 교각 받침 기준 카드 제거, 솔플레이트 규칙을 교각별 입력으로 변경 - 받침 ELEVATION·솔플레이트 TABLE을 모델값으로 연결 - 교대 입력값 카드: 형식 행에 시점·종점 표시, 제목을 "A1 입력값 [입력]"으로 변경 - 테스트 614건 통과, 타입 검사 통과 Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
b1b2ad1ddb
commit
1d31d2f3a9
44 files changed
+2571
-120
No files matched your search
@@ -0,0 +1,25 @@
|
||||
import { readFileSync } from 'node:fs';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import * as XLSX from 'xlsx';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { ABUT_DETAIL_LABELS, abutInputRows, abutSummaryRows } from '../src/core/abut/summary';
|
||||
import { parseAbutments } from '../src/core/abut/parse';
|
||||
|
||||
const RAG = fileURLToPath(new URL('../../../RAG/운곡교P1입력.xlsx', import.meta.url));
|
||||
const rec = parseAbutments(XLSX.read(readFileSync(RAG), { type: 'buffer' })).abutments[0];
|
||||
|
||||
describe('교대 패널 행 (시안 입력값 카드 · 상세 축약)', () => {
|
||||
it('the 입력값 card has the nine rows of the mockup', () => {
|
||||
const rows = abutInputRows(rec);
|
||||
expect(rows).toHaveLength(9);
|
||||
expect(rows[1]).toEqual(['교좌면 EL (구간 ①)', '44.367 m']);
|
||||
expect(rows[0][1]).toMatch(/^A1 \(시점\) · /);
|
||||
expect(rows[8][1]).toBe('5개 · z = 패드 상면');
|
||||
});
|
||||
|
||||
it('the 상세 shows 8 rows, all of them computed rows of the summary', () => {
|
||||
const all = new Map(abutSummaryRows(rec));
|
||||
expect(ABUT_DETAIL_LABELS).toHaveLength(8);
|
||||
for (const label of ABUT_DETAIL_LABELS) expect(all.has(label)).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user