/* ============================================================================= * A00_Common/design/logic/design_calc_registry_facility.ts * 계산 등록부(`design_calc_registry.ts`) 뒤 몫 — 시설 · 토량 · 배수 · 3D · 추천 줄(칸 뜻 = 그 파일 머리). * 순수 자료 — 함수 import 없음(타입만). * ========================================================================== */ import type { CalcEntry } from "./design_calc_registry"; const B05 = "B05_Profile/"; const B05L = "B05_Profile/logic/"; const B06 = "B06_Section/"; const U = "common_util/"; export const FACILITY_ROWS: readonly CalcEntry[] = [ /* ── 시설 ─────────────────────────────────────────────────────────────── */ { id: "facility.follow", no: "F1", label: "시설 따라감(노선 바뀜 → 관 · 구조물 자리)", inputs: ["route.polyline"], outputs: ["새 좌표 · 누가거리(input.pipes · input.structures 고침)"], site: "browser_now", stage: "follow", ts: `${U}common_util_route_follow.ts#followStructures`, runner: "node:facility.follow", pair: null, mirror: [ "test_410_follow_xy", "test_344_2_route_pairs", "test_459_route_seat_mirror", "test_380_3_site_follow", "test_472_4_follow_node", ], note: "파이썬 `common_util_route_follow.follow_structures` = Node 부름 겉 · 저장 때 좌표 맞춤 `fill_structure_coordinates` = 같은 Node 입구 + fill(`fillStructureCoordinates` · 옛 좌표 지킴 · 0.1 mm · `placeOnLine` 노선 위 자리와 한 벌 · 511-B B-5)", }, { id: "facility.plus_follow", no: "F2", label: "추가 측점 따라감", inputs: ["route.polyline"], outputs: ["추가 측점(input.plusStations 고침)"], site: "browser_now", stage: "follow", ts: `${U}common_util_route_follow.ts#followPlusRows`, runner: "node:facility.plus_follow", pair: null, mirror: ["test_459_route_seat_mirror", "test_368_2_plus_stations", "test_472_4_follow_node"], note: "파이썬 `Plus_Stations.follow_plus_stations` = Node 부름 겉(정본 파일 읽기 · 쓰기)", }, { id: "facility.rebase", no: "F10", label: "관 · 구조물 초안 다시 얹기(노선 바뀐 [저장] — 서버 따라감 위에)", inputs: ["facility.follow", "input.pipes", "input.structures"], outputs: ["관 · 구조물 [저장] 본문(새 노선)"], site: "browser_now", stage: null, ts: `${U}common_util_route_follow.ts#rebasePipeDraft`, runner: "node:facility.rebase", pair: null, mirror: ["test_472_6_route_save", "test_459_route_seat_mirror"], note: "구조물 = 같은 파일 `rebaseStructureDraft` · 서버 [저장] 한 본문(`B06_Section_Router_DesignSave_Route`)이 부름", }, { id: "facility.stations", no: "F3", label: "시설 측점 계획", inputs: ["route.polyline", "input.pipes", "input.structures"], outputs: ["시설 측점"], site: "browser_now", stage: "stations", ts: `${U}common_util_structure_station.ts#planStations`, runner: "node:stations.plan", pair: `${U}common_util_structure_station.py#plan_stations`, mirror: ["test_322_3_plan_mirror", "test_234_1_structure_station"], note: "서버 측점 생성 = Node `stations.sections` · 남은 부름(이월 열쇠 주인 · 옛 측점 옮기기) = Node `stations.plan` · 파이썬 짝은 B06 형상 얹기 · B07 · 배수 · Node 못 돌릴 때", }, { id: "facility.attach", no: "F4", label: "형상 얹기(관 세트 · 벽 · 포장 · 맹암거 그림 자료)", inputs: ["input.pipes", "input.structures", "cross.design"], outputs: ["그림 자료"], site: "browser_now", stage: "cross", ts: `${U}common_util_structure_attach.ts#attachShapes`, runner: "node:facility.attach", pair: `${B06}B06_Section_Engine_Attach.py#attach_shapes`, mirror: ["test_323_4_attach_mirror"], note: "GET 상세 · 재생성 = Node facility.attach(511-B B-4) · 파이썬 짝 = Node 못 부를 때", }, { id: "facility.culvert_sets", no: "F5", label: "관 세트(관경 · 날개벽 · 집수정)", inputs: ["input.pipes"], outputs: ["관 세트"], site: "browser_now", stage: null, ts: `${U}common_util_culvert_sets.ts#pipeWallHeightM`, runner: `py:${B06}B06_Section_Engine_Culvert.py#pipe_wall_height_m`, pair: `${B06}B06_Section_Engine_Culvert.py#pipe_wall_height_m`, mirror: ["test_b06_culvert_sets_mirror", "test_b06_pipe_wall_height_mirror"], note: "짝 유지 — 파이썬 소비자 B04 · B07 · B08(472 밖)", }, { id: "facility.walls", no: "F6", label: "벽 · 포장", inputs: ["input.structures"], outputs: ["벽 · 포장"], site: "browser_now", stage: null, ts: `${U}common_util_structure_walls.ts#wallSpecsFrom`, runner: `py:${B06}B06_Section_Engine_Structures_Wall.py#wall_specs_from`, pair: `${B06}B06_Section_Engine_Structures_Wall.py#wall_specs_from`, mirror: ["test_b06_structure_walls_mirror", "test_b06_structure_pavement_mirror"], note: "짝 유지 — 포장 짝 common_util_structure_pavement(.py · .ts) · B07 소비", }, { id: "structure.layouts", no: "F7", label: "관 길이 · 구조물 폐회로 면적 · 다단 벽", inputs: ["cross.design", "cross.areas", "facility.attach"], outputs: ["관 길이 · 구조물 면적 · 선 다단 벽", "db:cross_sections.design"], site: "browser_now", stage: null, ts: `${B06}logic/B06_Section_Structure_Layouts.ts#structureAreaRows`, runner: "node:structure.layouts", pair: null, mirror: ["test_b06_pipe_length", "test_299_ford_span_pipe"], }, { id: "excavation.trench", no: "F8", label: "터파기(관 폭 · 벽 단면)", inputs: ["facility.culvert_sets", "facility.walls"], outputs: ["터파기 폭 · 단면적"], site: "browser_now", stage: null, ts: `${U}common_util_excavation.ts#wallTrenchAreaM2`, runner: "node:excavation.trench", pair: null, mirror: ["test_excavation_mirror"], note: "서버 = Node 한 벌 · 파이썬 짝 운영 부름 0 → 걷음(511-B B-6)", }, { id: "facility.ford", no: "F9", label: "세월교 높이 · 깊이", inputs: ["input.structures"], outputs: ["높이"], site: "browser_now", stage: null, ts: "A00_Common/design/design_structure_ford_calc.ts#fordHeightM", runner: "py:B04_PreProcess/B04_PreProcess_Router_Basins.py#ford_height_m", pair: "B04_PreProcess/B04_PreProcess_Router_Basins.py#ford_height_m", mirror: ["test_65_ford_defaults", "test_73_11_b08_hydro_box_ford"], note: "짝 유지(B04 · B08)", }, /* ── 토량 ─────────────────────────────────────────────────────────────── */ { id: "masshaul.cumulative", no: "E1", label: "누가토량", inputs: ["cross.areas", "structure.layouts", "context.earthwork_conversion"], outputs: ["누가토량 · 배지", "file:longitudinal.mass_haul"], site: "browser_now", stage: null, ts: `${U}common_util_mass_haul.ts#computeMassHaul`, runner: "node:masshaul.cumulative", pair: null, mirror: [], note: "브라우저는 그릴 때 셈(B05_Profile_UI_Profile_MassHaul) · 같은 코드", }, { id: "haul.plan", no: "E2", label: "유토 배분 · 운반거리", inputs: ["masshaul.cumulative", "context.haul_equipment_limits"], outputs: ["배분", "file:longitudinal.mass_haul.haul_plan"], site: "server_canon", stage: null, ts: `${U}common_util_mass_haul_balance.ts#computeHaulPlan`, runner: "node:haul.plan", pair: null, mirror: ["test_511_c_haul_node"], note: "기본 /haul-plan(늘 떠 있는 Node haul.view) · 판 haul both = 브라우저 dynamic import(511-C)", }, /* ── 배수 · 3D · 추천 ────────────────────────────────────────────────── */ { id: "drainage.basins", no: "D1", label: "배수유역 세부 나눔", inputs: ["route.polyline", "input.pipes"], outputs: ["유역 · 관경 제안"], site: "server_only", stage: "drainage", ts: null, runner: `py:${U}common_util_drainage_detail.py#build_detail`, pair: null, mirror: [], note: "TS 는 일정만(B05_Profile/logic/B05_Profile_Drainage_Live.ts)", }, { id: "drainage.suggest", no: "D2", label: "관 자리 제안", inputs: ["route.polyline", "drainage.basins"], outputs: ["제안"], site: "server_only", stage: null, ts: null, runner: `py:${U}common_util_stream_crossing.py#propose_pipes`, pair: null, mirror: [], note: "[자동 제안](510) — TS 는 후보 그리기 · 고름만(B05_Profile/B05_Profile_UI_Drainage_Propose.ts)", }, { id: "corridor.mesh", no: "D3", label: "3D 길 모형", inputs: ["profile.alignment", "cross.design"], outputs: ["3D", "file:corridor"], site: "browser_now", stage: "corridor", ts: `${B05}logic/B05_Profile_Corridor_Build.ts#buildCorridor`, runner: "node:corridor.mesh", pair: null, mirror: [], }, { id: "footprint.plan", no: "D4", label: "평면 발자국(절성토선)", inputs: ["cross.design", "ground.sample"], outputs: ["발자국", "store.footprint"], site: "browser_only", stage: "footprint", ts: `${B05L}B05_Profile_PlanFootprint.ts#footprintRecord`, runner: `browser:${B05L}B05_Profile_Footprint_Stage.ts#footprintStage`, pair: "B07_DesignDetail/B07_DesignDetail_Engine_Cad_PlanSlope.py#route_frame", mirror: ["test_346_2_plan_footprint_mirror"], note: "서버 정본 없음(즉시 후보) · X4 B07 파이썬이 따로 셈(472 밖)", }, { id: "route.recommend", no: "N1", label: "노선 추천", inputs: ["file:dtm_grid", "file:streams"], outputs: ["추천 노선"], site: "server_only", stage: null, ts: null, runner: `py:${B05}B05_Profile_Engine_RouteInitial.py#generate_initial_route`, pair: null, mirror: ["test_419_1_recommend_engine"], note: "[적용] 정본은 route.polyline · stations.list 길 · TS 는 보기만(B05_Profile_UI_RouteEdit_Initial_Model.ts)", }, ];