diff --git a/A00_Common/design/CLAUDE.md b/A00_Common/design/CLAUDE.md new file mode 100644 index 000000000..8d96894a0 --- /dev/null +++ b/A00_Common/design/CLAUDE.md @@ -0,0 +1,38 @@ +# A00_Common/design 지침 + +B05 · B06 한 페이지 뼈대 — 주소 둘(`#/b05-profile` · `#/b06-section`)이 `design_page` 하나를 엶. + +갈래 지도(앞머리 → 하는 일): + +- `design_page` 페이지 틀 · 보기 전환(mountCenter) · `design_shared` · `design_panel` · `design_dock` 공용 틀 · 좌측 칸 · 도크 +- `design_view_profile` 종단 보기 · `design_view_cross` 횡단 보기 +- `design_profile*` 가운데 아래 종단도 판(자리 · 겹침 · 떼어 보기 · 자유 보기) +- `design_store` 가게 · `design_selection` · `design_pick_*` 선택 · 집기 · `design_pipe_ids` 관 id · `design_sections` 측점 +- `design_save` [저장] · `design_reset` [초기화] — B05 · B06 캐시 한 번에 +- `design_structure_*` 구조물 명세 · `_calc` 명세 계산 + +① 짝(ts ↔ py · 거울 시험): + +- `design_structure_ford_calc.ts` fordHeightM ↔ `B04_PreProcess_Router_Basins.ford_height_m` · `test_65_ford_defaults.py` +- 같은 파일 ford_depth ↔ `B08_Quantity_Engine_Hydro.ford_depth` · `test_73_11_b08_hydro_box_ford.py` +- `design_structure_pipe_calc.ts` 관 길이 = B06 `computeStoredLayouts`(② 서버 Node) 그대로 · 새로 셈하지 않음 + +서버 Node 묶음: + +- 입구 없음 · 끌려감 = `design_pick_match` · `design_pipe_ids` · `design_selection`(corridor · server-calc · b07-extent) · `design_store` · `design_structure_{box,ford,ford_pavement,guard,pipe,road,spec}`(b07-extent · b07-note) · 상위 `A00_Common/b_page_state` +- 끌려가는 파일 모듈 맨 위에 DOM · window · sessionStorage 금지 · 고치면 해당 build 다시 지어 시험 + +남의 페이지가 부르는 파일(고치면 부르는 쪽 시험도): + +- B05 · B06 둘 다 — `design_panel` · `design_pick_match` · `design_pipe_ids` · `design_profile` · `design_sections` · `design_selection`(B04 도) · `design_shared` · `design_structure_pipe_calc` · `design_structure_status` +- M02 — `design_structure_form` · `design_structure_pipe` · `design_structure_spec` + +logic/ 규칙: + +- 페이지 전용 계산은 각 페이지 `logic/` · B05 · B06 공용 계산은 `common_util` +- design 은 화면 · 가게 자리 — 새 순수 계산을 여기 두지 않음 + +금지: + +- B05 · B06 캐시를 따로 저장하지 않음 — [저장] 한 번(`design_save`) +- 자동저장(디바운스 PUT) 만들지 않음 diff --git a/B04_PreProcess/CLAUDE.md b/B04_PreProcess/CLAUDE.md new file mode 100644 index 000000000..3ec981c67 --- /dev/null +++ b/B04_PreProcess/CLAUDE.md @@ -0,0 +1,35 @@ +# B04_PreProcess 지침 + +갈래 지도(앞머리 → 하는 일): + +- `UI_Map*` 2D 지도(그리기 · 겹침 · 층 · 보기) · `UI_TerrainViewer*` 3D 지형 · 등고선 · `UI_Viewer` · `UI_Camera` +- `UI_Flow*` · `UI_Basins` · `UI_Watershed` 배수 흐름 · 유역 · `UI_RouteSamples` 노선 표본 · `UI_Page` 페이지 · `Api_Fetch` 서버 요청 +- `Engine_Filter_*` 지면 필터 · `Engine_Ground` · `Engine_ModelBuild` · `Engine_ModelContext` · `Engine_Smooth` 지표면 모델 +- `Engine_Sheet*` · `Engine_MapSheet` 수치지형도 · `Engine_Contour` 등고선 · `Engine_GisVector` · `Engine_VWorld` 국가 GIS +- `Engine_Watershed_*` 배수유역 · `Engine_Pipeline` · `Engine` 전처리 차례 · `Router_*` · `Repository` · `Service` · `Schema` +- `logic/` 순수 계산 TS + +① 짝(ts ↔ py · 거울 시험): + +- `Router_Basins.py` ford_height_m ↔ `A00_Common/design/design_structure_ford_calc.ts` fordHeightM · `test_65_ford_defaults.py` +- 배수유역 · 지표면 모델 엔진 = 서버 단독(③) · 지형 표본 = `common_util_surface_sampler` 하나 + +서버 Node 묶음: + +- 입구 없음 · `Api_Fetch.ts` 가 `build:b07-extent` 에 끌려감 — 모듈 맨 위에 DOM · window · sessionStorage 금지 + +남의 페이지가 부르는 파일(고치면 부르는 쪽 시험도): + +- ts — `Api_Fetch`(A00 · B05 · B06 · B08 · B11) · `UI_MapRender` · `UI_MapRender_Prepare` · `UI_MapOverlays` · `UI_FlowRamp` · `UI_FlowArrows` · `UI_Camera` · `UI_RouteSamples`(B05) · `UI_Page`(A00) +- py — `Router_Watershed` · `Router_Basins` · `Router_GIS` · `Router` · `Service` · `Repository` · `Engine_Watershed_*` · `Engine_VWorld` · `Engine_Extent` · `Engine_SheetSurface` · `Engine_Structurize` + +logic/ 규칙: + +- DOM · three · fetch · sessionStorage · window 금지 · 순수 함수만 +- 화면 파일이 logic 을 부름 · logic 은 화면 파일을 안 부름(logic · common_util 만) +- 이름 앞머리 그대로(`logic/B04_PreProcess_Xxx.ts`) · 파이썬 짝이면 두 파일 머리에 짝 표시 + 거울 시험 + +금지: + +- 파이썬 파일을 하위 폴더로 옮기지 않음(절대 import · `Engine_GisVector.py` 뿌리 경로) +- 실제 파일 다시 올리기 · 전처리 다시 돌리기로 시험하지 않음 — 서버 함수 시험으로 diff --git a/B05_Profile/CLAUDE.md b/B05_Profile/CLAUDE.md new file mode 100644 index 000000000..99b95a30f --- /dev/null +++ b/B05_Profile/CLAUDE.md @@ -0,0 +1,40 @@ +# B05_Profile 지침 + +갈래 지도(앞머리 → 하는 일): + +- `UI_RouteEdit_*` 노선 편집(노드 · 곡선 · 측점 틀 · 등고선 띠) · `Api_Replan` 그 서버 요청 +- `UI_Corridor_*` 3D 길 모형 · `UI_Viewer*` 3D 화면 +- `UI_Profile_*` 종단도(계획선 · 끌기 · 표 · 유토곡선) · `UI_Structures_*` · `Structures_*.py` 구조물 +- `UI_Drainage_*` 배수유역 칸 · 관 · 시설 · `UI_Page_*` · `UI_Panel_*` 페이지 틀 · 좌측 칸 · `Api_*` 서버 요청 +- `Engine_Grade*` 종단 계획선 · `Engine_Sections*` 측점 · 종횡단 생성 · `Engine_RouteInitial*` 노선 추천 · `Engine_AsPlanned` 노선 그대로 · `Router_*` API +- `logic/` 순수 계산 TS + +① 짝(ts ↔ py · 거울 시험): + +- `UI_RouteEdit_Curve.ts` ↔ `common_util_route_polyline.py` · `test_route_polyline_browser_mirror.py` +- `UI_RouteEdit_Frame.ts` ↔ `Engine_Sections_Core.py`(측점 틀 · 스냅) · `test_b05_routeedit_frame_mirror.py` · `test_224_2_station_snap.py` +- `UI_Drainage_Facility.ts` carryIndices ↔ `common_util_drainage_pipes.py` · `test_b05_facility_carry.py` +- `logic/B05_Profile_PlanFootprint.ts` ↔ `B07_DesignDetail_Engine_Cad_PlanSlope.py` · `test_346_2_plan_footprint_mirror.py` +- 지형 표본 = `common_util_surface_sampler.build_surface_sampler` 하나 · 2 m 비용면은 노선 추천 점수만 + +서버 Node 묶음: + +- 입구 `B05_Profile_Corridor_Node.ts`(package.json `build:corridor`) · 끌어감 = `UI_Corridor_*`(Build · Envelope · Frames · Station · Structures) · `UI_IrregularStations` · B06 `UI_Cross_*` 구조물 · A00 `b_page_state` · `design_pick_match` · `design_pipe_ids` · `design_selection` +- `build:b07-extent` · `build:b07-note` 가 `Api_Structures` · `Api_Pipes_Draft` · `UI_Structures_Balloon` · `UI_Structures_Define` 를 끌어감 +- 묶음이 끄는 TS 를 고치면 그 build 다시 지어 시험 · 그 파일 모듈 맨 위에 DOM · window · sessionStorage 금지 + +남의 페이지가 부르는 파일(고치면 부르는 쪽 시험도): + +- ts — `Api_Fetch` · `Api_Structures` · `Api_Pipes_Draft`(B06 · B07 · B08) · `UI_Structures_Balloon` · `_Define` · `_Fields` · `_Snap` · `_Panel_Types`(B06 · B07 · M02) · `UI_Profile_Alignment` · `_Edit` · `_Data` · `_Structures` · `UI_Drainage_Ford_Fill` · `_Facility_Merge` · `_Facility_Fields` · `UI_IrregularStations`(B06 · M02) · A00 design 이 부르는 `UI_Page_*` · `UI_Profile_*` +- py — `Structures_Schema` · `Structures_Repository` · `Engine_Sections` · `Engine_Sections_Core` · `Repository` · `Router_Confirm` · `Engine_Grade*` · `Router_RouteInitial` + +logic/ 규칙: + +- DOM · three · fetch · sessionStorage · window 금지 · 순수 함수만 +- 화면 파일이 logic 을 부름 · logic 은 화면 파일을 안 부름(logic · common_util 만) +- 이름 앞머리 그대로(`logic/B05_Profile_Xxx.ts`) · 파이썬 짝이면 두 파일 머리에 짝 표시 + 거울 시험 + +금지: + +- 파이썬 파일을 하위 폴더로 옮기지 않음(절대 import · `Corridor_Prebuild.py` 뿌리 경로 `parents[1]`) +- 묶음 입구 파일 옮기지 않음 · 보관 폴더(`Old/`) 만들지 않음 — 지움 diff --git a/B06_Section/CLAUDE.md b/B06_Section/CLAUDE.md new file mode 100644 index 000000000..62b92b79a --- /dev/null +++ b/B06_Section/CLAUDE.md @@ -0,0 +1,39 @@ +# B06_Section 지침 + +갈래 지도(앞머리 → 하는 일): + +- `UI_Cross_*` 횡단 카드 · 설계선 · 구조물 그림(Culvert · Box · Ford · Revetment · Wall · Underdrain · Lean) +- `UI_Cross_View_*` 횡단 보기 · `UI_Cross_Detail_*` 상세 창 · `UI_Cross_Design*` 설계선 편집 +- `UI_Page_*` 페이지 틀 · 저장 · 구조물 칸 · `UI_Section_*` 측점 · 횡단 공용 +- `Section_Store` · `Cross_Refresh` · `Api_*` 횡단 상세 가게 · 서버 요청 +- `Engine_Design*` 횡단 설계 · `Engine_Areas` 면적 · `Engine_Culvert` 관 · `Engine_SampleExtend` 지반 덧붙임 · `Engine_SpoilFill` · `Engine_Structures_Wall` · `Engine_Tilt` · `Router_*` · `Repository*` +- `logic/` 순수 계산 TS + +① 짝(ts ↔ py · 거울 시험): + +- `Engine_Design.py` ↔ `common_util_cross_design.ts` · `Engine_Areas.py` ↔ `common_util_cross_design_areas.ts` · `test_b06_cross_design_mirror.py` +- `Engine_Culvert.py` ↔ `common_util_culvert_sets.ts` · `UI_Cross_Culvert_Const.ts` · `test_b06_culvert_sets_mirror.py` · `test_b06_pipe_wall_height_mirror.py` +- `Engine_Structures_Wall.py` ↔ `common_util_structure_walls.ts` · `test_b06_structure_walls_mirror.py` +- 지형 표본 = `common_util_surface_sampler` 하나(`Engine_SampleExtend` 도) + +서버 Node 묶음: + +- 입구 `B06_Section_Server_Calc_Node.ts`(package.json `build:server-calc`) · 끌어감 = `UI_Cross_Culvert*` · `_Box_Geom` · `_Ford_Geom` · `_Wall*` · `_Revetment` · `_Lean` · `_Excavation` · `_Structure_Cut` · `_Body_Guard` · `Structure_Layouts` · `UI_Section_Common` +- `build:corridor` · `build:b07-extent` 도 `UI_Cross_*` 구조물 그림을 끌어감 — 고치면 해당 build 다시 지어 시험 +- 입구 경로를 시험이 씀(`test_b06_ground_unlock.py` · `test_b06_height_unlock.py` 등) · 묶음이 끄는 파일 모듈 맨 위에 DOM · window · sessionStorage 금지 + +남의 페이지가 부르는 파일(고치면 부르는 쪽 시험도): + +- ts — `Api_Fetch` · `Section_Store`(B03 · B05 · B07 · B09) · `UI_Cross_Culvert*` · `_Box` · `_Ford*` · `_Revetment` · `_Wall_Hatch` · `_Underdrain` · `_Design` · `_Body_Guard` · `_Fit` · `_Panel_Base`(B05 · B07) · `UI_Cross_Culvert_Const`(M02) · `UI_Section_Common` · `UI_Longitudinal` · `Cross_Refresh` · `Api_Culvert_Options` · `Structure_Layouts` · A00 design 이 부르는 `UI_Page_*` +- py — `Repository` · `Repository_Bulk` · `Router` · `Router_Confirm` · `Router_Design` · `Engine_Design` · `Engine_Culvert` · `Schema` + +logic/ 규칙: + +- DOM · three · fetch · sessionStorage · window 금지 · 순수 함수만 +- 화면 파일이 logic 을 부름 · logic 은 화면 파일을 안 부름(logic · common_util 만) +- 이름 앞머리 그대로(`logic/B06_Section_Xxx.ts`) · 파이썬 짝이면 두 파일 머리에 짝 표시 + 거울 시험 + +금지: + +- 파이썬 파일을 하위 폴더로 옮기지 않음(절대 import · `Server_Calc_Prebuild.py` 뿌리 경로 `parents[1]`) +- 묶음 입구 파일 옮기지 않음