chore(요구): 요구 269 후보 재검토 분석 — 페이지 설정 저장 설계 · 433 판정 · 나눔 448~455
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6BNBFXFndbqYxu6sZuknK
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# 요구 269 — 페이지 설정 저장 · 다음 장 후보(433) 재검토
|
||||
|
||||
분석 = 클로드 에이전트 셋(Opus 5.5 · 읽기만 · node 재현은 scratchpad) · 브레인 판단. 바탕 = 030409f16.
|
||||
|
||||
## 1. 사용자 확정(269)
|
||||
|
||||
- 페이지 설정 = [저장] · [확정] 때 영구저장 · 설계속도 · 지형 구분 = 종단 표 경고값(막지 않음) · 시종점 계획고 조정 = 결과에 씀.
|
||||
- 초기 종단 직선화 높이 한도 없음 · 초기 종단은 R 줄이고 기준만 잡음 · 판단은 사용자.
|
||||
- 구조물 범위 테두리 보류.
|
||||
|
||||
## 2. 페이지 설정(442-2 → 448)
|
||||
|
||||
지금:
|
||||
- 열 때 값 = `project_workflow_stages` stage 2 params(`B05_Profile_Router.py:510-533` · `B05_Profile_UI_Page_Latest.ts:67-84`) · 노선 풀기 · 노선 바꾼 저장 · 교체 때만 써짐 · 패널이 쓰는 길 없음.
|
||||
- 다른 페이지가 같은 값을 고치지 않음(임도 종류만 B02 `projects.road_type`).
|
||||
- 설계속도 · 지형 = 종단 표 · 그래프 상한 · 평면 최소 R 경고 · B06 재생성 기준(정책 warn · `config_system_design.py:644`) · 노선 추천 탐색 경사 상한(`B05_Profile_Router_RouteInitial.py:97-99, 452-453`).
|
||||
- 시종점 계획고 조정 = 서버 1차 계획선 끝점에만 더함 · TS 는 안 씀 → 지금 바꿔도 화면 · 결과 그대로.
|
||||
- 시작 측점 = B05 종단 표 · 그래프 라벨만.
|
||||
- 같은 패널 「횡단배수 최소고 강제」 · 샘플 간격 두 칸도 저장 안 됨.
|
||||
|
||||
새로 찾은 흠:
|
||||
- E1(중) `redesign_solve_request`(`B03_FileInput_Service_Chain.py:389-433`)가 `design_speed_kph` · `enforce_pipe_clearance` 를 안 넘겨 노선 바꾼 저장 · B04 재확정마다 20 · 꺼짐으로 돌아감.
|
||||
- E2(낮음) B06 재생성 지형 기본 normal · B05 special(`B06_Section_Router_Regenerate_Options.py:46`).
|
||||
- E3(중 · 추정) 초기값 스냅샷이 stage 2 params 를 안 뜸 → [초기화] 뒤에도 편집본.
|
||||
- E4(함정) 노선 바꾼 저장은 `steps.uphill` 건너뜀(`design_save.ts:224-226`) → 노선 저장 본문에 얹으면 빠짐.
|
||||
|
||||
정함(브레인):
|
||||
- 세션 캐시 `pagesettings` · 열 때 latest 위에 얹음 · 저장 차례 `settings` = `route` 뒤 · `alignment` 앞(기본 창구 · B05 · B06 [저장] · [확정] 모두).
|
||||
- 서버 `PUT /api/projects/{id}/route/page-settings`(`B05_Profile_Router_Lifecycle.py`) — `resolve_grade_options` 로 검증 · stage 2 params 에 사용자 값만 병합(상태 전이 · STALE 없음) · 종단 json 정책(`max_grade_pct` · `min_vertical_radius_m` · `min_plan_radius_m`) · `criteria` 갱신 뒤 `rebuild_alignment_profile` · `update_longitudinal_grade_summary` · 종횡단 다시 만들기 없음 · DB 열 추가 없음.
|
||||
- 시종점 계획고 조정 = 첫 · 끝 측점 계획고 편집(`station_offsets` · `resolvePvi` 끝점 열쇠) → 계산 줄 즉시 · `alignment` 차례가 서버 정본 · [초기화] 자동.
|
||||
- 시작 측점 = 저장 · B05 표시 전용 그대로 · 측점 열쇠 · 이월 · 스냅샷 · B06 · B07 · B08 라벨에 안 섞음.
|
||||
- [초기화] = 스냅샷 `db.json` 에 `stage2_params` 함께 뜨고 되돌림(E3) · 옛 스냅샷이면 설정 키만 걷어 기본값.
|
||||
- 샘플 간격 두 칸 = 읽기 전용(바꾸면 종횡단 재샘플) · 「횡단배수 최소고 강제」 = 저장 대상.
|
||||
- E1 · E2 같이 고침(E2 = 저장값 우선 · 없으면 B05 기본).
|
||||
- 추천 저장본 열쇠에 설계속도 · 지형이 들었는지 확인(안 들었으면 더함).
|
||||
|
||||
## 3. 후보 판정
|
||||
|
||||
| 후보 | 판정 | 심각 | 근거 · 방향 | 절 |
|
||||
|---|---|---|---|---|
|
||||
| 433-7 | 있음 · 더 넓음 | 자료 잃음 | 관 차례 세션 초안 PUT 직후 `side.savePipes` 가 배수판 메모리를 다시 PUT(`design_save.ts:228-233` · `design_shared.ts:397-403` · `Drainage_Panel.ts:670-677`) · 판이 안 섰으면 `points: []`(관 0개 · 추정) → 관 정본 PUT 은 세션 초안 한 번만 · 빈 목록 PUT 막음 | 449 |
|
||||
| 433-12 | 있음 | 자료 잃음(드묾) | 노선 저장 뒤 다른 차례 실패 길에 rebuild · carry 없음(`design_save.ts:236-248` · `design_pipeline_page.ts:498-499`) → catch 에서 routeSaved 면 0 칸 → 새 노선 칸 · carryStationDrafts 뒤 rebuild | 449 |
|
||||
| 433-6 | 자료(추정) | 작음 | 검증_sub4 관 388 · 394 인데 측점 351 · 관 PUT 측점 맞춤 실패 삼킴(`B04_PreProcess_Router_Basins.py:573-584`) → sub4 가 missing-stations 로 [측점 만들기] · 실패는 응답에 실음 | 449 |
|
||||
| 433-4 | 일부 | 자료 잃음 | 곡선 R 바꿔 MC 측점 이동(curve:47.35 → 49.10) 때 상세 갈아끼움이 같은 열쇠 · 0.01 m 만 봄(`logic/B06_Section_Station_Swap.ts:160-170` priorOf) → curveMoves 거꾸로 맵을 대체 열쇠로 | 450 |
|
||||
| 433-11 | 있음(뿌리 짚음) | 표시 어긋남 | 측점 목록 바뀌면 안 바뀐 측점까지 표본 · 상단측 · 중심고를 브라우저 ground 값으로 갈음(`Station_Swap.ts:196, 206-207`) → 자리 같은 앞 단면은 prior 표본 유지 | 450 |
|
||||
| 433-19 | 고쳐짐(48a376f21) | — | `Span_Control.update`(culvertopt 큐 · :94-127) 죽은 길 → 지움 | 450 |
|
||||
| 433-20 | 일부 | 막힘 | 내공 줄 숨김 = 54-40 결정(그대로) · CAD 2000(`B06_Section_Schema.py:187`) 화면 막음 없음 → 넘으면 반쪽 저장 · 화면에서 막고 알림 | 450 |
|
||||
| 433-16 | 판단 불가 · 위험 | 자료 잃음 가능 | 세션 section-detail 을 서버 판 확인 없이 씀(`B06_Section_Section_Store.ts:126-131`) · 445 뒤 patch 바탕이 캐시라 낡은 캐시가 서버 값을 되씀 → 캐시에 서버 판(지문) 붙이고 다르면 사용자 칸만 얹음 | 451 |
|
||||
| 440-4 | 있음(추정) | 자료 어긋남 | 새로고침 뒤 hold 가 초안 열쇠로 옮겨진 세션 칸을 처음 값으로 뜸(`Section_Store.ts:241-293` · `design_pipeline_page.ts:441-445`) | 451 |
|
||||
| 440-3 | 있음 | 잘못 고름 | 숨은 종단 보기에서 applyPipes · followFacilities 건너뜀(`design_view_profile.ts:160-162, 214-216`) → 숨어도 관 id 장부 돌림 | 451 |
|
||||
| 384_3 | 시험 낡음 | — | `pvi == 2` → 6 = 427 의도 → 단언 고침 | 451 |
|
||||
| 433-17① | 있음 | 자료 오염 | 구 구조물 이관이 초안 섞인 측점을 보내고 서버가 저장 관으로만 가름(`design_view_profile_sections.ts:126-153` · `B05_Profile_Structures_Router.py:247-270`) → 서버가 본문 버리고 저장 종단 파일 직접 읽음 · 화면은 [저장] 없이 쓰지 않음 | 452 |
|
||||
| 433-10 | 일부 | 작음 | 관 PUT 이 측점만 다시 세우고 옛 횡단 파일 남김(`B06_Section_Router_Stations.py:232-289` · 화면엔 안 보임) → 끝에 정리 | 452 |
|
||||
| 433-18 | 있음(추정) | 그 측점 자료 잃음 | 시종점 열쇠 우선순위 두 벌(화면 end 먼저 `Sections_Stations.ts:337-345` · 서버 시설 먼저 `Route_Save_Parts.py:128-141`) · `kept.update(fresh)` 가 EP 행을 irregular 로 갈음 → 한 규칙 · 거울 344_3 | 452 |
|
||||
| 433-14③ · 433-21③ | 있음 | 막힘 | 노드 12 px 안이면 손잡이 · 마커 못 집음(`B05_Profile_UI_RouteEdit_Pointer.ts:44, 215, 235, 401`) → 노드 가운데 6 px 만 노드 우선 · 그 밖은 가까운 것 · 맴돔 커서 같은 판정 | 453 |
|
||||
| 433-21① | 있음 | 작음 | 손잡이 끌기에 미리보기 맞춤 · 측점 밖 막힘 없음(`Pointer.ts:312-353`) → 노드 갈래와 같게 | 453 |
|
||||
| 433-14① | 고쳐짐(441) · 잔여 | 작음 | 맞춤 안 된 기준이면 막힌 걸음 미리보기가 남음 → endDrag 되돌림 | 453 |
|
||||
| 433-14② | 있음 | 작음 | 스냅만 바꾸고 되돌리면 초안 null(`B05_Profile_UI_RouteEdit_Draft.ts:69` lineChanged 만) → dirty 판정 넘김(`RouteEdit.ts:630`) | 453 |
|
||||
| 433-1 | 있음 | 겉모양 | test_365 ⑧ 이름만(`helper_365_page_pipeline.cjs:407, 416`) | 453 |
|
||||
| 433-21② | 있음(10~15 %) | 막힘 | 방향키 20 m 걸음 맞춤이 곡선마다 가장 가까운 측점만 고름(`logic/B05_Profile_RouteEdit_StationFit.ts:158-176`) → 내림 · 올림 두 후보 + 뒤 곡선 앞보기 | 454 |
|
||||
| 433-3 | 있음 | 헛 계산 | 계산 줄 `masshaul` · `haul` 단계(`logic/B05_Profile_MassHaul_Stage.ts` · `B05_Profile_Api_HaulPlan.ts:89-105`)를 읽는 화면 없음 · 조작마다 유토 셈 + 흙 배분 POST 헛으로 → 걷음(쓰는 벌 `B05_Profile_UI_Profile_MassHaul.ts` · `createHaulPlanPrefetch` 남김 · `earthwork()` cross 다시 먹이기 남김) · 탐침 시험 7 | 454 |
|
||||
| 433-5 | 있음 | 작음 | 관 옮김 뒤 이웃 꼭짓점 z 그대로 · 곡선 모양 바뀌어 0.1 m 뜸(`logic/B05_Profile_Grade_Seat.ts:68` ↔ `B05_Profile_Router_Confirm.py:262`) → 바로 앞뒤 이웃(사용자가 높이 고친 꼭짓점 뺌)도 맞춤 · 목표 = 옮기기 전 그 측점 계획고 | 455 |
|
||||
| 433-13① | 있음 | 작음 | ▲▼ 가 누른 꼭짓점의 자동 R 을 남김(`logic/B05_Profile_UI_Profile_Alignment.ts:565-590`) → 자동 R(사용자가 안 넣은 값)이면 지워 기본 L · 사용자 R 은 둠 | 455 |
|
||||
| 433-13② | 있음(드묾) | 작음 | 관 정착 · 직선 분할 폴백 첫 종단엔 직선화 안 걺(`B05_Profile_Engine_Grade_Profile.py:278, 296, 427`) → 같은 직선화(관 꼭짓점 hold) | 455 |
|
||||
| 433-13③ | 있음 | 작음 | 옛 정책에 법정 최소 R · L 없어 초안 경고 0(`logic/B05_Profile_Pipeline_Grade.ts:180` · `Engine_Grade_Alignment.py:145`) · 저장 뒤엔 뜸 → 빈 값은 설계속도 법정값 | 455 |
|
||||
| 433-9 | 고쳐짐(추정 · 427) | — | 화면 다시 잼 | 455 |
|
||||
| 433-8 | 고쳐짐(436) | — | 닫음 | — |
|
||||
| 433-13④ | 화면 확인 거리 | — | 새 초기값 경고 칩 = 체인 다시 돌림(쓰기) · 사용자 화면 확인 | — |
|
||||
| 433-2 | 있음 | 시험 힘 | 옛 id 시험 약 25 파일 · 95 경우 건너뜀 · id 만 바꾸면 안 됨(새 프로젝트에 파일 없음 · 자료 사실 박힘) → 얼린 픽스처 · 다음 장(자료 크기 정한 뒤) | 다음 장 |
|
||||
|
||||
## 4. 나눔(파일 안 겹침)
|
||||
|
||||
| 절 | 창 | 파일 |
|
||||
|---|---|---|
|
||||
| 448 | sub6 | Panel_Settings · Panel · Page_Latest · Api_Fetch · b_page_state · design_save.ts(차례 한 줄 · 새 차례 함수는 새 파일) · Router_Lifecycle.py · Schema.py · common_util_workflow_state · common_util_initial_snapshot · B03 Service_Chain · B06 Regenerate_Options |
|
||||
| 449 | sub4 | design_save.ts(관 차례 · catch) · design_shared.ts · B05_Profile_Api_Pipes_Draft.ts · Drainage_Panel(savePipes) · B04 Router_Basins(실패 응답) |
|
||||
| 450 | sub5 | logic/B06_Section_Station_Swap.ts · B06_Section_UI_Page_Span_Control.ts · B06_Section_UI_Cross_Detail_Cad.ts |
|
||||
| 451 | sub7 | B06_Section_Section_Store.ts · _Canon.ts · design_pipeline_page.ts(hold 441-445 만) · design_view_profile.ts · test_384_3 |
|
||||
| 452 | sub8 | B05_Profile_Structures_Router.py · design_view_profile_sections.ts(이관 부름) · B06_Section_Router_Stations.py · Route_Save_Parts.py · B06_Section_Router_Confirm.py · B06_Section_Station_Keys.ts(시종점 열쇠만) |
|
||||
| 453 | sub1 | B05_Profile_UI_RouteEdit_Pointer.ts · B05_Profile_UI_RouteEdit_Draft.ts · B05_Profile_UI_RouteEdit.ts(한 줄) · helper_365 · test_365 |
|
||||
| 454 | sub2 | logic/B05_Profile_RouteEdit_StationFit.ts · MassHaul_Stage.ts · Api_HaulPlan.ts · design_pipeline.ts · design_pipeline_page.ts(283 · 382-383 단계 등록만) · design_pipeline_types.ts · Profile_Preview.ts |
|
||||
| 455 | sub3 | logic/B05_Profile_Grade_Seat.ts ↔ B05_Profile_Router_Confirm.py · Profile_Alignment.ts · Engine_Grade_Profile.py · Pipeline_Grade.ts · Engine_Grade_Alignment.py |
|
||||
|
||||
같은 파일 둘: design_save.ts(448 차례 한 줄 · 449 관 차례 · catch) · design_pipeline_page.ts(451 hold · 454 단계 등록) — 네 몫 함수만.
|
||||
Reference in New Issue
Block a user