fix(455 433-5 관 옮김 이웃): 새 꼭짓점 이웃이 옮기기 전 계획고에서 뜨면 맞춤 — 바로 앞뒤부터 1mm 넘는 만큼 · 높이 고친 꼭짓점 그대로 · TS ↔ 파이썬 짝

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-18 21:28:08 +09:00
co-authored by Claude Opus 5.5
parent d0779af302
commit 19bca9287b
6 changed files with 151 additions and 33 deletions
+9 -3
View File
@@ -344,14 +344,15 @@ export function oneStationList<S extends ListedStation, P extends { chainage_m:
* 정수 m 맞춤 자리(272)면 높이 그대로 옮김. 옮긴 관 · 구조물(427) — 짝 못 찾은 옛 측점과 새 측점이 같은
* 수면 차례대로 짝 · 높이 고친 꼭짓점(`edited` = 저장 `station_offsets` 키)은 높이째 · 나머지 새 측점은
* `seat`(세움은 부르는 쪽이 `seatBornNodes` · B05_Profile/logic/B05_Profile_Grade_Seat.ts) · 짝 없는 옛
* 꼭짓점은 지움. 거울 시험 = `resources/tester/test_427_1_follow_seat.py`.
* 꼭짓점은 지움 · `held` = 옮긴 뒤 높이 고친 꼭짓점 측점(서버 옮긴 `station_offsets` 키 · 433-5).
* 거울 시험 = `resources/tester/test_427_1_follow_seat.py`.
*/
export function followMovedNodes<N extends { chainage_m: number }>(
nodes: ReadonlyArray<N>,
gone: ReadonlyArray<number>,
born: ReadonlyArray<number>,
edited: ReadonlyArray<string> = [],
): { nodes: N[]; seat: number[] } {
): { nodes: N[]; seat: number[]; held: number[] } {
const target = (old: number): number | null => {
const near = born.find((value) => Math.abs(value - old) < 0.006);
if (near !== undefined) return near;
@@ -379,5 +380,10 @@ export function followMovedNodes<N extends { chainage_m: number }>(
const to = moves.get(old) ?? null;
return to === null || seat.includes(to) ? [] : [{ ...node, chainage_m: to }];
});
return { nodes: kept, seat };
const held = edited.flatMap((key) => {
const old = gone.find((value) => Math.abs(value - Number(key)) < 0.006);
const to = old === undefined ? Number(key) : (moves.get(old) ?? null);
return to === null ? [] : [to];
});
return { nodes: kept, seat, held };
}