Files
Aislo/resources/tester/helper_189_1_pave_shape.cjs
T
eomsangdonandClaude Opus 5.5 9e69bec512 fix(B06·B05): 노면공 고름 세 갈래 · 형상 누름 = 목록 고름 · 카드 하나 = 그 측점(189-1)
- ② 카드 안 노면공 포장층 누름 = 목록 고름과 같은 길(범위 카드 전부 · 포장층 강조) — 카드 고름보다 먼저 가로챔
- ③ 카드 하나 누름 = 연 노면공 · 범위 강조 풂 · 그 카드 하나(165-1 노면공 지킴 · 167-3 재누름 그대로 없앰)
- 카드 고름 세션 = 그 측점(구조물 id 는 목록 · 알약 · 넘김이 고른 것만)
- 종단: 구조물 넘김이면 측점선 · 3D 띠 안 켬
- 새 시험 test_189_1_pave_pick · test_165 · test_188_1 기대값 41번 규칙으로

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

40 lines
2.0 KiB
JavaScript

/* PLAN 189-1 단위검증 헬퍼 — 카드 안 누른 포장층 → 그 노면공(`pavementAt`) · 범위 표식으로 겹친 노면공 가름.
* 화면 TS(`B06_Section_UI_Cross_Design_Surface.ts`)를 그 자리에서 트랜스파일해 Node 로 돌림 · 결과 = 표준출력 JSON.
* 짝 = `test_189_1_pave_pick.py`(세 갈래 상태는 `helper_165_pavement_flow.cjs` 가 냄).
*/
const fs = require("fs");
const path = require("path");
const ts = require(path.join(__dirname, "..", "..", "config", "node_modules", "typescript"));
const ROOT = path.join(__dirname, "..", "..");
const file = path.join(ROOT, "B06_Section", "B06_Section_UI_Cross_Design_Surface.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, () => ({}));
const { pavementAt } = box.exports;
const marks = [
{ structure_id: "pave", type_id: "pavement_concrete", start_m: 30, end_m: 250 },
{ structure_id: "pave2", type_id: "pavement_concrete", start_m: 100, end_m: 200 },
{ structure_id: "wall", type_id: "retaining_wall", start_m: 100, end_m: 200 },
];
/** 누른 요소 흉내 — `closest(".b06-chart__pavement")` 가 그 층(없으면 null). */
const hit = (dataset) => ({ closest: () => (dataset ? { dataset } : null) });
const layer = (type, start, end) => ({
paveType: type,
paveStart: String(start),
paveEnd: String(end),
});
const out = {
pave: pavementAt(hit(layer("pavement_concrete", 30, 250)), marks)?.structure_id ?? null,
pave2: pavementAt(hit(layer("pavement_concrete", 100, 200)), marks)?.structure_id ?? null,
plainLayer: pavementAt(hit({}), marks)?.structure_id ?? null, // 범위 표식 없는 카드 포장
outside: pavementAt(hit(null), marks)?.structure_id ?? null,
noTarget: pavementAt(null, marks)?.structure_id ?? null,
unknown: pavementAt(hit(layer("pavement_concrete", 0, 10)), marks)?.structure_id ?? null,
};
process.stdout.write(JSON.stringify(out));