- 구조물마다 조합 줄 뒤에 좌측 패널 옵션 줄 — 폼과 같은 컨테이너 · 이름 · 보이는 칸(`structureOptionLines`) · 구조 갈래에 안 맞는 옛 값 뺌 · 필수 상자 빈 칸 = 폼 기본값 - B06 [상세] 모달 = 화면 TS 직접 · B07 = 같은 TS 를 Node 번들(B07_DesignDetail_Note_Options_Node · build:b07-note)로 받아 파이썬 짝이 붙임 · 실패는 조합 줄만 - 번들 낡음 판정에 A00_Common/design 더함 - 시험 test_166_1(진짜 명세 · B07 = 화면 같은 줄) · test_260 · test_265 기대값 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LLCk2y5xE8YGVgjbTntWsY
46 lines
2.0 KiB
TypeScript
46 lines
2.0 KiB
TypeScript
/* =============================================================================
|
|
* B07_DesignDetail_Note_Options_Node.ts
|
|
* B07 횡단도 표 위 CAD 칸 미리 넣음의 **좌측 패널 옵션 줄**을 서버가 내는 Node 진입점(166-1 ·
|
|
* CLAUDE.md 5장 「계산 자리」 ②).
|
|
*
|
|
* 화면(B06 [상세] 모달 `loadNoteThings`)과 같은 함수(`structureOptionLines` · 정의 덧칸 `withDefinition`)를
|
|
* 그대로 돌린다 — 파이썬 짝(`B07_DesignDetail_Engine_Cad_CulvertNote`)은 받은 줄을 구조물마다 조합 줄 뒤에 붙인다.
|
|
*
|
|
* 실행: node <번들> <입력.json> <출력.json>
|
|
* 입력 { things: [{ type_id, options }], types: GET /projects/structure-types 의 types,
|
|
* definition: 구조물 정의(GET /m02/structure-definition 과 같은 꼴) }
|
|
* 출력 { lines: string[][] } — things 차례대로
|
|
* 끝 코드: 0 성공 / 2 인자 오류
|
|
* ========================================================================== */
|
|
|
|
import { readFileSync, writeFileSync } from "node:fs";
|
|
import type { StructureType } from "../B05_Profile/B05_Profile_Api_Structures";
|
|
import { structureOptionLines } from "../B05_Profile/B05_Profile_UI_Structures_Balloon";
|
|
import {
|
|
withDefinition,
|
|
type StructureDefinition,
|
|
} from "../B05_Profile/B05_Profile_UI_Structures_Define";
|
|
|
|
interface Input {
|
|
things?: Array<{ type_id: string; options?: Record<string, string | number> }>;
|
|
types?: StructureType[];
|
|
definition?: StructureDefinition | null;
|
|
}
|
|
|
|
const [inputPath, outputPath] = process.argv.slice(2);
|
|
if (!inputPath || !outputPath) {
|
|
console.error("사용: node <번들> <입력.json> <출력.json>");
|
|
process.exit(2);
|
|
}
|
|
const input = JSON.parse(readFileSync(inputPath, "utf8")) as Input;
|
|
const types = new Map(
|
|
withDefinition(input.types ?? [], input.definition ?? null).map((type) => [type.type_id, type]),
|
|
);
|
|
const lines = (input.things ?? []).map((thing) =>
|
|
structureOptionLines(
|
|
{ type_id: thing.type_id, options: thing.options ?? {} },
|
|
types.get(thing.type_id),
|
|
),
|
|
);
|
|
writeFileSync(outputPath, JSON.stringify({ lines }));
|