Files
Aislo/docs/wiki/concepts/design_data_lifecycle.md
T

33 lines
1.9 KiB
Markdown

---
type: concept
status: stable
related_pages: ["[[B03_FileInput/B03_backend]]", "[[B05_Profile/B05_backend]]", "[[B06_Section/B06_backend]]", "[[workflow_state]]", "[[multi_environment_safety]]"]
last_updated: 2026-09-10
source: ["docs/raw/verification/2026-09-09f_계획서_공통기반과_참고_이관.md", "docs/raw/verification/2026-09-10_계획서_e_f_g_이관_교차검증.md"]
---
# 설계 데이터 생명주기
## 정본 세 벌
| 구분 | 위치 | 쓰는 시점 |
|---|---|---|
| 초기값 | `initial_snapshot/` 파일과 DB 행 덤프 | 업로드 직후 자동설계 체인이 한 번 생성; 초기화만 읽음 |
| 작업본 | DB와 `route/`·`longitudinal/`·`cross_sections/`·`drainage/` 정본 파일 | 사용자가 저장·확정을 누를 때만 갱신 |
| 브라우저 캐시 | `sessionStorage`, `A00_Common/b_page_state.ts` 등록표 | 화면 조작 중 사용; 저장·확정 때 작업본으로 전달 |
초기값에는 다시 쓰지 않는다. B05·B06 화면은 작업본을 한 번 읽은 뒤 캐시에서 계산하며, 파일·DB·래스터나 3D 코리도처럼 서버 자원이 필요한 계산만 서버를 거친다.
## 계획노선 규칙
- 예상노선은 자동 체인의 불변 원본이고 계획노선은 사용자가 편집하는 복사본이다.
- 노선 확인 때만 계획노선 기준으로 배수유역부터 재설계한다.
- 횡단배수 지점은 새로 계산하고, 그 밖의 구조물은 사용자가 편집한 누가거리 값을 이어받는다.
- 초기화는 예상노선을 계획노선으로 복사하며 재계산하지 않는다.
## 계산 구현 원칙
- 새 계획 계산은 TypeScript 한 벌을 기본으로 두고 브라우저와 서버 Node 진입점이 공유한다.
- 파일·DB·래스터를 직접 다루는 계산만 Python에 둔다.
- Python·TypeScript 거울 구현이 필요한 읽기 경로는 거울 시험으로 값의 일치를 지킨다.