feat(core,view): per-row pile counts 열별 본수 (plan C4)
- A 열 is one row across the footing width; each has its own count along the length. Default floor((L − 1400) / 2250) + 1 per 열, as in spec §4.6. - Counts are validated: one per 열, whole numbers 2–30. Spacing below the 2250 mm minimum is shown as a warning, not refused (the plan's 6본 → 5@1800 example). - PierInput gains an optional pileRows; absent means the defaults, so existing files and the P1 results are unchanged. - Change tracking compares arrays by value; 열별 본수 can be reverted and copied (copy item off by default). - The footing card has −/+ per 열 with spacing, total, and the display string. - Tests: defaults 4열 × 5본 = 20 and the 1단계 text; 6본 → 5@1800; limits; model-level 21 piles. - Not verified in a browser. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5b162c2441
commit
17b5b24682
9 files changed
+256
-39
No files matched your search
+13
-3
@@ -10,11 +10,21 @@ export const EDITABLE_FIELDS = [
|
||||
{ key: 'pileLengthMm', label: '말뚝 길이', unit: 'mm' },
|
||||
] as const;
|
||||
|
||||
export type EditableKey = (typeof EDITABLE_FIELDS)[number]['key'];
|
||||
/** Inputs tracked for overrides and pending changes: the numeric cards plus 열별 본수 (an array, compared by value). */
|
||||
export const TRACKED_KEYS = [...EDITABLE_FIELDS.map((f) => f.key), 'pileRows'] as const;
|
||||
|
||||
/** Keys whose values differ between two inputs. */
|
||||
export type EditableKey = (typeof TRACKED_KEYS)[number];
|
||||
|
||||
export const FIELD_LABELS: Record<EditableKey, string> = {
|
||||
copingWidthMm: '코핑 폭 B',
|
||||
copingLengthMm: '코핑 길이 L',
|
||||
pileLengthMm: '말뚝 길이',
|
||||
pileRows: '열별 본수',
|
||||
};
|
||||
|
||||
/** Keys whose values differ between two inputs. Arrays are compared by value. */
|
||||
export function changedKeys(a: PierInput, b: PierInput): EditableKey[] {
|
||||
return EDITABLE_FIELDS.map((f) => f.key).filter((key) => a[key] !== b[key]);
|
||||
return TRACKED_KEYS.filter((key) => JSON.stringify(a[key]) !== JSON.stringify(b[key]));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user