fix(bearing): C4·C5 are the 교축 distances from the bearing to the block edges (승인 2026-10-26)

- bearingEdgeDistances now reads the block geometry: 분리 1200 blocks are
  centred on the bearing (600 / 600); 일체 uses the pair's 2500 block (outer
  margins 601, within the 5 mm tolerance of 600).
- The plan labels C4 and C5 from these values; the coping-edge definition is removed.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-10-26 12:25:15 +09:00
1 parent b3a62850ab
commit 9b79083d50
4 files changed
+35 -23

No files matched your search

+14 -6
View File
@@ -5,6 +5,8 @@ import { validatePier } from '../src/core/validate';
import type { Issue } from '../src/core/types';
import { loadP1 } from './helpers';
const integrated = buildPier({ ...loadP1(), bearingLayout: '일체' });
const model = buildPier(loadP1());
function block(no: number, row: '전열' | '후열', s: number): BlockModel {
@@ -12,14 +14,20 @@ function block(no: number, row: '전열' | '후열', s: number): BlockModel {
}
describe('받침 배치 규칙 (승인 2026-10-26)', () => {
it('C4 and C5 from the model: distances from the two coping edges across the width (교각축 직각), P1 front 852 / 2248', () => {
it('C4 and C5 from the block edges along the 교축: 분리 blocks are centred, so both are 600', () => {
const d = bearingEdgeDistances(model);
expect(d).toHaveLength(10);
const first = d.find((x) => x.no === 1 && x.row === '전열')!;
expect(first.leftMm).toBeCloseTo(852, 0);
expect(first.rightMm).toBeCloseTo(2248, 0);
// the two edges are one coping width (3100) apart
for (const x of d) expect(x.leftMm + x.rightMm).toBeCloseTo(3100, 6);
for (const x of d) {
expect(x.leftMm).toBeCloseTo(600, 0);
expect(x.rightMm).toBeCloseTo(600, 0);
}
});
it('일체: the outer margins stay 600 (C4 of the front bearing, C5 of the back bearing)', () => {
const d = bearingEdgeDistances(integrated);
// The 2500 block is centred on the pair midpoint, so the outer margins are 601 (within the 5 mm drawing tolerance of 600).
expect(d.find((x) => x.no === 1 && x.row === '전열')!.leftMm).toBeCloseTo(600, -1);
expect(d.find((x) => x.no === 6 && x.row === '후열')!.rightMm).toBeCloseTo(600, -1);
});
it('the front and back bearings of one number are about 85 mm apart on P1, so 일체 is allowed', () => {
+3 -3
View File
@@ -7,10 +7,10 @@ const separate = buildPier(loadP1());
const integrated = buildPier({ ...loadP1(), bearingLayout: '일체' });
describe('교량받침 상세 평면 (승인 2026-10-26)', () => {
it('shows C4 and C5 across the coping width (P1 front 852 / 2248)', () => {
it('shows C4 and C5 from the bearing to the block edges along the 교축 (600 each)', () => {
const svg = bearingPlanSvg(separate, 0);
expect(svg).toContain('C4 852');
expect(svg).toContain('C5 950');
expect(svg).toContain('C4 600');
expect(svg).toContain('C5 600');
});
it('분리 draws two 1200 outlines; 일체 draws one 2500 outline (block outline only)', () => {