chore(조사): 요구 275 분석 — 저장 차 = 노선 선 반올림 몫 · 초기 종단 438 이력
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,102 @@
|
||||
# 475 요구 275 ① 저장 차(소수점 맞춤) · ④ 초기 종단 이력 — 분석
|
||||
|
||||
분석 = 클로드 에이전트(Opus 5.5 · 읽기만) · 기준 = `main_laptop_1` `11b307d1c` · 추정은 (추정).
|
||||
근거 스크립트 = scratchpad `req275\`(`moved.mjs` = 브라우저 길 + 교점 끌기 · `server_moved.py` = 노선 저장 체인 DB 없이 · `cmp*.py` = 측점별 대조) · 자료 = `resources/tester/fixtures/golden_472`(검증_랩탑메인 노선 370 · 검증_sub8 과 같은 노선 · 지형 파일 — md5 같음).
|
||||
쓰기 없음 — 검증_랩탑메인 · 검증_sub8 storage · DB 안 건드림(고정 자료 사본만 씀).
|
||||
|
||||
## 0. 결론
|
||||
|
||||
- ① 소수점 맞춤 = **계산 짝의 차만** 없앰 — 같은 끌기에서 브라우저 ↔ 서버 차 0.6~0.9 ㎥ 전부가 노선 선 자릿수(서버 geojson 1 mm 반올림)에서 옴 · 자릿수를 맞추면 0.00~0.01 ㎥.
|
||||
- 측점 자리 · 지반 표본(격자 ↔ npz) · 첫 계획선(base PVI) · 횡단 설계선 · 면적은 같은 선을 주면 **0 차**(측정) — 「서버가 파이썬 측점 · 지반으로 다시 셈」은 121.6 ㎥ 의 까닭이 아님.
|
||||
- 121.6 ㎥(−18,216.5 ↔ −18,094.9)는 이 고정 자료 + 옹벽 · 추가 측점 · 교점 끌기로 재현 안 됨(0.85 ㎥) — 남은 까닭은 계산 짝 밖(세션 초안 넘김 · 화면 상세 갈림)(추정 · 3장).
|
||||
- ④ 검증_랩탑메인 = 정본 · 초기값 모두 10-17 22:35 에 만든 것 — 432(10-18 16:20) · 438(10-18 17:59) 전 · 그래서 직선화 없음 · L 15.
|
||||
- 지금 규칙(438)을 이 프로젝트에 걸어도 바뀌는 측점 7 · 최대 0.38 m — 「계획고 ≈ 지반 · 최대 기울기 50 % 대」는 규칙대로의 모습(전 측점 꼭짓점 + R > 500 만 직선).
|
||||
- 438 을 안 거치는 길 — [초기화](옛 스냅숏 그대로) · 노선 저장의 안 바뀐 구간(옛 꼭짓점 이어받음) · 추천 [적용] 균형 종단 끔 + 같은 노선(옛 꼭짓점 이어받은 채 초기값 다시 뜸).
|
||||
|
||||
## 1. ① 저장 차 쪼개기(측정)
|
||||
|
||||
### 1.1 재현 틀
|
||||
|
||||
- 브라우저 길 = 472-1 헬퍼와 같은 단계 함수 묶음 · 페이지처럼 열기(route null) 뒤 `pipe.update("route", 초안)` · 초안 = `flattenServerPlan`(plan 노드 · 곡선) + 노드 하나 옮김 · planline `storedPvi` · follow `stationsAt` = 페이지 배선.
|
||||
- 서버 길 = `_write_planned_polyline`(csv 4자리 · 곡선표) → `_route_geojson`(3자리) → 관 따라감 → `run_section_generation` → `_carry_profile` 몫(planned_lines = 옛 · 새 csv 선 · `carry_base` · `seat_route_moved`) → `_carry_cross` 몫 → 상세 읽기 → `_save_tail`(경고 · 설계선 · 보정 · Node 면적 · 누가토량).
|
||||
- 검산 — 노선 안 바뀜 = 브라우저 −17,570.01 · 서버 −17,570.70(472-1 기준값과 같음).
|
||||
|
||||
### 1.2 결과
|
||||
|
||||
| 경우 | 브라우저 | 서버(지금) | 차 | 서버 geojson 4자리 | 두 쪽 같은 선(4자리) |
|
||||
|---|---|---|---|---|---|
|
||||
| 노선 그대로 | −17,570.01 | −17,570.70 | 0.69 | — | 0.00 |
|
||||
| 교점 9(360 m) 동 +5 m | −15,499.53 | −15,500.32 | 0.79 | −0.02 | −0.01 |
|
||||
| 같은 끌기 + 옹벽 595–605 + 추가 측점 510 | −16,281.77 | −16,282.62 | 0.85 | −0.03 | −0.01 |
|
||||
|
||||
- 측점마다(끌기 경우) — 측점 수 · 누가거리 · 계획고 0 차 · 단면 모양 0 차 · 중심 x · y ≤ 1 mm · 성토 ≤ 0.045 ㎡ · 층따기 밑수 ≤ 0.057 m.
|
||||
- 브라우저 선(부동소수 그대로)을 서버 geojson 에 그대로 넣으면 차 **0.00 ㎥ · 성토 최대 1e-4 ㎡** — 지반 표본 짝(`heightAt` ↔ `sample_xy`) · 측점 틀 · 첫 계획선 짝 · 횡단 설계 · 면적 짝 모두 같음.
|
||||
- 몫 나눔 — 반올림(geojson mm) ≈ 0.8 ㎥ · csv 0.1 mm ≈ 0.02 ㎥ · 표본기 출처 0 · 측점 자리(반올림 밖) 0 · 계획선 다시 셈 0 · 기본값(X1) 0(이 자료의 새 측점은 두 쪽 단면 모양 같음).
|
||||
- 헬퍼 흠 하나 걸러냄 — 472-1 헬퍼는 초안 상세 `shapeStatus` 를 따라가기 **전** 구조물로 셈(노선 안 바뀜 시험엔 무관) · 끌기 재현에선 옹벽 시작 측점 594 에 옹벽이 안 붙어 27.6 ㎥ 헛 차 · follow 출력 구조물로 고친 뒤 0.85 ㎥(페이지는 follow 뒤 가게 값 · 457 — 헬퍼만의 일).
|
||||
|
||||
### 1.3 소수점 맞춤 — 가장 작은 고침
|
||||
|
||||
- 서버 — `B05_Profile/B05_Profile_Engine.py:24-31` `_route_geojson` x · y 반올림 3 → 4자리(= `planned_route.csv` · `common_util_route_geometry.py:225-234`) · 차 0.8 → 0.02 ㎥.
|
||||
- 브라우저 — route 단계 그린 선을 4자리로(`B05_Profile/logic/B05_Profile_Pipeline_RouteGround.ts:70-77` `createRouteStage` · 저장 선 `plan.planned` 은 이미 4자리) · 차 0.02 → 0.01 ㎥.
|
||||
- 짝 표시 · 거울 — 두 자리 머리에 「노선 선 4자리 = csv 짝」 · golden 의 `KNOWN` X2(입력 선) 줄은 사라지는 쪽(472-1 문이 「안 나타난 알려진 차」로 알려 줌).
|
||||
- 기존 프로젝트 영향 — 저장분은 안 바뀜 · 노선 저장 · 자동설계 체인으로 노선 geojson 을 다시 쓸 때만 정본이 브라우저 값 쪽으로 옮겨감(이 자료 −17,570.70 → −17,570.01 · 0.69 ㎥ · 측점 자리 1 mm 안).
|
||||
- 함께 볼 자리 — 관 지문은 0.01 m 끊음 + 허용오차 0.05 m(`common_util_drainage_pipes.py:239-249`)라 자릿수 바뀜에 안 흔들림 · `_load_route_polyline` 을 읽는 B04 · B07 · 3D 는 값이 0.5 mm 안에서 바뀜(추정 · 영향 미미).
|
||||
- 반대 길(브라우저를 mm 로 깎음)은 못 맞춤 — 반올림 동점(…5)을 JS · 파이썬이 다르게 처리해 −0.2~−0.6 ㎥ 남음(측정).
|
||||
|
||||
## 2. 121.6 ㎥ 의 자리(추정)
|
||||
|
||||
- 계산 짝으로는 1 ㎥ 넘는 차가 안 남(1.2) — 코더 화면값 차는 **입력이 다름**에서 옴(추정).
|
||||
- 재현에 없는 것 = 코더 화면의 세션 초안 — 0+0 · 1+0 암 경사 0.8 · 0.7(세션 칸) · 옹벽 · 추가 측점 초안 · 그때의 교점 · 끄는 양.
|
||||
- 후보(추정 · 큰 차례)
|
||||
- 초안 횡단 넘김 두 길 — 화면 B06 캐시 갈아끼움(`B06_Section/logic/B06_Section_Station_Swap.ts:299-303` · 같은 열쇠 측점은 저장 정본 `uphill_side` 를 그대로 · 암 경계 · 2단 경사 `:89-90` 이어 씀) ↔ 서버 = 새 지형 상단측(요구 274) + `stations.carry`(`B06_Section_Router_DesignSave_Route.py:103-123`) — 단면 모양 하나가 바뀌면 측점 하나에 6 ㎡ 안팎 · 20 m 에 ~120 ㎥.
|
||||
- 요구 275 ③(노선 바뀌면 암 경계 · 2단 경사 안 넘김 · 475-3)이 정하는 바로 그 칸 — 화면은 넘기고 서버는 다시 셈이면 차가 남.
|
||||
- B05 배지가 읽는 상세가 초안 묶음 상세가 아닌 섞인 상세(433-11 「덧 측점 넣기 뒤 브라우저 누가토량 크게 뜀」 · 1027 · 1029 와 같은 갈래).
|
||||
- 짚는 길(한 번에) — 검증_sub8 에서 같은 조작 뒤 [저장] 직전 묶음 `ground` · `cross` 출력(또는 초안 상세)과 저장 뒤 GET 상세를 떠 `cmp3.py` 꼴 측점별 대조 → 차가 몰린 측점 · 칸이 곧 까닭.
|
||||
|
||||
## 3. ④ 초기 종단 이력
|
||||
|
||||
### 3.1 규칙 · 커밋
|
||||
|
||||
| 때 | 커밋 | 내용 |
|
||||
|---|---|---|
|
||||
| 09-02 · 09-03 | (Grade_Profile 머리) | 1차 계획선 = 전 측점 꼭짓점 · 계획고 = 지반 · 꼭짓점마다 종단곡선(지반 지남 맞춤) · 기울기 막지 않음 |
|
||||
| 10-18 16:20 | `0714e9653`(432-1) | 기본 L 15 → 20 · 초기값 R > 500 꼭짓점 곡선 없음(`no_curve_keys`) · 법정 R · L 경고 |
|
||||
| 10-18 17:59 | `314ce5351`(438) | R > 500 꼭짓점 묶음을 앞뒤 꺾임 잇는 직선 위로(`straight_pass_through` ↔ TS `passThrough`) · 432 열쇠 걷음 |
|
||||
| 10-18 21:37 | `83968bf6e`(455 ②) | 관 정착 · 직선 분할 폴백 첫 종단도 직선화 |
|
||||
| 요구 269-2 | 433-15 | 직선화 높이 한도 없음 |
|
||||
|
||||
- 직선화 자리 — `B05_Profile/B05_Profile_Engine_Grade_Profile.py:278-279`(1차 계획선) · `B05_Profile_Engine_RouteInitial_Profile.py:282-290`(균형 종단) · TS `logic/B05_Profile_Grade_Ground.ts:75 · 135`(초안 바뀐 구간).
|
||||
|
||||
### 3.2 검증_랩탑메인(dad81824 · 노선 370) 지금
|
||||
|
||||
- 정본 · 초기값 종단 파일 둘 다 10-17 22:35(같은 내용) — 꼭짓점 57 = 측점 57 · 정책 L 15 · `no_curve_keys` 없음 · 편집 0 · 최대 기울기 56.6 % · 계획고 − 지반 최대 1e-4 m.
|
||||
- 기울기 차 < 4 %(L 20 기준 R > 500) 꼭짓점 7 — 직선화가 안 걸린 자리.
|
||||
- 지금 코드 1차 계획선을 같은 측점 · 지반에 다시 셈(메모리) — 바뀐 측점 7 · 최대 0.376 m · L 20 · 계획고 − 지반 최대 0.376 m · 최대 기울기 60.6 %(직선화가 묶음 앞뒤 기울기를 키움) · 438 재현 기록(R > 500 8 → 0 · 최대 0.38 m)과 맞음.
|
||||
- 그래서 「계획고 = 지반」 모습 자체는 규칙대로 · 빠진 것은 438 직선화 7 곳 + L 20.
|
||||
|
||||
### 3.3 길마다 438 거침
|
||||
|
||||
| 길 | 거침 | 근거 |
|
||||
|---|---|---|
|
||||
| 자동설계 체인 | 거침 — 1차 계획선 새로 · 그 뒤 초기값 뜸 | `B03_FileInput_Service_Chain.py:338` · Grade_Profile `:279` |
|
||||
| 추천 [적용] + 균형 종단 | 거침 | `B05_Profile_Router_RouteInitial.py:356` `_set_base_pvi` · RouteInitial_Profile `:290` |
|
||||
| 추천 [적용] · 균형 종단 끔 | **바뀐 구간만** — 안 바뀐 구간(같은 노선이면 전부)은 옛 꼭짓점 · 옛 L 그대로 이어받은 채 초기값 다시 뜸 | `B05_Profile_Router_Replan.py:612-659` → `B05_Profile_Route_Save.py:224-245` `_carry_profile` · `carry_policy`(옛 L) |
|
||||
| 손 노선 [저장] | 바뀐 구간만(규칙대로 — 사용자 계획고 지킴) | `B05_Profile_Route_Save.py:228-236` |
|
||||
| [초기화] | 안 거침 — 스냅숏 복원(다시 셈 아님 · CLAUDE.md 5장) | `B05_Profile_Router_Lifecycle.py:319` `restore_initial_snapshot` |
|
||||
| B05 [확정] · 종단 편집 | 안 거침 — 저장 base_pvi + 편집으로 다시 지음(규칙대로) | Grade_Profile `:537` `rebuild_alignment_profile` |
|
||||
|
||||
- 정책 L 섞임 — 노선 저장 바뀐 구간 새 꼭짓점은 config L 20 으로 직선화하지만 `carry_policy` 가 옛 L 15 를 이어 둠 · 곡선 길이 계산은 L 15(추정 · 작은 차).
|
||||
|
||||
### 3.4 기존 프로젝트에 맞는 초기 종단 주기(사용자 편집 지킴)
|
||||
|
||||
- 지금 있는 길로는 없음 — 자동설계 다시 = 관 · 구조물 · 횡단 편집 모두 갈아엎음 · [초기화] = 옛 스냅숏.
|
||||
- 제안 — 「초기 종단 다시 세움」 한 번 셈(서버 파이썬): 지금 측점 · 지반으로 `design_ground_following_profile` 의 base_pvi(438 직선화 · L 20) → `edits`(station_offsets · curve_radii) 그대로 얹어 `rebuild_alignment_profile` · 편집 꼭짓점은 hold(`straight_pass_through` 의 held 칸) · 관 정착 꼭짓점은 455 ② 규칙.
|
||||
- 초기값 스냅숏 종단 파일도 갈지 = 사용자 결정(초기값 쓰기는 체인 · 추천 [적용]만 — 5장 규칙 밖 길).
|
||||
- 검증_랩탑메인은 편집 0 — 바뀌는 것 = 측점 7 계획고 최대 0.38 m · 곡선 L 15 → 20 · 누가토량 소폭(측정 안 함).
|
||||
- 덤(작음) — 추천 [적용] · 균형 종단 끔 길도 새 노선이면 초기값이므로 전 구간 1차 계획선(438)으로 세우는 편이 규칙과 맞음(지금 = 옛 꼭짓점 이어받음 · 사용자 판단).
|
||||
|
||||
## 4. 남은 것
|
||||
|
||||
- 121.6 ㎥ 실측 대조(2장 짚는 길) — 화면 조작 · 저장이라 검증_sub8 창 몫.
|
||||
- 1.3 고침 착수 여부 · 정본 값 바뀜(≤ 1 ㎥ · 다음 노선 저장 때) 협의.
|
||||
- 3.4 다시 세움 길 · 스냅숏 갈음 여부 협의.
|
||||
Reference in New Issue
Block a user