- planCopy previews the changes and the skipped items for one target; applyCopy
applies exactly the planned changes.
- Default selection copies only the coping width; coping length and pile length
are off by default (spec §9). Pile items are skipped when the foundation type
differs. Coordinates, IPs, bearings and elevations are not in any item.
- Equal values are not counted, so the preview count equals the applied count.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- Three values per pier: defaults (as imported), input (generated), draft
(current cards). Overrides = draft vs defaults; pending = draft vs input.
- Editable now: 코핑 폭, 코핑 길이, 말뚝 길이. Changing a card does not touch the
3D view until 다시 생성; the header and the card show 변경 n.
- Revert puts a field back to its imported default.
- Project files store defaults and draft (optional; v1 files still open).
- Tests: 코핑 폭 3100 → 3300 gives one override and one pending change;
regenerating clears pending but keeps the override; revert; file round trip.
- Not verified in a browser (no debuggable Chrome in this session).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- serializeProject / parseProject for the .pzr.json format (spec §8,
schemaVersion 1). Parsing refuses other versions and damaged piers, and
names the first broken pier.
- The 3D model is not stored; it is regenerated on open.
- Tests: save → open equality without the source workbook; regenerated
models equal for 20 piers; version and damage refusals.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- Footings, blindings and piles on a bent axis are placed in their stretch's
frame; 일체기초 is grouped per stretch, so a combined footing never crosses
the kink (separate footings, each aligned with its stretch).
- Footings, blindings and piles are trimmed at the mitre plane like the coping.
- The stage-2 refusal for bent foundations is removed; the Level-half-width
refusal for columns at the kink remains.
- Tests: T형 footing crossing the kink stays in stretch 0; 2주형 with columns
on both sides gives one footing per stretch, with mitre clipping in the scene.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The earlier synthetic bend (IP3 at (6, 2)) put IP4 ahead of IP3 on the turned
line, so the axis folded back on itself. buildPier now refuses a kink behind
IP1 along IP1→IP2 or an IP3 behind the kink along the turned direction. Tests
use IP3 (9, −3.464), a valid 60° right turn with kink (7, 0).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- buildPier builds on buildAxis: each object carries its stretch k and a local
s from that stretch's base; coping parts are per stretch with the mitre plane
trimming the overlap in the scene (renderer.localClippingEnabled).
- Straight P1 output is unchanged (regression tests pass).
- Bent coping is supported for 현장타설말뚝 only; footings and piles on a bent
axis remain 미실시 until stage 3. Kink outside the coping and columns within
the Level half-width of the kink are refused.
- W03/W04 use coping coordinates (g).
- Tests: constructed 60° bend — world coordinates of bearings, blocks and the
column survive the stretch frames; mitre sides; scene mesh count; refusals.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- buildAxis: IP1 → IP4 → IP3 as stretches with their own frames; arc length s
from IP1; mitre normal u1 + u2 at the kink.
- toAxis / fromAxis: world ↔ (k, s, n) round trip; stretch chosen by the mitre plane.
- copingSpan (centred on L_IP/2) and nearKink (columns within the Level half-width).
- Straight P1 regression against spec §12 bearing values; bent round trip and continuity.
- Not wired into buildPier yet; the model still refuses bent coping (미실시).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Sign convention approved: a right (clockwise) deflection is positive.
solveIp4 now rotates the IP1→IP2 direction by −θ. Test covers a +10°
right turn with IP4 at (5, 0).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- Front and back coping tops that differ by 5 mm or more in any segment are
drawn as two coping parts split at the midline between the bearing rows.
Tolerance 5 mm and midline position are the draft assumptions (Q1·Q2).
- Scene extrudes each coping part across its own width.
- solveIp4 computes IP4 as the intersection of the IP1→IP2 line with the
line through IP3 turned by the bend angle (positive = counter-clockwise,
sign convention to be confirmed). Bent coping geometry remains 미실시.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- Columns closer than one footing length (10400) share a 일체기초 whose
length is the outer-column distance + 10400, centred between them (spec §4.6).
- Pile grid is computed from each footing's length (rows across 8150,
pile count along the length from (length − 1400) / 2250 + 1).
- Blinding concrete follows each combined footing.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- Multi-column coping (2·3주형): underside between columns drops 300 below
Level with 300 × 300 haunches (spec §4.5, Q3 추천안).
- Steel pipe pile diameter 609.6 mm (spec §4.5, Q5 추천안).
- Direct foundation keeps the 100 mm blinding concrete (Q4 추천안, test added).
- W03: bearing centre closer than half a block width to a step boundary.
- W04: block footprint outside the coping plan.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- public/samples/운곡교P1입력.xlsx is a byte copy of RAG/운곡교P1입력.xlsx
- loadP1 and the sample loader read the three-sheet input
- spec workbook (intent.PR) stays for the single-sheet regression tests
- test: input file has sheets 교각 · IP · 받침 and parses to P1 with no issues
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- buildTemplateWorkbook: 교각 · IP · 받침 sheets with the headers the parser
reads; value cells left empty so no blank-name rows raise E05
- dialog button 입력 템플릿 다운로드 (.xlsx)
- tests: sheet order, parser recognition, write-and-read round trip
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- one workbook may hold the three tables on separate sheets (user decision,
recorded in DOC/03_설계); spec 2.2 one-sheet-per-pier is superseded
- E05 for rows whose 교각명 has no matching 교각 정보 row, or a pier missing IP/받침
- helper sheets (IP only, 받침 only) are shown as 보조 표 시트, not selectable
- test: three-sheet workbook built from the P1 sheet
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- E05: a sheet whose pier, IP, or bearing table is not on the same sheet is
not selectable (spec 2.2: one sheet per pier)
- a sheet is selectable only if every pier in it builds; the reason is shown
next to the sheet instead of a selectable sheet with an unchecked pier
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- parseWorkbook returns a report per sheet (table counts, issues, ok)
- sheets with E-level issues cannot be selected (spec section 2.3)
- pier input carries its source sheet name
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- three.js scene in the pier frame (pivot at first column centre)
- coping as extruded elevation outline; columns, footings, piles, blinding, bearing blocks and pads
- four view presets, per-part visibility toggles
- workbook load (sample or file), result table, issue list and undetermined defaults
- frame orientation test and bounding-box test
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>