- `docs/` 를 .gitignore 에서 빼 git 추적 대상으로 전환 (위키·완료 이력·검증 기록) - `docs/raw/PLAN.md` · `docs/raw/OWNERS.md` 를 저장소 최상위로 이동 후 .gitignore 에 등록 — 창끼리 공유하되 저장소에는 안 올리는 장부 - 살아 있는 경로 참조 7개 파일 정정 (아카이브 107건은 그때 사실이라 그대로 둠) - graphify 날짜별 산출물(`docs/wiki/graphify-out/20*/`) 제외 — `graphify update` 가 다시 만듦 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4.5 KiB
4.5 KiB
type, status, page_id, related_pages, last_updated, source
| type | status | page_id | related_pages | last_updated | source | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| page-backend | stable | B05_Profile |
|
2026-08-23 |
|
B05_Profile — Backend
B05 경로 설계 백엔드는 FastAPI 라우터, confirm 헬퍼 모듈, aiomysql Repository, Pydantic Schema 및 최적 탐색/시공계획고/단면 생성/배수유역 및 관 매설 연동 엔진 모듈들로 세분화되어 구성됩니다.
일반 구조물 레지스트리·파일 정본·검증·마이그레이션·후속 STALE 연계는 B05_Profile/B05_structures를 기준으로 한다.
📂 소스코드 1:1 세분화 위키 파일 목록
| 소스 파일명 | 위키 명세 문서 | 핵심 역할 |
|---|---|---|
B05_Profile_Router.py |
[[B05_Profile/backend/B05_Profile_Router]] |
FastAPI 엔드포인트 서빙 및 최적경로/선형편집 영속화 |
B05_Profile_Router_Confirm.py |
[[B05_Profile/backend/B05_Profile_Router_Confirm]] |
경로 확정(confirm) 시 비정규 측점 및 종단 병합 오케스트레이션 헬퍼 |
B05_Profile_Repository.py |
[[B05_Profile/backend/B05_Profile_Repository]] |
routes, route_points, route_statistics Raw SQL CRUD |
B05_Profile_Schema.py |
[[B05_Profile/backend/B05_Profile_Schema]] |
Pydantic V2 요청/응답 및 % 경사 정규화 검증 스키마 |
B05_Profile_Engine_Solver.py |
[[B05_Profile/backend/B05_Profile_Engine_Solver]] |
DTM 비용면 캐싱, 경유점 order null 정렬 예외 보정(item.get("order") or 0) 및 최적 경로 Solver |
B05_Profile_Engine_Grade.py |
[[B05_Profile/backend/B05_Profile_Engine_Grade]] |
법정 기준 시공계획고, 종단곡선 15m(default_curve_length_m) 일원화 및 최대가용 L 클램프 엔진 |
B05_Profile_Engine_Sections.py |
[[B05_Profile/backend/B05_Profile_Engine_Sections]] |
종단(longitudinal.json) 및 횡단(cross_*.json) 단면 파일 생성 엔진 |
B05_Profile_Structures_Schema.py |
[[B05_Profile/B05_structures]] |
구조물 타입·인스턴스와 배치형태별 위치 검증 |
B05_Profile_Structures_Repository.py |
[[B05_Profile/B05_structures]] |
structures.json 원자 저장, 판번호·레지스트리 검증 |
B05_Profile_Structures_Migration.py |
[[B05_Profile/B05_structures]] |
구 비정규 구조물의 멱등 변환 모듈 |
B05_Profile_Structures_Router.py |
[[B05_Profile/B05_structures]] |
구조물 타입 조회와 목록 GET/PUT, STALE 요청 |
B05_Profile_Router_Corridor.py |
[[B05_Profile/B05_corridor_surface]] |
코리도 JSON 조회·원자 저장과 용량 제한 |
📋 핵심 백엔드 아키텍처 개요
- 일반 구조물 SSOT(2026-08-16): 배관은 B04 공용
pipe_points.json에 유지하고 B~G 구조물은B05_Profile/route/structures.json에 revision과 함께 저장한다. 미등록 타입·잘못된 배치·옵션·범위는 서버에서 거절한다. - 자동 설계 체인 배수유역·관 재생성 연동:
_prepare_drainage_pipes_and_reprofile()신설을 통해 B05 확정 직후 자동 설계 체인(run_auto_design_chain) 및 이월 체인(run_redesign_chain)에서 배수유역·관 지점을 반영한 종횡단 재추출을 자동 수행. - B04/B05 배수 데이터 일원화: B05 사본 저장소와 복제 연산 로직을 전면 제거하고 B04 공용 API(
B04_PreProcess_Router_Basins.py경유)를 직접 매핑 호출. - 경로 및 모델 확정 시점 통합: B04 "모델 확정", B05 "경로 확정" 시점에 공용 API
PUT /drainage/pipe-points를 호출해 데이터 커밋 저장. - 비정규 측점 및 종단 정본 정합: 관 마커 이동 시 종단 뷰어 및 구조물 폼과 동기화되어
confirm()처리 시longitudinal.json및cross_*.json에 안전 합류. - 모듈 분리 규격 준수: 단일 소스 700줄 제약 만족 (주요 알고리즘은
common_util_drainage_detail.py등 공통 유틸화).