--- type: page-feature status: stable page_id: B05_Profile related_pages: ["[[B05_Profile/B05_structures]]", "[[B05_Profile/backend/B05_Profile_Engine_Sections]]", "[[B06_Section/B06_pavement_revetment]]", "[[storage_paths]]"] last_updated: 2026-08-28 source: ["docs/raw/plans/2026-08-28_plan_B05_구조물측점_단일공급자.md", "docs/raw/verification/2026-08-28_verify_B05_구조물측점_단일공급자.md"] --- # B05 구조물 비정규 측점 공급 종횡단 재생성은 DB의 과거 `extra_stations`가 아니라 관·구조물 파일 정본에서 구조물 측점을 다시 파생한다. 초기화, 최초 생성, B06 반폭 재생성, 재설계가 같은 공급자를 사용한다. ## 공급 경로 | 항목 | 위치 | 역할 | |---|---|---| | `resolve_extra_stations()` | `B05_Profile/B05_Profile_Engine_Sections.py` | 관 정본과 서버 관리 구조물 정본에서 라벨 측점 파생 | | `run_section_generation()` | `B05_Profile/B05_Profile_Engine_Sections.py` | 호출자 옵션을 정본 파생 결과로 치환한 뒤 종횡단 생성 | | `generate_sections()` | `B05_Profile/B05_Profile_Engine_Sections_Core.py` | 격자와 같은 정수 미터 버킷은 격자에 스냅하고 파일명 중복 방지 | | `_is_managed_elsewhere()` | `B05_Profile/B05_Profile_Structures_Migration.py` | 서버 관리 A군 라벨의 레거시 재이관 차단 | | `prune_corridor_files()` | `B05_Profile/B05_Profile_Router_Corridor.py` | 초기화 뒤 유효 노선 외 코리도 저장본 제거 | ## 정본 규칙 | 자원 | 역할 | |---|---| | `pipe_points.json` | 관종·사용자 저장 관경을 포함한 관 측점 정본 | | `structures.json` | `managed_by` 없는 측점 생성 대상 구조물 정본 | | `longitudinal_sections.data.options.extra_stations` | 엔진 산출 기록이며 재생성 입력 공급자로 사용하지 않음 | 물넘이포장은 비정규 측점을 만들지 않고 종단 알약과 구간 포장으로만 표현한다. 노선 지문이 달라진 관 지점은 현 정책대로 제외하며 경고에 제외 건수를 남긴다. ## 검증 2026-08-28 교차검증에서 관련 테스트 45건, 전체 회귀 245 passed·7 skipped, TypeScript와 대상 Ruff 검사를 통과했다.