feat(structure): 사면안정(C군) 종류마다 컨테이너 「상세 내용」 · 그 안 구조물 조합 잇기(54-6)

- 옹벽 · 돌쌓기(찰) · 돌쌓기(메) · 흙막이 · 큰돌쌓기 · 소단 = 정의 그룹 「상세 내용」 하나에 옵션 전부(기준 측점 · 측점 범위 밖) · 칸 차례 그대로
- 잇기 = group_items(그룹 id) · 종류 단위 잇기 줄은 가림(그룹 있는 종류 규칙)
- 옛 종류 단위 잇기(summary_item)는 첫 그룹 컨테이너 잇기로 읽음 · [수정]·[저장] 때 group_items 로 옮겨 저장
- 저장 값 · 옵션 키 · 횡단 · 사면 · 집계 계산 그대로 · 정의 판 13 · 이력 판_12
- 시험 test_54_6_slope_container · ui_checks/54-6_사면안정_컨테이너(C군 6종 · B05 = B06 · 저장 → 다시 열기 · 되돌림)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PSXsvyDxjNmufteN5bqmt
This commit is contained in:
2026-10-06 10:33:38 +09:00
co-authored by Claude Opus 5.5
parent eafec12d85
commit 00dfd7f814
5 changed files with 3928 additions and 3 deletions
@@ -21,6 +21,7 @@ import { mergeStructureOptions } from "./B05_Profile_UI_Structures_Summary";
import { readStructureSpec, specRenderedKeys } from "./B05_Profile_UI_Structures_Spec";
import { asRoad } from "./B05_Profile_UI_Structures_Define";
import type { GroupBoxes } from "./B05_Profile_UI_Structures_Groups";
import { STRUCTURE_SPECS } from "../A00_Common/design/design_structure_pipe";
import {
readGroupItems,
readSummaryItem,
@@ -110,8 +111,13 @@ export function loadForm(ctx: StructuresCommitContext, target: StructureInstance
ctx.endFields.write(target.end_m ?? null, step);
ctx.memoField.value = target.memo ?? "";
ctx.renderOptionFields(shown.options);
ctx.setSummary(readSummaryItem(target.summary_item));
ctx.groupBoxes.set(readGroupItems(target.group_items));
const links = readGroupItems(target.group_items);
const summary = readSummaryItem(target.summary_item);
// 정의 그룹 종류는 종류 단위 잇기 줄이 없음 — 옛 종류 단위 값은 첫 그룹 컨테이너 잇기로 읽음(54-6)
const first = type && !STRUCTURE_SPECS[type.type_id] ? type.groups?.[0]?.id : undefined;
const moved = !!(first && summary && !links[first]);
ctx.setSummary(moved ? null : summary);
ctx.groupBoxes.set(moved ? { ...links, [first!]: summary! } : links);
ctx.groupBoxes.setShapes(target.options);
// 구간 직접 입력 시절에 저장된 항목 호환 — 길이·전길이 옵션이 없으면 저장된
// 시작~종료·기준점에서 역산해 채워 범위 표시·재저장이 이어지게 한다(2026-08-19).