diff --git a/docs/raw/요구_1025/_분석_520.md b/docs/raw/요구_1025/_분석_520.md new file mode 100644 index 000000000..78c19063f --- /dev/null +++ b/docs/raw/요구_1025/_분석_520.md @@ -0,0 +1,35 @@ +# 요구 340-1 조사 — B05 배수유역 업데이트 시점 · [>] 진행 표시 공용 (PLAN 520) + +결론: ① 관 바꾸면 세부유역은 이미 자동 다시 셈 — 다만 [업데이트] 결과가 서버에 안 남아 노선 [저장] 뒤엔 관 하나 바꿀 때마다 다시 낡음 ② B06 [>] 때 배수유역 분석이 두 번 돎(첫 번째는 화면에 안 보임) ③ 진행 표시 부품은 ui_template 에 이미 있음 — 화면 잠금과 합치면 [>] 공용. + +## 지금 상태 +1. [업데이트] — `refresh()` → `POST /drainage/live`(B05_Profile_UI_Drainage_Live.ts:147-171,194) · 서버가 지금 노선으로 전체 유역 + 세부유역 · 작업본에 안 씀(B04_PreProcess_Router_Watershed_Live.py:3-5,77-153). + - 낡음 켜짐 = 노선 초안 있을 때(logic/B05_Profile_Drainage_Live.ts:13 · design_pipeline.ts:58) · 서버 답 낡음(Drainage_Panel.ts:301) · 서버 판정 = 노선 지문 x · y 만(B04_PreProcess_Router_Basins.py:512-518 · common_util_drainage_pipes.py:190-199) → 종단 · 횡단 고침은 낡음 안 켬 · 노선 [저장]은 늘 낡음(B05_Profile_Route_Save.py:619). + - 관 추가 · 이동 · 삭제 = 이미 자동 세부유역(Drainage_Panel.ts:145-147,396,623,658). + - 시간 = 전체 분석 5.4~7.2 s · 초안 [업데이트] 8~13 s · 세부유역만 0.2 s · 노선 저장 체인 7~19 s. +2. 노선 모양 바뀜 판정 있음 — 화면 `pendingRouteSave`(B05_Profile_UI_RouteEdit_Apply.ts:101-124) · `draftMakesStale` · 서버 `route_signature` · `analysis_route_signature`(common_util_drainage_pipes.py:214-231). +3. 세부유역만 다시 셈 있음 — `POST /drainage/detail-basins`(Router_Basins.py:548-561 · 캐시 :201-216) · 막힘 = [업데이트] 결과 안 남음 → 노선 저장 뒤 `_build_stale`(:125-137)로 빠져 다시 낡음(사용자가 「구조물마다 수동」으로 느끼는 원인) · 분석 결과 저장 코드는 `get_primary_region` 에만(B04_PreProcess_Router_Watershed.py:536-580). +4. 뒤로가기 느린 후보 — 되돌리면 저장분 다시 받음(Drainage_Live.ts:182-192 · Panel.ts:385-392) · 묶음이 초안 버림에 최대 2 s 기다림(design_pipeline_page.ts:368-415) · 화면이 요청 끊어도 서버는 계속 셈(Watershed_Live.py:85-89 · 5~13 s CPU). +5. B06 [>] → B07 — `confirmAndGo` → `drainageFirst`(확인 창 → `side.update()` · 잠금 없이) → `saveSharedDesign(확정)` → 잠금 → `POST /design/save` → 이동(design_shared.ts:412-430,460-541) · 안 보이는 까닭 = 배수유역 칸 기본 접힘(Panel.ts:566-567)이라 「계산 중」(Live.ts:121-124) 가려짐 · 두 번 돎 = [확정] 관 차례 `recompute=True`(Router_Basins.py:608-615 · B06_Section_Router_DesignSave.py:148-151) · 노선 바뀐 채 [>] = 노선 저장 → 물음 → 다시 세움 → 둘째 확정(design_save.ts:284-293 · design_shared.ts:383-399). +6. 진행 표시 부품 — `showLoadingOverlay`(ui_template_elements.ts:226-253 · 글 · 비율 없음) · `createProgressCircle`(ui_template_progress.ts:34 · 비율 · 글 · 8 곳) · 칸 안 「불러오는 중」(ui_template_loading.ts:18-56) · 서버 진행 묻기 = 추천 노선(B05_Profile_Router_RouteInitial.py:356-366 · 2 s) · B04 진행 파일(B04_PreProcess_Router_Progress.py:25-47) · B11(3 s) · 저장 차례 이름표(design_save.ts:127-137) · 공용 후보 = 잠금 + 진행 원 + 저장 차례 진행 묻기. +7. [>] 단추 — 공용 단추(ui_template_help.ts:176-187) → 공용 틀이 이웃 단계 누름(ui_template_workflow_layout.ts:238-245) → 페이지마다 처리 · B05 · B06 design_page.ts:198-203 · B07 B07_DesignDetail_UI_Page.ts:487-523 · B08 B08_Quantity_UI_Page.ts:167-180 · B09 B09_Estimation_UI_Shell.ts:358-381 · 넷 다 「저장 → 단계 완료 → goToWorkflowStage」 → 공용 하나로 묶임. + +## 고칠 길 (창 셋 · 창 1 따로 · 창 2 뒤 창 3) +- 창 1 · ③ 서버 · B04 — Router_Watershed.py:462-580 저장 부분을 `_Router_Watershed_Output.py` 함수로 떼고 `post_drainage_live` 가 저장 노선 기준일 때(초안 없음 · 지문 같음) 분석을 남김 → [업데이트] 한 번 뒤 관 · 구조물 조작은 0.2 s 자동 · 화면이 끊을 때 서버 차례 번호 올리는 작은 요청(되돌리기 때 서버 셈 멈춤) · Router_Basins.py(695 줄) 손대지 않음. +- 창 2 · 화면 공용 · ui_template + A00 — `setLoadingOverlayProgress(ratio, label)`(createProgressCircle 재사용) · b_workflow_nav.ts `moveStage(projectId, route, steps[])`(잠금 → 「n/N 이름」 → 실패면 머묾 → 이동) · B07 · B08 · B09 단계 이동을 이 함수로. +- 창 3 · A00/design + B06 서버 — `confirmAndGo` 를 `moveStage` 로 · `drainageFirst` 화면 [업데이트] 걷음(서버 [확정] 관 차례가 한 번만 셈) · `_run_steps.step()` 진행을 메모리에 · `GET /design/save/progress` · 화면 1 s 물음 · 노선 저장 물음 동안 잠금 잠시 멈춤(design_save.ts:285-287). + +## 결정 거리 (추천 먼저) +1. 「뒤로가기」 = 되돌리기(Ctrl+Z) / 브라우저 뒤로. +2. 저장 노선 기준 [업데이트] 결과를 파생 저장본(노선 지문 열쇠)으로 남김 / 안 남김. +3. 노선 초안 중 [업데이트] 뒤 관 조작 자동 셈 = 1차 안 함 / 함. +4. B06 [>] 낡음 확인 창 → 잠금판 「배수유역 다시 셈」 단계로 바꿈 / 그대로. +5. 진행 정도 = 서버 차례 이름 + n/N + 지난 초 / 화면 단계만. +6. 진행 단계 판 누름 · [<] 도 같은 잠금 길 = 함께 / [>] 만. + +## 위험 +- 바깥 잠금 걸린 채면 노선 저장 물음 창이 가려짐(design_save.ts:285-287). +- 노선 바뀐 채 [>] = 다시 세움 + 저장 두 번 — 진행판이 다시 마운트를 넘어 이어져야 함. +- [업데이트]가 분석을 남길 때 `design/save` 되돌림 스냅샷(B06_Section_Router_DesignSave.py:222-235)과 부딪힘 → 같은 잠금 또는 잠겨 있으면 안 남김. +- 줄 수 — Drainage_Panel.ts 700 · Router_Basins.py 695 → 덧붙임 불가. +- 낡은 시험 고침 — test_512_2 · test_349 · test_347_2. diff --git a/docs/raw/요구_1025/_분석_521.md b/docs/raw/요구_1025/_분석_521.md new file mode 100644 index 000000000..4aee13aff --- /dev/null +++ b/docs/raw/요구_1025/_분석_521.md @@ -0,0 +1,36 @@ +# 요구 340-2 조사 — B07 종단도 우측 상단 평면 위치도 · 척도 칸 (PLAN 521) + +결론: 종단도 도엽 우측 상단 평면도 지금 없음 · 30 측점 나눔은 맞으나 일반측점이 아니라 추가 · MC 포함 모든 측점 셈 · 그리는 자리 = 파이썬 엔진 한 곳(③ 서버 단독) · 설정 칸은 지금 축척 칸(X · Y)에 하나 더 붙이는 꼴. + +## 지금 상태 +1. 도엽 나눔 — `LONG_SPLIT_STATION_COUNT = 30`(Engine_Cad.py:38-39) · `longitudinal_chunks`(Engine_Cad_Long.py:104-131) · 세는 대상 = `_stations()` 전체(Engine_Cad.py:277-285 · 추가측점 · MC 포함) · 경계 측점은 두 장이 나눠 가짐(:125) · 작도 영역 넘치면 한 측점씩 줄임(`_fits_sheet` :95-101 · :119-121) · 목록 Router_Support.py:200-209 · 그리기 :587-600 · 템플릿 · TS 에 나눔 로직 없음. +2. 우측 상단 평면도 — 없음(`build_longitudinal_drawing` Engine_Cad_Long.py:654-687 층 = 원지반 · 계획선 · 격자 · 측점표 · 도각) · 재사용 후보 = `sheet_links(neighbors=True)`(Engine_Cad_Plan.py:145-183) · `_sheet_link_entities` 회색 파선(Engine_Cad_PlanKinds.py:493-543) · `_station_entities`(Engine_Cad_Plan.py:206-251) · `compass_entities`(Engine_Template.py:398) · 평면 좌표 = 종단 측점 `center_x` · `center_y`(plan_stations Router_Support_Basin.py:302-312) → longitudinal.json 하나로 그림. +3. 「전체 노선 중 이 구간」 — 전체 노선 가는 선 + 이 장 굵은 강조 + 칸 밖 shapely 자름(이미 씀 Engine_Cad_Plan.py:21-22) · 엔티티 `polyline_entity` · `_line_entity` · `_text_entity`(Engine_Cad.py:57 · 116 · 151). +4. 설정 모달 · 저장 — 종단도 ⚙ = `openDrawingSettings` → `mountDrawingScale`(UI_Settings.ts:51-89) · 칸 X · Y(UI_Settings_Scale.ts:35-38) · null = 「자동」(:95) · 저장 `{x, y}` 고정(:110-116) · 타입 Api_Fetch.ts:245-256 · 서버는 축 이름 안 가림 — 기본값 `DRAWING_SCALE_DEFAULTS`(Engine_Template.py:99-105) · 범위 `SCALE_RANGES`(Router_Support_Scale.py:38-43) · 바뀌면 그 종류 저장본 풂(:98-137) · 저장 = 프로젝트 B07_DesignDetail/drawing_scales.json(지문에 이미 들어감 Router_Support_Fingerprint.py:140-149) · 마스터 템플릿 = 도각만(00_template_A1.json 작도 영역 [42,47,812,567] · 우측 상단 빔) · 평면도 그룹 척도는 종류마다 고르기 목록(UI_PlanKinds.ts:99-139). +5. Node 묶음 — b07-extent(횡단 덧그림 범위) · b07-note(관 주기) 둘 다 종단 무관 · 종단도 = 파이썬 엔진만 · B09 인쇄 미리보기는 B07 단건 조회를 그대로 써 저절로 따라옴(B09_Draft_Print_Drawings_Source.py:5-6,76). + +## 고칠 길 (③ · 창 하나) +1. 서버 설정 칸 — Engine_Template.py:100 `"plan": None` · Router_Support_Scale.py:39 `"plan": (500, 50000)`. +2. 새 파일 Engine_Cad_LongPlan.py(약 150 줄) — 칸 테두리 · 「평면도 S=1/n」 · 방위표 · 자동 = 전체 노선을 칸에 맞추고 분모 올림 · 척도 정하면 이 장 중심 · 이 장 굵게 · 나머지 흐린 파선 · 시 · 종점 측점 글 · 「n/N 장」 · 층 `b07-long-plan` · 좌표 없으면 안 그림. +3. Engine_Cad_Long.py 연결 — `_fits_sheet` 두 줄(칸 자리 빼고 들어가는지) · `build_longitudinal_drawing` 에 칸 · 층 더함(도각엔 칸 전 bbox). +4. TS — Api_Fetch.ts:247-251 `plan?` · UI_Settings_Scale.ts 축 목록을 `data.defaults[kind]` 열쇠에서 뽑고 저장 · 「바뀐 축척 없음」 판정도 그 목록. +5. 시험 — test_b07_long_sheet.py(칸 자리 · 안 겹침 · 장마다 강조) · test_280_5_b07_drawing_scales.py(plan 범위) · helper_280_5_b07_settings.cjs(평면 칸). +6. 반영 — 백엔드 재시작 · orca reload · CAD 빌드 불필요. + +## 결정 거리 (추천 먼저) +1. 모양 = 칸 하나(자동 = 전체 노선 위 이 장 굵게 = 위치도 · 척도 정하면 이 장 확대 + 밖 흐리게) / 평면 칸 + 구석 작은 위치도(칸 둘). +2. 기본 척도 = 자동(칸 맞춤) / 1/5,000 고정. +3. 자리 · 크기 = 작도 영역 우상단 5 mm 안쪽 · 150×100 mm. +4. 그래프와 겹침 = 측점 줄여 장 더 나눔 / 겹쳐 둠 / 좌상단. +5. 칸 내용 = 노선 · 측점 글 · 방위표만(등고선 · 구조물 뺌). +6. 척도 칸 꼴 = X · Y 옆 셋째 숫자 칸 + 「자동」 / 고르기 목록(500~6,000). +7. 저장 = 프로젝트 drawing_scales.json(마스터 층 안 씀). +8. 30 측점 세는 법 = 지금(추가 · MC 포함) 유지 / 일반측점만 = 별건. + +## 위험 +- Engine_Cad_Long.py 687 줄(700 한도) — 새 파일 필수 · 연결 10 줄 안쪽. +- 확정 종단 저장본은 형식 번호 같으면 그대로 나감(Router_Support.py:490-494) → 옛 장엔 칸 없음 · `DRAWING_FORMAT` 올리면 모든 종류 저장본 버려짐(금지) · 종단 저장본만 한 번 풀기 또는 [원본에서 다시 그리기]. +- 겹침 규칙으로 장 수 늘면 장 id 밀림 → 종단 저장본 모두 푸는 처리. +- 측점 좌표 꺾은선(20 m) — 1/1,000 보다 큰 척도에서 각짐. +- `plan_stations` 는 라우터 모듈(B04 · pyproj 끌림) — 6 줄 옮겨 씀. +- 작도 영역은 `drawing_area()` · `usable_area()` 로 셈(프로젝트 도각 고침 대비). diff --git a/docs/raw/요구_1025/_분석_522.md b/docs/raw/요구_1025/_분석_522.md new file mode 100644 index 000000000..f91739848 --- /dev/null +++ b/docs/raw/요구_1025/_분석_522.md @@ -0,0 +1,32 @@ +# 요구 340-3 조사 — B07 평면도 ⚙ 모달 CAD 미리보기 (PLAN 522) + +결론: 미리보기 = CAD 앱 전체를 iframe 으로 매번 새로 띄움 · 느린 까닭 = 도면 목록 지문 다시 셈(0.5~3 s 짐작) 뒤에 평면도 한 장(2.5~10.5 MB) 다시 받음 — 페이지가 미리 받아 둔 것을 안 씀 · 메뉴 탭 = 숨김(bare) 옵션은 있으나 도면을 넘기는 순간에만 켜져 그 전 수 초 보임. 시간은 코드 짐작(고치기 전 잴 것). + +## 지금 상태 +1. 자리 — 평면도 ⚙ → UI_Settings.ts:70-73 → `openPlanManager`(UI_PlanManage.ts:59) · iframe `/b07-cad/index.html`(UI_PlanManage.ts:69 → ui_template/cad_host/cad_host.ts:143-145) · 열 때마다 새로 · 닫으면 버림(:233-238). +2. 느린 차례 — ① iframe 부팅(634 KB · Canvas 2D · 리본 · 패널 다 그린 뒤 준비 · 0.3~0.8 s) ② 도면 목록 다시 받기(UI_PlanManage.ts:204-207 → Router.py:285-312 → Router_Support_Fingerprint.py:371-470 모든 도면 지문 · 0.5~3 s) — 끝나야 ③ ③ 평면도 한 장(UI_PlanManage.ts:174 · 저장본 없으면 등고선 · 음영 · 토지이용 다시 셈 Router_Support_Plan.py:504-627 · 2.5~10.5 MB) ④ CAD 싣기(aislo-drawing-bridge.ts:170-198 · 0.2~0.8 s) · 미리 받은 도면(B07_DesignDetail_Prefetch.ts:161 `openDrawing`) 안 씀. +3. 메뉴 탭 — bare 있음 · 도면 넘길 때만 켜짐(aislo-drawing-bridge.ts:183-186 · 시작값 꺼짐 state.ts:206) · B06 표 위 CAD 도 같음(B06_Section_UI_Cross_Detail_Cad.ts:334-361). +4. 미리보기 길 — 보기 · 읽기 전용 · 메뉴 숨김 · 리본 · 패널 접기(cad_host.ts:80-103) 모두 도면 넘길 때만 · 시작 때 정하는 길 없음 · M02 카드는 뜬 뒤 스타일 끼움(M02_MasterTemplete_DrawingCard.ts:43-60). +5. 값 바뀜 — 체크 · 축척 바꿔도 그림 그대로 · [업데이트] · [추가] = 서버 저장(UI_PlanKinds.ts:163-177) → 목록 · 장 다시 받음 → 통째 다시 싣고 전체 맞춤 · 디바운스 · 부분 그리기 없음 · 조각마다 층 따로(Engine_Cad_PlanKinds.py:166,633-637) · 글자 비키기 엮임(:563-587). + +## 길 비교 +- (a) 처음부터 메뉴 숨김 — cad_host.ts · main.tsx · UI_PlanManage.ts:69 · 6~8 줄 + CAD 빌드 · 낮은 위험. +- (a') 받아 둔 데이터 재사용 — UI_PlanManage.ts · UI_Settings.ts:71 · 시험 흉내 · 15~25 줄 · 다시 열 때 요청 0 · 직렬 대기 없앰. +- (b) 가벼운 SVG/Canvas — 300 줄+ · 10 MB 받기 그대로 · 상세 CAD 와 모양 달라짐. +- (c) iframe 미리 띄움 — 50 줄+ · 부팅만 줄음 · 옮기면 다시 뜸. + +## 추천 (a) + (a') +- 창 A · CAD 공용(openwebcad/src · ui_template/cad_host) — cad_host 에 `bare` 받아 주소 `?bare` · main.tsx 그리기 전 `setBare(true)` · UI_PlanManage.ts:69 `bare: true` · B06 :334 한 줄 · npm run build · 첫 화면 리본 없음 사진. +- 창 B · B07 TS — UI_Settings.ts:71 페이지 목록(deps.drawings) 넘김 · 처음엔 목록 다시 안 받음 · 장 받기 = `Prefetch.openDrawing`(캐시 · 같은 요청 합침) · 값 고친 뒤에만 목록 새로 · `syncDrawings` · helper_130_b07_plan_manage.cjs 흉내 · test_130 · 고치기 전후 orca eval 로 열기 → 그림 다 뜸 시간. + +## 결정 거리 (추천 먼저) +1. 값 바꾸는 즉시 미리보기 = 지금처럼 [업데이트] 뒤 다시 그림 / 다음 단계 「조각 체크 = 층 켜고 끄기(근사)」. +2. 다시 그릴 때 확대 · 위치 = 유지 안 함(전체 맞춤) / 유지. +3. B06 표 위 CAD 도 같은 숨김 = 함께 / 따로. +4. 단추 [업데이트] → [적용] = 그대로 / 바꿈. + +## 위험 +- 시간은 짐작 — 먼저 잼. +- 평면도 미리받기 차례 맨 끝(Prefetch.ts:23) — 들어오자마자 열면 서버 시간 그대로. +- 페이지 목록 낡으면 낡은 장 보일 수 있음(본 화면과 같은 수준) · 고친 뒤엔 새로 받음. +- 시험 — test_130_b07_plan_manage.py(흉내 갱신) · test_260_note_cad.py · openwebcad/src/state.test.ts:125.