chore(계획): 요구 432 분석 A — 노선 손 고침 [저장] 뒤 종단 지반고 = 옛 규칙(498-2 아님) · PLAN 575 · 469-3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
# 432-A — 검증_랩탑메인 22:04 뒤 종단 계획고 = 지반고
|
||||
|
||||
범위: 읽기만(storage · DB SELECT · 서버 로그 `tmp/server.log` · 코드 · git). 서버 · 브라우저 안 띄움 · 고친 것 없음.
|
||||
프로젝트 `dad81824-…` · storage `storage/1/3/dad81824-4bb7-41df-ad9c-95c870c2a0dc/`. DB 시각은 UTC(+9 = 한국 시각).
|
||||
|
||||
## 결론
|
||||
|
||||
- 22:04 = **노선을 손으로 고친 [저장]**(B05·B06 한 본문 `/design/save` · 노선 칸 실림 · `as_initial` 아님). 추천 [적용] 아님 · [초기화] 아님.
|
||||
- 원인 = **옛 규칙**(344-2 · 400 · 438): 손 [저장]의 계획고 옮김은 옛 선 옆 1 m 안 측점만 옛 기준 높이 · 나머지는 「새 지반 첫 계획선」(측점마다 계획고 = 지반고를 지나는 꼭짓점). 균형 종단은 편집이 아니라 **기준 꼭짓점(base_pvi)** 에 있어서 고친 자리에서 통째 사라짐.
|
||||
- **498-2(`b92fa06f3`) 탓 아님** — 498-2 는 계획고 편집(edits) 본문만 고침 · 기준 꼭짓점 셈은 안 만짐 · 이 프로젝트 편집은 앞뒤 모두 비어 있음 → 옛 코드로 돌았어도 같은 결과.
|
||||
- 생기는 조건 = 균형 종단 뒤 노선을 손으로 크게 고쳐 [저장](교점 지움 · 끌기 + 측점 스냅이 뒤 교점을 밂). 이번엔 57 측점 중 39 곳이 「바뀐 자리」.
|
||||
- 되살림 = 좌측 아래 [초기화] — 21:51 [적용] 직후 초기값(19 교점 · 균형 종단 최대 12.36 %)이 온전히 남아 있음. 손 고친 노선은 잃음.
|
||||
|
||||
## 1. 22:04 에 돈 길 — 판정 근거
|
||||
|
||||
| 근거 | 21:51 추천 [적용] | 22:04 | 판정 |
|
||||
|---|---|---|---|
|
||||
| `initial_snapshot/` 시각 | 21:51:07~26 새로 씀 | 안 바뀜(전부 21:51) | `as_initial` 이면 `refresh_initial_snapshot` 이 다시 뜸 → 22:04 는 [적용] 아님 |
|
||||
| 서버 로그 | 「계획노선 갈아 끼움 노드 19 → 정점 197」 → 「균형 종단 셈 … 5.3s」 → 「균형 종단 반영 route_id=988 변화점 59」 → 「노선 [확인] 초기값 다시 뜸」 | 서버 다시 읽음(소스 최신 22:03:39) 직후 「노드 16 → 정점 197」 → 균형 종단 줄 없음 · 초기값 다시 뜸 없음 → 「재확정 체인(노선 저장) … 계획고 옮김 0.5s」 | 손 [저장] 체인(`run_route_save_chain` · `initial=False`) |
|
||||
| 노선 교점 | 스냅샷 19 | 작업본 16 = 스냅샷 2 · 3 · 6번(R 42.63 · 40.63 · 40.25) 지움 · 나머지 R 목록 그대로 · 자리 2~14 m 밀림(측점 스냅 켬) | 손 고침 · [초기화] 아님(노드가 스냅샷과 다름) |
|
||||
| 22:01 추천 셈 `route_recommend/af3e94…` | — | earthwork · 종단 반영 끔 · 1189 m · 노드 16 이지만 2번부터 42~185 m 다름 | 추천 미리 보기만 · 저장 노선 아님 |
|
||||
| `B05_Profile/route/initial_choice.json` | 스냅샷 `with_profile: true` | 22:04:22 `with_profile: false` | 손 [저장] 지문 — 손 본문엔 `balanced_profile` 없음 → 서버 기본 false 를 적음(덧 흠 · 5장) |
|
||||
| DB `routes` | 988 · 12:51:15 UTC | 989 · 13:04:13 UTC(22:04:13) · 1053.08 m | — |
|
||||
| DB `longitudinal_sections` | 1220 · 12:51:17 | 1221 · 13:04:15 | — |
|
||||
| DB `project_workflow_stages` 2 · 3 | — | IN_PROGRESS · 13:06:51 UTC(22:06:51 · 「save」) | 마지막 본문 = [저장](확정 아님) |
|
||||
| `change_logs` · `system_audit_logs` · `activity_logs` | — | 22:00~22:10 행 없음 | — |
|
||||
|
||||
22:04 [저장] 뒤 차례: 같은 본문 안 관 차례(「관 지점 1개 저장」) · 횡단 넘김(「서버 재계산 설계 보정 3곳」 · 코리도).
|
||||
22:06:46~51 = **노선 안 바뀐 [저장] 한 번 더**(관 저장 → 상단측 `routes.confirm` → 서버 재계산 57곳 → 코리도 → 단계 save) · 종단 파일 22:06:47 다시 씀 — 노선 안 바뀐 저장이라 기준 꼭짓점은 안 바꿈(코드상).
|
||||
|
||||
## 2. 왜 지반고가 됐나
|
||||
|
||||
균형 종단의 자리(스냅샷 `B06_Section__longitudinal/longitudinal.json`):
|
||||
|
||||
- `profile_alignment.base_pvi` 59 꼭짓점(모두 `source: auto`) = 균형 종단 · `edits` = `station_offsets` 0 · `curve_radii` 0.
|
||||
- 즉 균형 종단은 **기준**이고 편집이 아님.
|
||||
|
||||
손 [저장]이 기준을 다루는 길:
|
||||
|
||||
- `B05_Profile/B05_Profile_Route_Save.py:566-573` — `initial` 아님 → `_carry_profile`.
|
||||
- `B05_Profile/B05_Profile_Route_Save.py:249-304` `_carry_profile` → 277 줄 `carry_base(old_xy, new_xy, old_base, alignment["base_pvi"])` — 넷째 인자 = 막 새로 지은 종단의 「새 지반 첫 계획선」.
|
||||
- `B05_Profile/B05_Profile_Engine_Grade_Carry.py:120-142` `carry_base` — 새 측점마다 옛 선에 투영해 옆 1 m · 방향 30° 안이면 옛 기준 높이 · 아니면 지반 첫 계획선 높이.
|
||||
- 지반 첫 계획선 = 종단곡선을 넣어도 측점마다 지반을 지나는 꼭짓점(`B05_Profile/logic/B05_Profile_Grade_Ground.ts` `passThrough` · 파이썬 `design_ground_following_profile` 짝).
|
||||
- 브라우저 planline 도 같은 규칙(`B05_Profile/logic/B05_Profile_Pipeline_Grade.ts:426-461` → `B05_Profile_Grade_Carry.ts:163-180` `carryBase`) → 저장 전 화면 종단도 이미 지반을 따라감(「보이는 화면 그대로」와 맞음).
|
||||
|
||||
실측(같은 `line_matcher` 로 스냅샷 계획 폴리라인 대 작업본 계획 폴리라인):
|
||||
|
||||
- 옛 선과 같은 자리 18 / 57 측점(0 · 20 · 468 · 500 · 620 · 640 · 840~1053.08) · 나머지 39 = 지반 첫 계획선.
|
||||
- 계획고 = 지반고(1 mm 안) 31 측점 — 화면 「0+0 879.14 = 879.14 · 3+0 869.96 = 869.96」과 같음(60 m 기준 870.259 − 곡선 중앙종거 0.296 = 869.964 = 지반).
|
||||
- 앞 머리핀 교점(2 · 3번)을 지워 노선이 비탈을 곧장 내려감(40→100 m 지반 876.7→851.6) → 지반 따라 −47.9 %(60~100 m) · **76.67 %(329~340 m · 추가 측점 329 뒤)** · 14 % 넘는 토막 26 · 종단곡선 미달 43(스냅샷 17).
|
||||
- 기울기 크기 자체는 새 노선 밑 지형 몫 — 균형 종단을 다시 풀어도 14 % 안쪽은 어려운 노선(확인 못 함 · 셈 안 함).
|
||||
|
||||
## 3. 498-2 탓인가 — 아님
|
||||
|
||||
- `b92fa06f3` 고친 자리 = 계획고 편집 본문(브라우저 `gradeTouch` · `routeGradeTouch` · 서버 `alignment_cleared` · `overlay_edits` · `touched_alignment`)뿐. 기준 꼭짓점 셈(`_carry_profile` · `carry_base` · `carryBase`)은 그 커밋에 없음 — 마지막 고침 10-22(`a88faa731` · `172ff8170`).
|
||||
- 전 코드(`b92fa06f3^`)로 돌았어도 — 계획고 조각 = 0 칸 ?? 옛 칸 초안 → 편집 비어 있음 → 기준은 같은 `carry_base` 몫 → 같은 결과.
|
||||
- 498-2 새 길로 돌았어도 — 서버 옮김 편집 {} 위에 손댐 {} → {}.
|
||||
- 「처음 종단 = 자동 편집이라 498-2 가 놓침」 갈래는 없음 — 균형 종단은 편집이 아니라 기준이라 편집 길(옛 · 새 모두)이 닿지 않음.
|
||||
- 22:04 요청은 새 파이썬 코드로 돎(22:03:39 다시 읽음 직후) · 브라우저가 새 TS 였는지는 확인 못 함 — 결과엔 영향 없음.
|
||||
|
||||
## 4. 생기는 조건 · 재현 차례(사용자 말)
|
||||
|
||||
조건: 추천 [적용](종단 반영 켬)으로 균형 종단을 받은 뒤 노선을 손으로 고쳐 [저장] — 옛 선에서 옆 1 m 넘게 벗어난 측점의 계획고 = 지반고. 교점 하나만 끌어도 측점 스냅이 뒤 교점을 밀면 뒤쪽 넓게 번짐.
|
||||
|
||||
1. 검증 프로젝트 B05 → [노선 추천] → 「종단 반영」 켬 → [적용] → 종단 최대 기울기 14 % 안 확인.
|
||||
2. 평면에서 앞쪽 교점 하나 지움(또는 5 m 넘게 끌기) · 측점 스냅 켬.
|
||||
3. 종단도 보기 — 고친 자리부터 계획선이 지반선에 붙음([저장] 전에도).
|
||||
4. [저장] → 새로고침 — 같은 자리 계획고 = 지반고 · 최대 기울기 커짐 · 미달 늘어남.
|
||||
|
||||
## 5. 고칠 자리 · 방향(사용자 협의 뒤 · 값 · 갈래 임의 확정 안 함)
|
||||
|
||||
자리:
|
||||
|
||||
| 자리 | 지금 |
|
||||
|---|---|
|
||||
| `B05_Profile/B05_Profile_Route_Save.py:249-304`(277 줄) · `:566-573` | 손 [저장] = 옮김만 · 바뀐 자리 = 지반 첫 계획선 |
|
||||
| `B05_Profile/B05_Profile_Engine_Grade_Carry.py:120-142` | `carry_base` 다른 자리 = 지반 |
|
||||
| `B05_Profile/B05_Profile_Router_Replan.py:556-564` | 균형 종단 = `balanced_profile and as_initial` 일 때만 |
|
||||
| 짝 TS `B05_Profile/logic/B05_Profile_Grade_Carry.ts:163-180` · `B05_Profile/logic/B05_Profile_Pipeline_Grade.ts:426-461` | 화면 planline 같은 규칙(고치면 짝 · 거울 시험 `test_400_profile_carry.py` · `test_344_2_route_pairs.py`) |
|
||||
|
||||
방향 갈래(고를 것):
|
||||
|
||||
- A. 손 [저장]에도 「종단 반영」 켬이면 고친 자리만 균형 종단 다시 풂(같은 자리 높이 고정 · 앞뒤 이음) — 조작 중 화면 즉시 셈이 무거우면 화면은 지금 규칙 · [저장] 때 서버가 풂 → 「보이는 화면 그대로」(요구 289 · 290)와 어긋나는 점 협의.
|
||||
- B. 고친 자리 = 옛 균형 종단 높이를 누가거리 비례로 늘려 옮김(지반 아님) — 화면 · 서버 짝 그대로 한 규칙.
|
||||
- C. 지금 규칙 유지 + 고친 자리 「계획고 = 지반고 N곳 · 기울기 넘음 N」 알림.
|
||||
|
||||
덧 흠(같은 길에서 봄): 손 [저장]이 `initial_choice` 「종단 반영」을 끔으로 덮음 — `B05_Profile/B05_Profile_Router_Replan.py:586-592` 가 `request.balanced_profile`(손 본문엔 없음 · 기본 false)을 적음. 손 본문의 `initial.with_profile` 은 버려짐. 방향 = `as_initial` 아니면 `choice.with_profile` 을 적음(또는 손 [저장]은 `initial_choice` 안 씀). 다시 열면 추천 창 · 종단 띠가 「종단 반영 끔」으로 섬.
|
||||
|
||||
## 6. 되살릴 길(읽기만 · 제안만)
|
||||
|
||||
- 좌측 아래 [초기화](`/route/reset` = `initial_snapshot/` 을 작업본에 덮음 · 재계산 아님) → 19 교점 · 균형 종단(최대 12.36 % · 미달 17 · 편집 0) · 종단 반영 켬 · 관 · 횡단 21:51 판.
|
||||
- 스냅샷 온전: 노선 · 곡선표 · 노드 · 횡단 59 · 종단 · 관 `pipe_points.json` · `db.json` · 코리도 모두 21:51:07~26 · 21:51 뒤 작업본에 쓴 것은 22:04 · 22:06 [저장]뿐.
|
||||
- 잃는 것 = 22:04 손 고침(교점 2 · 3 · 6 지움 · 밀림) · 22:06 [저장] 내용.
|
||||
- 전에: `routes` · 자식 4표 · `project_workflow_stages` 떠 두기([초기화]가 노선 행 통째 지움) · storage 는 Synology 로 데스크탑에도 번짐 · 검증_랩탑메인 = 사용자 · 브레인 공용 → 사용자 확인 뒤.
|
||||
- 손 고친 16 교점 노선을 남긴 채 균형 종단만 다시 푸는 단추 = 찾지 못함(추천 [적용]은 추천 노선으로 바꿈).
|
||||
|
||||
## 확인 못 함
|
||||
|
||||
- 22:04 · 22:06 을 누가 눌렀나(사용자 · 다른 창 ORCA) — 요청은 메인 서버(8000) 로그에 있음 · 접속 기록 줄 · 감사 행 없음.
|
||||
- 22:04 직후 종단 파일 본 자체 — 22:06 [저장]이 덮음(22:06 은 노선 안 바뀐 저장이라 기준 안 바꿈 · 코드로만 판정).
|
||||
- 22:04 본문에 계획고 조각 · `alignment_cleared` 가 실렸나 — 로그에 차례 기록 없음(결과 편집 {} 로 영향 없음).
|
||||
- 22:01 추천 창(earthwork · 종단 반영 끔)을 누가 · 왜 열었나 · [취소]였나 — [적용] 흔적 없음.
|
||||
- 새 노선으로 균형 종단을 다시 풀면 기울기가 얼마인지 — 셈 안 함.
|
||||
Reference in New Issue
Block a user