feat(638-3): 예정노선 노선 세트 화면 — 속성 판 세트 칸 · 연도 밑 세트 줄 · 이름표 「2027-1」 · [잇기] · 저장 뒤 끊김 경고 · D04 세트 줄(요구 547 · 548)

- 속성 판 · 왼쪽 칸 세트 고름 = setChoices(있는 세트 + 해마다 새 세트) → assignSet(토막 · 구역 · 구간 고름 모두) · 옛 setPiecesYear · setLineYear 자리 갈음
- 왼쪽 해 줄 밑 세트 줄(길이 · 구간 수 · 덩이 수 = 마지막 서버 셈) · 같은 세트 고름 · 되돌리기 뒤 길이 글 옛 값 흠 고침(열쇠에 구간 꼴)
- 지도 이름표 「2027-1」 · 속 빈 마름모 = 같은 세트 · 마커 이름 「구간 나눔」
- [잇기] = 선 끝 노드 속성 판 · 우클릭 → 다른 선 끝 누름 = joinEnds 한 걸음 · Esc 그만
- [저장] 뒤 derived.sets parts > 1 · branch = 알림 「2027-1 이 2 덩이 · 빈틈 35.0 m」(Group.setWarnings · setGapM)
- D04 표 첫 칸 = 세트 · 선 · 덩이 · 갈래 + 확정 막힘 알림 띠
- 기능 표 set(B05 보기만) · join(B05 숨김) 줄 · 시험 638_group 빈틈 · 626_3 표 줄

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-01 12:00:21 +09:00
co-authored by Claude Opus 5.5
parent 0e4ce3cec1
commit eba5223356
16 changed files with 367 additions and 115 deletions
+13 -2
View File
@@ -47,8 +47,10 @@ export interface PlanKitParams {
idle?: () => boolean;
onMode: () => void;
onSelect: () => void;
/** 사업연도 시작(연도 고름). */
/** 사업연도 시작(새 세트 고름 · 새 선 처음 해). */
yearStart?: () => number;
/** 마지막 서버 세트 셈(왼쪽 세트 줄 덩이 수 · 고친 뒤 = null). */
sets?: () => ReadonlyArray<{ key: string; parts: number }> | null;
points?: PlanKitPoints;
/** 페이지 키(되돌리기 · 다시하기 · 재기 끔) — 긋기 · 고르기보다 먼저. */
onKey?: (event: KeyboardEvent) => boolean;
@@ -99,6 +101,7 @@ export function createPlanKit(params: PlanKitParams): PlanKit {
commitPoints,
showPoints: (list, next) => (points ? points.show(list, next) : params.show(next)),
enabled: idle,
year: () => params.yearStart?.() ?? new Date().getFullYear(),
editable,
onSelect: params.onSelect,
});
@@ -119,7 +122,15 @@ export function createPlanKit(params: PlanKitParams): PlanKit {
respan: draw.respan,
});
const pieces = featureShown(page, "years")
? createPlanPieces({ network, edit, editable, yearOptions: props.yearOptions, commit })
? createPlanPieces({
network,
edit,
editable,
setOptions: props.setOptions,
assign: props.assign,
commit,
sets: params.sets,
})
: null;
const marks = points
? createPlanPoints({