Files
Aislo/resources/tester/helper_446_widen_confirm.cjs
T
eomsangdonandClaude Opus 5.5 341e83114e fix(446 B06 표본 넓힘): 카드 폭 넘김 다시 만들기가 측점 설계 · 표준 횡단면 · 유토 풍선 · 계획고 편집 옮겨 담음 · 다시 만들기 전 확인창
- 반폭 재생성 = 옛 횡단 행 data · 상태를 측점 열쇠(0.01 m)로 새 행에 · 옛 종단 data 사용자 키(표준 횡단면 · 유토 · 계획 입력 · 상태) — 같은 트랜잭션
- 계획고 편집 = 옛 계획선 통째(_carry_profile 같은 노선 갈래) · 실패면 종 · 횡단 파일 되돌림
- 넓힌 지반 위 [저장]과 같은 서버 재계산
- 화면 = 다시 만들기 전 확인창 · 취소면 재생성 없음 · 오버레이 셈 짝

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Se7ytqbohmBQnfYpwYFnYf
2026-10-18 18:42:21 +09:00

58 lines
2.2 KiB
JavaScript

/* 카드 폭 넘김 다시 만들기 확인창(PLAN 446) 단위검증 헬퍼 — `createSampleWidener` 를 트랜스파일해 돌린다.
* 취소 = 재생성 없음 · 오버레이 셈 그대로 · 확인 = 재생성 한 번 · 오버레이 올림 · 내림 짝. 결과는 JSON 한 벌.
* 짝 = `test_446_widen_carry.py`.
*/
const fs = require("fs");
const path = require("path");
const ts = require(path.join(__dirname, "..", "..", "config", "node_modules", "typescript"));
const ROOT = path.join(__dirname, "..", "..");
const calls = { regenerate: [], overlay: 0, asked: [] };
let answer = false;
const STUBS = {
"@ui/ui_template_locale": {
currentLanguageIndex: 0,
ui_locales: new Proxy({}, { get: (_t, key) => [`${String(key)} {width}/{sampled}`] }),
},
"@ui/ui_template_elements": {
showLoadingOverlay: () => calls.overlay++,
hideLoadingOverlay: () => calls.overlay--,
showToast: () => {},
showConfirmDialog: async (message) => {
calls.asked.push(message);
return answer;
},
},
"./B06_Section_Api_Fetch": {
regenerateSections: async (_p, _r, width) => calls.regenerate.push(width),
},
"./B06_Section_Section_Store": { loadSectionDetail: async () => ({ cross_sections: [] }) },
};
const file = path.join(ROOT, "B06_Section", "B06_Section_UI_Page_Common.ts");
const js = ts.transpileModule(fs.readFileSync(file, "utf8"), {
compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2020 },
}).outputText;
const box = { exports: {} };
new Function("exports", "module", "require", js)(box.exports, box, (r) => STUBS[r]);
(async () => {
const widen = box.exports.createSampleWidener({
target: () => ({ projectId: "p", routeId: 1 }),
sampledHalfWidth: () => 20,
applyDetail: () => {},
});
const out = {};
out.within = await widen(15); // 표본 안 = 묻지 않음
out.withinAsked = calls.asked.length;
out.cancel = await widen(21);
out.cancelCalls = calls.regenerate.length;
out.cancelOverlay = calls.overlay;
answer = true;
out.ok = await widen(21);
out.okCalls = [...calls.regenerate];
out.okOverlay = calls.overlay;
out.asked = calls.asked;
process.stdout.write(JSON.stringify(out));
})();