knowledge(verification): 계획서 공통기반·참고·검증프로젝트 이관

사용자 판단으로 계획서에서 뺀 것 — 원문 그대로 보관.

- 공통기반 0-5·0-7 : 행동지침 5장(계산 자리·데이터 3층)과 겹침
- 8-33            : 창별 검증 프로젝트 표는 OWNERS.md 자원 점유로, 나머지는 여기
- 참고 절 셋       : 데이터 세트 정의는 지침과 중복, 구조물 구현 기준·계곡 통과
                    시설 선정은 옛 자료

계획서 1,167줄 6.4만 자 → 1,058줄 5.9만 자.
미체크 53 → 57 (0-8 고칠 순서 셋 · 투영 이월 하나를 체크박스로 세움).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-09 19:16:00 +09:00
co-authored by Claude Opus 5
parent ca639d57c5
commit f9874fd5c9
@@ -0,0 +1,144 @@
# 계획서에서 옮긴 것 — 2026-09-09 (f) 공통기반 · 참고 · 검증 프로젝트
사용자 판단으로 계획서에서 뺀 것. **원문 그대로**임.
- **공통기반 0-5·0-7** — 행동지침 5장(계산 자리·데이터 3층)과 겹침
- **8-33** — 창별 검증 프로젝트 표는 `OWNERS.md` 자원 점유로 옮겼고 나머지는 여기
- **참고 절 셋** — 데이터 세트 정의는 지침과 중복, 나머지 둘은 옛 자료
## 참고 절 통째 — 데이터 세트 정의 · 구조물 구현 기준 · 계곡 통과 시설 선정
## 참고
> **여기에는 코드 작업 중 필요한 기준표·확정사항만 둔다**(운영 원칙).
> 일하는 법·검증 함정은 위키 몫 — 계획서에 두지 않는다.
### 데이터 세트 정의 (2026-09-06 사용자 확정 — 이 표가 기준)
혼동을 없애기 위해 **세 벌**로만 나눈다. 이 밖의 자리는 만들지 않는다.
| 세트 | 어디 | 언제 쓰나 | 누가 쓰나 |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------- | ---------------------------------------------------------------- |
| **① 초기값** | `initial_snapshot/` (파일 + DB 행 덤프) | 파일 업로드 직후 자동설계 체인이**한 번** 찍음 | 그 뒤로는**어떤 경로도 쓰지 않음**. [초기화]가 읽어 되돌림 |
| **② 작업본** | DB`routes`·`longitudinal_sections`·`cross_sections` + 정본 파일(`route/`·`longitudinal/`·`cross_sections/`·`drainage/`) | 사용자가 [저장]·[확정]을 누를 때만 | 서버. 화면은**읽기만** |
| **③ 캐시** | 브라우저 세션(sessionStorage) — 등록표`A00_Common/b_page_state.ts` | 사용자가 화면을 만지는 내내 | 브라우저. [저장]·[확정]에서 ②로 넘어감 |
**흐름 (사용자 확정 4줄)**
1. 파일 업로드 직후 B04~B06 초기값을 **서버가 계산해 ②에 저장**하고, 그것을 그대로 ①로 떠 둠.
2. 사용자가 B05·B06 에 들어오면 ②를 **한 번 읽어** 화면에 올리고, 그 뒤 모든 계산은 ③(브라우저)에서 함. 조작 중에는 ②를 건드리지 않음.
3. [저장]·[확정]에서만 ③ → ②. ①에는 절대 쓰지 않음(그래야 [초기화]가 성립).
4. 오래 걸리는 계산만 서버를 거침(3D 코리도·구조물 면적·유토곡선 — Node 진입점).
**지키는 장치**
- ① 보호: `common_util_initial_snapshot.py` 가 체인 끝에서 한 번만 찍고, 저장 경로 어디도 `initial_snapshot/` 을 열지 않음.
- ③ 정의: 등록표(`b_page_state.ts`)가 세션 키의 **유일한 정의처**. 새 조작값은 여기 줄을 세우지 않으면 [초기화]가 못 지움.
- ② 쓰기 창구: B05 [임시저장](`B05_Profile_UI_Page_Actions.tempSaveAction`)·B06 [저장]/[확정](`B06_Section_UI_Page_Persist`) 둘뿐.
- 읽기는 읽기만: 상세 조회(`get_section_detail`)에서 계획을 다시 계산하던 두 자리(포장 구간·세월교 노면 하강)를 **저장 시점으로 옮김**(2026-09-06). 남은 하나(`attach_default_designs`)는 저장분이 있으면 아무 일도 안 하는 폴백.
### 구조물 구현 기준
- 상세 타입·옵션 정본: `B05_Profile/B05_Profile_Structure_Types.json`.
- 배수관 정본: `pipe_points.json`; 일반 구조물 정본: `structures.json`.
- B05·B06은 같은 프론트 캐시와 백엔드 데이터를 사용한다.
- 점형=측점 1개, 구간형=시점~종점, 부지형=위치+면적.
- 자동=프로그램 산출, 후보=제안 후 사용자 확정, 수동=직접 추가.
- A8 집수정은 A1 배수관 유입부 옵션이며 단독 구조물이 아니다.
- 교량(A5)과 생태연못(F2)은 임도에서 사용하지 않는다.
- B·F·G군은 B05 선택지에서 제외하고 필요한 항목만 B06에서 사용한다.
- 기술 근거·수치는 `resources/knowledge/technical_info/01_임도/`를 우선한다.
### 계곡 통과 시설 선정
| 조건 | 시설 |
| ---------------------------------------------- | ------------------------------------------------ |
| 소계류, 횡단경사 30% 이하, 종단 3~5% 조정 가능 | 물넘이 또는 세월교 우선 검토 |
| 계곡 횡단경사 30% 초과 | 배수관 Ø800 이상; 800→1000→1200→1500 순 검토 |
| 수리계산 Ø1,500 초과, 협곡, 횡단경사 40% 이하 | BOX암거 검토 |
| 배수관 2련 이상 필요 | 물넘이 재검토 |
| 하천 또는 3차수 이상 계곡 | 세월교 검토 |
설계유량은 `Qd = 2.0 × Q`와 Manning 통수능으로 판단한다. 관경은 유량으로, 집수정·기슭막이 등 부속은 지형과 배치 위치로 정한다.
## 8-33 검증용 프로젝트 — 앞 판 복제 기록과 대조 기준선 (표는 OWNERS.md 로 옮김)
### 8-33. 검증용 프로젝트는 창마다 하나 — 「단면이 있다」만으로는 모자람 (2026-09-08 사용자 지시)
**창마다 자기 검증 프로젝트를 씀.** 나눔표의 정본은 `OWNERS.md` 임.
#### ⭐ 확정된 방식 (2026-09-09 사용자 확정 — 사용자가 직접 만들어 배정)
**복제하지 않음. 사용자가 LAS 로 네 개를 직접 만들어 창마다 배정했음**
(2026-09-09 사용자 지시 「LAS파일로 만들것 복제하지마」 · 「프로젝트는 내가 생성해줌」).
| 창 | 프로젝트 이름 | ID | 상태 |
| -------------------- | ------------------------ | ---------------------------------------- | ----------------- |
| 데스크탑 메인 (B08) | `테스크탑_메인` ⚠오타 | `79da822d-921a-40f8-bb93-d8ffd90eeedf` | `WF3_ANALYZING` |
| 데스크탑 보조 (B09) | `데스크탑_보조` | `26275834-9e8b-4e58-93de-22754edb3c6c` | `WF3_ANALYZING` |
| 랩탑 메인 (B05·B06) | `랩탑_메인` | `fa76c162-71c7-46e5-a95d-fb3930665a45` | `WF3_ANALYZING` |
| 랩탑 보조 (B07) | `랩탑_보조` | `936be972-11bc-46c2-8bf3-b15d8de7df0d` | `WF3_ANALYZING` |
- **이름에 `검증_` 접두어 없음** — 사용자가 만든 이름 그대로 씀.
-**구조물이 하나도 안 들어 있음**(랩탑 보조 실측 — `structures.json` 없음, 관 지점 11개만).
**표준도 「제원 조합별 장 수」는 구조물을 심어야 볼 수 있음.** 심는 내용은 결정 1에 걸림.
- **B07 도면 31 건이 뜸** — 표지 · 계획평면도 4 · 종단 3 · 표준횡단 · 횡단 18 · 토적도 · 유역도 ·
**표준도(빈 장 한 줄, 예상대로)** · 용지도.
**앞 판 — 복제로 갔던 자리 (2026-09-09 접음)**
`2f940d8a`(`구조물검증-LAS`)를 복제해 쓰려 했고 데스크탑 메인이 `9cee9b7a` 로 한 번 떴음
(`db_management/tools_clone_project.py` 가 그때 만든 도구, 지금은 안 씀).
**사용자가 원본과 복제본을 지웠고** 그 파일을 실경로로 읽던 시험이 두 PC 에서 깨졌음
(위키에 기록). 그때 잡아 둔 **대조 기준선**은 아래에 남김 — 값의 자릿수를 가늠하는
데는 여전히 쓸모가 있으나 **지금 네 프로젝트의 값은 아님.**
**대조 기준선 (심기 전 값 — 계수를 바꾼 뒤 이 표와 견줄 것)**
```
측점 24 · 연장 350.108m
흙깎기 토사 7.748㎥ · 암 0.264 · 측구터파기 2.173/0.062 · 보정량계 9.304
성토 4,498.74㎥ · 성토면다짐 2,645.21㎡ · 초류종자살포 2,681.53㎡
지장목제거 2,681.53㎡ · 층따기 2,645.21㎡(막아 둔 줄)
구조물 4기 · 자재 6줄 · 운반표 haul_available true
관 지점 5 — 관 Ø1000(84.30) · 관 Ø800(275.71) · 세월교(149.73) · BOX암거(200.92)
· 기슭막이(48.80, 유입부 돌쌓기(메) L=10) ⇒ 배수관 물량 대상은 관 둘
```
## 0-7 노선 두 벌 확정 규칙 절 머리 (규칙 여덟은 0-2 로 합침)
### 0-7. 노선이 바뀌면 세 벌은 어떻게 되나 — 확정 규칙 (2026-09-06 사용자 확정)
노선을 **두 벌**로 둔다 — **예상노선**(원본, 자동 체인이 낸 것, 안 바뀜)과
**계획노선**(수정본, 예상노선을 복사해 시작, 사용자가 고침).
1. **노선 변경 = 계획노선만.** 예상노선은 어떤 경로로도 안 고침.
2. **전처리 전에 두 벌을 확보** — 체인이 예상노선을 내면 그 자리에서 계획노선으로 복사.
그 뒤 모든 계산은 계획노선 기준.
3. **화면에는 둘 다 보인다** — 예상노선 **점선**, 계획노선 **실선**.
4. **[초기화] = 예상노선을 계획노선으로 다시 복사.** 재계산이 아니라 복사.
5. **노선이 바뀌면 배수유역부터 전처리를 다시 돈다.**
6. **둘로 갈라 다룬다****횡단배수 지점**(`pipe_points.json`)은 노선 자리에 따라 생기고
없어지는 것이라 **새로 계산한 값**을 씀. **그 밖의 구조물**(`structures.json`)은
**옛 측점값(누가거리)을 그대로 이어받음** — 사용자가 고쳐 둔 값이 살아남아야 함.
7. **계산은 모달 [확인]을 눌렀을 때만 시작.** 편집 중에는 아무 계산도 안 나감.
8. **재계산은 초기 체인 로직을 재사용**(`run_redesign_chain`). 노선 편집이 쓰려면
**사용자가 고친 계획노선을 그대로 받는 입구 하나**만 내면 나머지 단계는 그대로 돎.
-**투영 이월 코드 정리는 검증 대기** — 7-V-2. 허용오차 판정을 넣어
실제 프로젝트 전부가 투영 가지를 안 타는 것까지 확인했으나, **지우는 것은 조건 둘이
갖춰질 때만**임(WARNING 0 지속 + 관 재배치 경로 신설). 지금 지우면 관 0건 결함으로 되돌아감.
## 0-5 계산 자리 원칙 — 행동지침 5장과 겹치는 세 문단
### 0-5. B05·B06 계산을 **양쪽에서 다 돌 수 있게** (2026-09-06 사용자 지시)
사용자 지시: 「B05·B06 은 전체 다 서버에서도 할 수 있고 브라우저에서도 할 수 있게. 어디서 돌릴지는 나중에 고른다.」 그러려면 계산마다 **양쪽 진입점**이 있어야 하고, 그 진입점이 **같은 한 벌**을 불러야 한다(두 벌이면 고르는 순간 값이 갈림).
**원지반과 계획을 가를 것 (2026-09-06 사용자 정정)** — 「지형에서 뜨는 계산은 브라우저로 못 옮긴다」가 아니라 **다시 계산할 일이 없다**. 원지반은 안 변하므로 처음 한 번 서버가 떠서 영구저장하고, 그 뒤로는 읽기만 한다. 다시 계산해야 하는 것은 **계획**(계획노선·계획고·설계선·면적·수량)이고 그것은 브라우저 몫이며 저장은 [저장]·[확정] 때만이다. 서버가 지형을 다시 뜨는 자리는 **자리가 바뀔 때뿐** — 노선을 옮기거나(0-2) 횡단 반폭을 넓힐 때.
**규칙** — 새 계산은 **TS 에 두는 것을 기본**으로 함. 그러면 브라우저는 그냥 부르고 서버는 Node 로 부른다(한 벌). 파이썬에 두는 것은 파일·DB·래스터를 만져야 하는 계산뿐. 읽기 경로처럼 **매 요청마다 도는 자리**는 Node 왕복이 비싸므로 파이썬·TS 짝(거울 테스트 필수)을 허용함.