feat(view): 확대기초·말뚝 inputs on ② (입력만): footing L, W, h1, blinding margin and thickness, steel and PHC pile lists

The footing card takes L, W, h1 (default 2000), the blinding margin on each side (100) and thickness (100). The pile is picked
from the 강관 or PHC list by outer diameter and wall; the inner diameter, area and weight are read from the list. Defaults are
the 1단계 constants, so P1 is unchanged. The model reads them (footing width, height, blinding, pile diameter; the footing
length for grouping). 복합 말뚝 and the rule-pending items stay disabled; the footing rebar is not yet tied to these
inputs (1·2단계 후).

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-10-23 16:01:02 +09:00
1 parent e580677887
commit df19cc47e9
7 files changed
+200 -18

No files matched your search

+28
View File
@@ -0,0 +1,28 @@
import { describe, expect, it } from 'vitest';
import { buildPier, footingDims } from '../src/core/geometry';
import { loadP1 } from './helpers';
describe('확대기초·말뚝 입력 (입력만, 승인 2026-10-23)', () => {
it('without the new inputs the footing dims are the 1단계 constants (P1 unchanged)', () => {
const d = footingDims(loadP1());
expect(d.L).toBeCloseTo(10.4, 9);
expect(d.W).toBeCloseTo(8.15, 9);
expect(d.H).toBeCloseTo(2.0, 9);
expect(d.blM).toBeCloseTo(0.2, 9);
expect(d.blT).toBeCloseTo(0.1, 9);
expect(d.pileD).toBeCloseTo(0.6096, 9);
});
it('the footing width, height and blinding follow the inputs in the model', () => {
const m = buildPier({ ...loadP1(), footingWidthMm: 9000, footingHeightMm: 2200, blindingMarginMm: 150, blindingThicknessMm: 120 });
expect(m.footings[0].width).toBeCloseTo(9.0, 9);
expect(m.blindings[0].width).toBeCloseTo(9.0 + 0.3, 9);
expect(m.blindings[0].thickness).toBeCloseTo(0.12, 9);
expect(m.footings[0].top - m.footings[0].bottom).toBeCloseTo(2.2, 9);
});
it('a steel pile of 609.6 × 16 gives the pile diameter 0.6096 m (the wall is in the list, not the diameter)', () => {
const m = buildPier({ ...loadP1(), pileOuterMm: 609.6, pileThicknessMm: 16 });
expect(m.piles[0].diameter).toBeCloseTo(0.6096, 9);
});
});
+17
View File
@@ -0,0 +1,17 @@
import { describe, expect, it } from 'vitest';
import { findPileSpec, PHC_PILES, STEEL_PILES } from '../src/core/pile-spec';
describe('말뚝 규격 목록 (승인 2026-10-23)', () => {
it('the steel list has the nine rows of the sheet, and 609.6 × 12 gives inner 585.6 and area 225', () => {
expect(STEEL_PILES.length).toBe(9);
const p = findPileSpec('강관', 609.6, 12)!;
expect(p.inner).toBe(585.6);
expect(p.area).toBe(225);
});
it('the PHC list has the four rows of the sheet; a pair not in the list is not found', () => {
expect(PHC_PILES.length).toBe(4);
expect(findPileSpec('PHC', 500, 80)!.inner).toBe(340);
expect(findPileSpec('강관', 609.6, 10)).toBeUndefined();
});
});