Files
Aislo/docs/guide/B05_B06/calculations.md
T

72 lines
12 KiB
Markdown

---
type: concept
status: stable
related_pages: ["[[design_page/index]]", "[[design_page/values]]", "[[design_page/rules]]"]
last_updated: 2026-10-19
source: ["docs/raw/조사/2026-10-19_472_구조다시세움_목록.md", "PLAN.md 467"]
---
# 계산 목록 — TS · 파이썬 짝 · Node 묶음 · 실행 자리
- Node 묶음 — sc = server-calc · co = corridor · ex = b07-extent · dc = design-calc(등록부 입구 `A00_Common/design/logic/design_calc_node.ts` · 파이썬 `common_util_calc_runner.run_calc`) · 다시 지음 `npm run -s build:server-calc|corridor|b07-extent|design-calc`.
- 실행 자리 — 짝 = 브라우저 즉시 TS + [저장] 정본 파이썬 · ② = 같은 TS 를 브라우저 · Node 둘 다 · 브라우저 = 입력 도구 · 표시만 · 서버 = 무거운 GIS · 추천.
- 줄 더함 · 바꿈 = 새 계산 · 짝 · 묶음이 바뀐 커밋에서.
| # | 계산 | TS | 파이썬 짝 | Node | 실행 자리 · 거울 시험 |
|---|---|---|---|---|---|
| R1 | 평면 폴리라인 · 곡선(BC · EC · MC) · 선 자리 x · y 4자리 한 벌(초안 그린 선 = 계획노선 csv = 노선 geojson) | `logic/B05_Profile_UI_RouteEdit_Curve.ts:243` · `logic/B05_Profile_Pipeline_RouteGround.ts:66` draftLine | `common_util_route_polyline.py:579` · `common_util_route_geometry.py` write_route_csv · `B05_Profile_Engine.py:24` _route_geojson | — | 짝 · `test_route_polyline_browser_mirror` · `test_475_1_route_digits` |
| R2 | 손잡이 → IP · R | `logic/B05_Profile_UI_RouteEdit_Curve.ts` dragHandleTo | — | — | 브라우저 · `test_route_polyline_handle_drag` |
| R3 | 노드 편집 규칙(곡선 한도 · 고정점) | `logic/B05_Profile_UI_RouteEdit_Edits.ts` | `B05_Profile_Route_NodeEdits.py:21` | — | 짝 · `test_430_route_edit_rules` |
| R4 | 스냅 맞춤(MC → 일반측점) | `logic/B05_Profile_RouteEdit_StationFit.ts` | — | — | 브라우저 · `test_366_3_station_fit` |
| R5 | 측점 틀(법선 · 방위) | `logic/B05_Profile_UI_RouteEdit_Frame.ts:61` | `B05_Profile_Engine_Sections_Core.py:449-519` | — | 짝(입력 선 다름) · `test_b05_routeedit_frame_mirror` |
| R6 | 측점 목록 | `logic/B05_Profile_Sections_Stations.ts:276` · `logic/design_pipeline_stations.ts` | `B05_Profile_Engine_Sections_Core.py:449` | — | 짝 · `test_344_3_pipeline_stations_mirror` · `test_407_curve_station` |
| R7 | 측점 열쇠 | `common_util_station_key.ts:32` | `common_util_station_key.py:32` | — | 짝 · `test_344_3_station_key_mirror` |
| R8 | 측점 갈아끼움 | `logic/B06_Section_Station_Swap.ts:189` | — | — | 브라우저 · `test_346_2_station_swap` · `test_272_swap_keeps_canon` |
| G1 | 지반 표본 | `common_util_surface_sampler.ts:65` · `B05_Profile_Api_TerrainGrid.ts:33-99` | `common_util_surface_sampler.py:210`(npz) | ex | 짝 · `test_344_1_surface_sampler_mirror` |
| G2 | 미교차 넓힘 표본 | `logic/B05_Profile_Sections_Ground.ts:269` | `B06_Section_Engine_SampleExtend.py:62` | — | 짝 · `test_344_1_sections_ground_mirror` |
| G3 | 넓힘(표본 폭 넘음) | — | `B06_Section_Router_Widen.py:80` | — | 서버(저장 밖 DB 씀) |
| G4 | 상단측 | `logic/B05_Profile_Pipeline_Detail.ts` uphillSide | `B05_Profile_Engine_Sections_Core.py` uphill_side | — | 짝 · `test_346_2_pipeline_cross_page` |
| P1 | 첫 계획선(base PVI) | `logic/B05_Profile_Grade_Ground.ts:114` · `logic/B05_Profile_Pipeline_Grade.ts:285` | `B05_Profile_Engine_Grade_Profile.py:537` | — | 짝 · `test_344_2_route_pairs` |
| P2 | 계획선 짓기 | `logic/B05_Profile_UI_Profile_Alignment.ts:401` | `B05_Profile_Engine_Grade_Alignment.py:494` | — | 짝 · `test_426_profile_straight` · `test_213_1_hidden_station_pvi` · `test_438_1_initial_straighten` |
| P3 | 종단곡선 법칙(L · R = L/Δ) | `logic/B05_Profile_Profile_CurveLaw.ts` | `B05_Profile_Engine_Grade_CurveLaw.py` | — | 짝 · `test_432_1_curve_law` |
| P4 | 직선 판정 | `logic/B05_Profile_Profile_Straight.ts:21` | `B05_Profile_Engine_Grade_Alignment.py` | — | 짝 · `test_426_profile_straight` · `test_271_straighten_pick` |
| P5 | 노선 바뀜 계획고 옮김 | `logic/B05_Profile_Grade_Carry.ts:188` | `B05_Profile_Engine_Grade_Carry.py:149` | — | 짝 · `test_400_profile_carry` · `test_349_0v_route_save_span` |
| P6 | 옮긴 시설 꼭짓점 세움 | `logic/B05_Profile_Grade_Seat.ts:32` · `common_util_structure_station.ts:356` | `B05_Profile_Router_Confirm.py:220 · 306` | — | 짝 · `test_427_1_follow_seat` · `test_459_route_seat_mirror` |
| P7 | 직선화 · 자유지정 · 쉬프트 · 시종점 | `logic/B05_Profile_UI_Profile_Straighten.ts` · `logic/design_profile_free.ts` · `logic/B05_Profile_UI_Profile_Pivot.ts` · `logic/B05_Profile_EndOffsets.ts` | — | — | 브라우저(편집값만 저장 → P2) |
| P8 | 종단 경고(기울기 · 법정 L · 최소 R · 피복) | `B05_Profile_UI_Panel_Fields.ts` · `logic/B05_Profile_UI_Profile_Guard.ts` · `B05_Profile_UI_Profile_MinCover.ts` · 경고 글 `logic/B05_Profile_UI_Profile_Alignment.ts` buildAlignment | `B05_Profile_Engine_Grade.py` · `B05_Profile_PageSettings.py` · 경고 글 `B05_Profile_Engine_Grade_Alignment.py` build_alignment | — | 짝 · [저장] · [확정] = `B06_Section_Server_Calc_Prebuild.py` refresh_alignment 가 경고만 다시 씀(기하 그대로) · `test_442_2_grade_limit_mirror` · `test_472_save_warnings` |
| C1 | 횡단 설계선 | `common_util_cross_design.ts:267` · `logic/B06_Section_Cross_Stage.ts:93` · `B06_Section_Cross_Refresh.ts:330` | `B06_Section_Engine_Design.py:195`(B07 · 추천 · Route_Save · B05 확정 · 넓힘 찾기) | dc · ex | ② · [저장] · [확정] 다시 셈 = Node(`B06_Section_Engine_Design_Node.py` 측점 묶음 · 파이썬은 입력 조립) · `test_b06_cross_design_mirror` · `test_472_1_golden` 설계선 점 1e-4 |
| C2 | 단면적(절 · 성 · 측구 · 층따기) | `common_util_cross_design_areas.ts` | `B06_Section_Engine_Areas.py` | dc · sc · ex | ② · C1 과 한 셈 · 정본 = 표준 · 구조물 측점 모두 Node |
| C3 | 확정 보정(포장 · 세월교 · 기울임) | `logic/B06_Section_Cross_Enforce.ts:40` | `B06_Section_Router_Design_Ranges.py` · `B06_Section_Engine_Tilt.py` | dc(다시 세운 설계) | 구간 판정 짝 · `test_349_0n_cross_enforce_mirror` |
| C4 | 소단 구간(구조물 → 구간) | `common_util_berm_spans.ts`(시설 줄 · 다시 셈이 부름) | `B06_Section_Engine_Structures_Wall.py:124`(Node 못 부를 때만) | dc | ② · `test_272_berm_source` · `test_472_3_calc_runner` |
| C5 | 소단 사면 점 | `common_util_cross_berm.ts` | `common_util_cross_berm.py` | dc · sc · co · ex | C1 과 한 셈 · `test_178_2_berm_fill_mirror` |
| C6 | 맹암거 얹기 · 기울임 | `common_util_structure_underdrain.ts` | `B06_Section_Engine_Tilt.py` | — | 짝 · 거울 시험 없음 |
| C7 | 반폭 맞춤 · 성토 5 m 경고 | `logic/B06_Section_UI_Cross_Fit.ts` · `logic/B06_Section_UI_Cross_FillSlope_Warn.ts` | — | ex(Fit) | 브라우저 |
| F1 | 시설 따라감(노선 바뀜) | `common_util_route_follow.ts:291` · `logic/B05_Profile_Pipeline_Follow.ts` · `logic/B05_Profile_Structure_Follow.ts` | `common_util_route_follow.py:120` | — | 짝 · `test_410_follow_xy` · `test_344_2_route_pairs` |
| F2 | 추가 측점 따라감 | `B05_Profile_Api_PlusStations.ts` followPlusDraft | `B05_Profile_Plus_Stations.py:82` | — | 짝 · `test_459_route_seat_mirror` |
| F3 | 시설 측점 계획 | `common_util_structure_station.ts` | `common_util_structure_station.py` | — | 짝 · `test_322_3_plan_mirror` |
| F4 | 형상 얹기(관 세트 · 벽 · 포장 그림 자료) — 관 = 지금 노선에 얹은 저장분(서버 `route_pipe_points` = 측점 계획 · 관 지점 GET 과 같은 이월) | `common_util_structure_attach.ts:130` | `B06_Section_Engine_Attach.py:114` | — | 짝 · `test_323_4_attach_mirror` · `test_472_d_pipe_route_attach` |
| F5 | 관 세트(관경 · 날개벽 · 집수정) | `common_util_culvert_sets.ts` · `logic/B06_Section_UI_Cross_Culvert_Const.ts` | `B06_Section_Engine_Culvert.py` | Const = sc · co · ex | 짝 · `test_b06_culvert_sets_mirror` · `test_b06_pipe_wall_height_mirror` |
| F6 | 벽 · 포장 | `common_util_structure_walls.ts` · `common_util_structure_pavement.ts` | `B06_Section_Engine_Structures_Wall.py` · `common_util_structure_pavement.py` | — | 짝 · `test_b06_structure_walls_mirror` · `test_b06_structure_pavement_mirror` |
| F7 | 관 길이 · 구조물 면적 · 다단 벽 | `B06_Section_Structure_Layouts.ts:95 · 287` · `design_structure_pipe_calc.ts` · `common_util_cross_structure_areas.ts` | — | sc | ② · `test_b06_pipe_length` · `test_299_ford_span_pipe` |
| F8 | 터파기 | `common_util_excavation.ts` | `common_util_excavation.py`(운영 부름 없음) | sc · co · ex | ② · `test_excavation_mirror` |
| F9 | 세월교 높이 · 깊이 | `design_structure_ford_calc.ts` | `B04_PreProcess_Router_Basins` ford_height_m · `B08_Quantity_Engine_Hydro` ford_depth | — | 짝 · `test_65_ford_defaults` · `test_73_11_b08_hydro_box_ford` |
| E1 | 누가토량 | `common_util_mass_haul.ts:426` | — | sc | ② · `test_309_mass_haul_badge` |
| E2 | 유토 배분 · 운반거리 | `common_util_mass_haul_balance.ts:584` | — | sc | 서버 Node 만(`/haul-plan`) |
| D1 | 배수유역 세부 나눔 | `logic/B05_Profile_Drainage_Live.ts`(일정만) | `common_util_drainage_detail.py` · `B04_PreProcess_Router_Basins.py:538` | — | 서버 |
| D2 | 관 자리 제안 | `logic/B05_Profile_Drainage_Suggest.ts`(모으기만) | suggest_pipe_positions | — | 서버 |
| D3 | 3D 길 모형 | `B05_Profile_UI_Corridor_Build.ts` · Worker | — | co | ②(`B05_Profile_Corridor_Prebuild.py`) |
| D4 | 평면 발자국 | `logic/B05_Profile_PlanFootprint.ts:160` · `logic/B05_Profile_Footprint_Stage.ts` | `B07_DesignDetail_Engine_Cad_PlanSlope.py`(B07 따로) | — | 브라우저 · `test_346_2_plan_footprint_mirror` |
| N1 | 노선 추천 | `B05_Profile_UI_RouteEdit_Initial_Model.ts`(보기만) | `B05_Profile_Engine_RouteInitial*` | — | 서버 · `test_419_1_recommend_engine` |
| N2 | 추천 후보 초기 종단(476) — [적용] 체인과 같은 조각을 메모리에서(노선 짜기 · 시설 따라감 · `build_sections` 438 · 켬 = 균형 얹기) · 저장본 `route_recommend/initial` · 화면 펴기 짝 = `flattenServerPlan` ↔ `draft_nodes` | 그리기만(476-2) · `logic/B05_Profile_UI_RouteEdit_Edits.ts` flattenServerPlan | `B05_Profile_Engine_InitialProfile.py` · `B05_Profile_Router_RouteInitial_Initial.py` | — | 서버 · [적용]은 체인이 다시 셈 · `test_476_1_recommend_initial`(체인 대조 0 mm) |
## 짝인데 값이 갈리는 자리
| # | 자리 | 브라우저 | 서버 | 처리 |
|---|---|---|---|---|
| X1 | 단면 모양 기본값 | `"left_cut"`(`B06_Section_Cross_Refresh.ts:438`) | `default_section_modes`(`B06_Section_Router_Design.py:402`) | 사용자 협의 · 손대지 않음 |
| X2 | 지반 표본 출처 · 입력 선 | 격자 `.bin` · `/route/plan` planned 선 | npz `sample_xy` · 저장 경로 폴리라인 | 노선 초안 없는 차례 = 정본 표본 유지로 막음 |
| X3 | 단면적 두 갈래 | 전부 TS | 모두 Node(472-4 ②) | 풀림 · 남은 차 = 설계선 점 반올림 동점 1e-4 m(파이썬 round 짝수 쪽 · TS 위쪽) |
| X4 | 평면 발자국 | TS PlanFootprint | B07 파이썬 PlanSlope | 거울 시험 |
| X5 | 경고 기준표 | `B05_Profile_UI_Panel_Fields.ts` 안 표 | `FOREST_ROAD_PROFILE_CRITERIA` | 거울 시험 · 자료 두 벌 |
| X6 | 노선 바뀜 넘기는 칸 | `B06_Section_Station_Keys.ts:46` 근처 | `B05_Profile_Route_Save.py:275-279` CARRY_INPUT_KEYS · ROUTE_CARRY_KEYS | 손으로 맞춘 목록 둘 · 거울 없음 |