260715_0
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
---
|
||||
type: page-api
|
||||
status: stable
|
||||
page_id: B06_wf3_ProfileCross
|
||||
related_pages: ["[[B06_wf3_ProfileCross/B06_frontend]]", "[[B06_wf3_ProfileCross/B06_backend]]", "[[B06_wf3_ProfileCross/B06_db]]"]
|
||||
last_updated: 2026-07-12
|
||||
source: 상위 프로젝트 B06_wf3_ProfileCross_Router.py 실 코드 직접 확인 (2026-07-12)
|
||||
---
|
||||
|
||||
# B06_wf3_ProfileCross — API
|
||||
|
||||
기본 prefix: `/api/projects` (`B06_wf3_ProfileCross_Router.py:33`). 공통 세션·오류 형식은 [[../../concepts/auth_rbac]], [[../../concepts/api_common]]을 참조한다.
|
||||
|
||||
| 항목 | 위치 | 역할 |
|
||||
|---|---|---|
|
||||
| `POST /{project_id}/sections/generate` | `B06_wf3_ProfileCross_Router.py:48` | 확정 경로 기반 종단·횡단 생성 및 DB 저장 |
|
||||
| `GET /{project_id}/sections/{route_id}` | `B06_wf3_ProfileCross_Router.py:151` | 종횡단 결과 요약 조회 |
|
||||
| `POST /{project_id}/sections/{route_id}/confirm` | `B06_wf3_ProfileCross_Router.py:169` | 해당 route의 종횡단 결과 확정 |
|
||||
|
||||
## 생성 응답
|
||||
| 항목 | 역할 |
|
||||
|---|---|
|
||||
| `longitudinal_id` | 종단면 레코드 ID |
|
||||
| `cross_section_count` | 생성된 횡단면 수 |
|
||||
| `length_m` | 대상 경로 총연장 |
|
||||
| `longitudinal_file_path` | 종단면 산출 파일 상대경로 |
|
||||
|
||||
오류는 표준 `{"status":"error","message":...}` 형식으로 반환한다.
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
type: page-backend
|
||||
status: stable
|
||||
page_id: B06_wf3_ProfileCross
|
||||
related_pages: ["[[B06_wf3_ProfileCross/B06_frontend]]", "[[B06_wf3_ProfileCross/B06_api]]", "[[B06_wf3_ProfileCross/B06_db]]", "[[B06_wf3_ProfileCross/B06_dependencies]]"]
|
||||
last_updated: 2026-07-12
|
||||
source: 상위 프로젝트 B06_wf3_ProfileCross 실 코드 직접 확인 (2026-07-12)
|
||||
---
|
||||
|
||||
# B06_wf3_ProfileCross — Backend
|
||||
|
||||
## 요청·응답 모델
|
||||
| 항목 | 위치 | 역할 |
|
||||
|---|---|---|
|
||||
| `SectionGenerateRequest` | `B06_wf3_ProfileCross_Schema.py:8` | route·지표면·측점·횡단 옵션 검증 |
|
||||
| `SectionGenerateResponse` | `B06_wf3_ProfileCross_Schema.py:26` | 종단 ID·횡단 개수·총연장·파일경로 응답 |
|
||||
| `SectionConfirmResponse` | `B06_wf3_ProfileCross_Schema.py:38` | 확정 route와 confirmed 상태 응답 |
|
||||
| `SectionSummaryResponse` | `B06_wf3_ProfileCross_Schema.py:47` | 종단·횡단 결과 요약 응답 |
|
||||
|
||||
## 생성 엔진
|
||||
| 항목 | 위치 | 역할 |
|
||||
|---|---|---|
|
||||
| `run_section_generation()` | `B06_wf3_ProfileCross_Engine.py:50` | B05 경로 로드·표고 sampler·종횡단 생성 오케스트레이션 |
|
||||
| `build_surface_sampler()` | `B06_wf3_ProfileCross_Engine_Sampler.py:126` | DTM·보간 방식 표고 sampler 선택 |
|
||||
| `DtmGridSampler` | `B06_wf3_ProfileCross_Engine_Sampler.py:26` | DTM 격자 기반 표고 조회 |
|
||||
| `InterpolatedSurfaceSampler` | `B06_wf3_ProfileCross_Engine_Sampler.py:109` | 표면 보간 기반 표고 조회 |
|
||||
| `generate_sections()` | `B06_wf3_ProfileCross_Engine_Section.py:116` | 측점·종단·횡단 샘플 생성 |
|
||||
| `_chainages()` | `B06_wf3_ProfileCross_Engine_Section.py:77` | 측점 간격과 종점 포함 여부로 chainage 생성 |
|
||||
| `_interpolate_xy()` / `_tangent_at()` | `B06_wf3_ProfileCross_Engine_Section.py:86,95` | 경로 좌표 보간·접선 방향 계산 |
|
||||
|
||||
## 라우터·workflow
|
||||
| 항목 | 위치 | 역할 |
|
||||
|---|---|---|
|
||||
| `generate_sections()` | `B06_wf3_ProfileCross_Router.py:49` | 확정 경로 검증·생성·DB 저장·stage 3 완료 |
|
||||
| `get_sections()` | `B06_wf3_ProfileCross_Router.py:152` | route 종횡단 요약 조회 |
|
||||
| `confirm_sections()` | `B06_wf3_ProfileCross_Router.py:170` | 결과 확정·stage 3 완료 |
|
||||
| `start_stage()` / `complete_stage()` / `fail_stage()` | `B06_wf3_ProfileCross_Router.py:68,111,127,132,137,143,187` | WF3 상태 전이 → [[../../concepts/workflow_state]] |
|
||||
|
||||
## 재실행
|
||||
| 항목 | 위치 | 역할 |
|
||||
|---|---|---|
|
||||
| `delete_sections_for_route()` | `B06_wf3_ProfileCross_Repository.py:27` | 동일 route 기존 결과 삭제 후 재생성 |
|
||||
| `_validate_stage_path()` | `B06_wf3_ProfileCross_Repository.py:18` | WF3 저장경로 이탈 방지 |
|
||||
@@ -0,0 +1,35 @@
|
||||
---
|
||||
type: page-db
|
||||
status: stable
|
||||
page_id: B06_wf3_ProfileCross
|
||||
related_pages: ["[[B06_wf3_ProfileCross/B06_backend]]", "[[B06_wf3_ProfileCross/B06_api]]"]
|
||||
last_updated: 2026-07-12
|
||||
source: 상위 프로젝트 B06_wf3_ProfileCross_Repository.py 실 코드 직접 확인 (2026-07-12)
|
||||
---
|
||||
|
||||
# B06_wf3_ProfileCross — DB 사용 관계
|
||||
|
||||
테이블 정의는 [[db_schema/route_profile]]에서 1차 관리한다.
|
||||
|
||||
| 항목 | 위치 | 역할 |
|
||||
|---|---|---|
|
||||
| `longitudinal_sections` | `B06_wf3_ProfileCross_Repository.py:34` | route별 종단 chainage·표고·경사·설계값 저장 |
|
||||
| `cross_sections` | `B06_wf3_ProfileCross_Repository.py:67` | 측점별 좌우 표고·폭·절성토 데이터 저장 |
|
||||
|
||||
## Repository 함수
|
||||
| 항목 | 위치 | 역할 |
|
||||
|---|---|---|
|
||||
| `_validate_stage_path()` | `B06_wf3_ProfileCross_Repository.py:18` | WF3 상대경로 이탈 방지 |
|
||||
| `delete_sections_for_route()` | `B06_wf3_ProfileCross_Repository.py:27` | 재생성 전 기존 종횡단 삭제 |
|
||||
| `create_longitudinal_section()` | `B06_wf3_ProfileCross_Repository.py:34` | 종단면 레코드 생성 |
|
||||
| `insert_cross_sections()` | `B06_wf3_ProfileCross_Repository.py:67` | 횡단면 일괄 저장 |
|
||||
| `get_longitudinal_section()` | `B06_wf3_ProfileCross_Repository.py:109` | 종단·횡단 결과 조회 |
|
||||
| `confirm_sections_for_route()` | `B06_wf3_ProfileCross_Repository.py:135` | route 종횡단 상태 확정 |
|
||||
|
||||
## 파일 경로
|
||||
| 항목 | 역할 |
|
||||
|---|---|
|
||||
| `longitudinal_file_path` | `B06_wf3_ProfileCross/longitudinal/` 산출물 상대경로 |
|
||||
| `cross_section_file_path` | `B06_wf3_ProfileCross/cross_sections/` 산출물 상대경로 |
|
||||
|
||||
상세 저장 규칙: [[storage_paths]].
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
type: page-dependencies
|
||||
status: stable
|
||||
page_id: B06_wf3_ProfileCross
|
||||
related_pages: ["[[B06_wf3_ProfileCross/B06_frontend]]", "[[B06_wf3_ProfileCross/B06_backend]]"]
|
||||
last_updated: 2026-07-12
|
||||
source: 상위 프로젝트 B06_wf3_ProfileCross import 구문·엔진 직접 확인 (2026-07-12)
|
||||
---
|
||||
|
||||
# B06_wf3_ProfileCross — Dependencies
|
||||
|
||||
공유 의존성 정의는 [[../../concepts/dependencies]]에 둔다.
|
||||
|
||||
| 항목 | 위치 | 역할 |
|
||||
|---|---|---|
|
||||
| NumPy | `B06_wf3_ProfileCross_Engine_Section.py:1` | 경로·chainage·단면 샘플 배열 계산 |
|
||||
| SciPy | `B06_wf3_ProfileCross_Engine_Sampler.py:1` | 표면 보간 sampler |
|
||||
| aiomysql | `B06_wf3_ProfileCross_Repository.py:1` | 종횡단 Raw SQL 저장·조회 |
|
||||
| Pydantic | `B06_wf3_ProfileCross_Schema.py:5` | 생성·조회·확정 요청 검증 |
|
||||
| FastAPI | `B06_wf3_ProfileCross_Router.py:1` | sections API 라우터 |
|
||||
|
||||
## 공통 모듈
|
||||
| 항목 | 위치 | 역할 |
|
||||
|---|---|---|
|
||||
| `common_util_workflow_state` | `B06_wf3_ProfileCross_Router.py:29` | stage 3 상태 전이 → [[../../concepts/workflow_state]] |
|
||||
| `common_util_storage` | `B06_wf3_ProfileCross_Engine.py:1` | 프로젝트 상대경로 해석 → [[../../concepts/storage_paths]] |
|
||||
| `ui_template_workflow_layout` | `B06_wf3_ProfileCross_UI_Page.ts:23` | 공통 workflow 화면 구성 |
|
||||
@@ -0,0 +1,40 @@
|
||||
---
|
||||
type: page-frontend
|
||||
status: stable
|
||||
page_id: B06_wf3_ProfileCross
|
||||
related_pages: ["[[B06_wf3_ProfileCross/B06_backend]]", "[[B06_wf3_ProfileCross/B06_api]]", "[[B06_wf3_ProfileCross/B06_db]]"]
|
||||
last_updated: 2026-07-12
|
||||
source: 상위 프로젝트 B06_wf3_ProfileCross 실 코드 직접 확인 (2026-07-12)
|
||||
---
|
||||
|
||||
# B06_wf3_ProfileCross — Frontend
|
||||
|
||||
## 화면·workflow
|
||||
| 항목 | 위치 | 역할 |
|
||||
|---|---|---|
|
||||
| `renderB06ProfileCross()` | `B06_wf3_ProfileCross_UI_Page.ts:57` | 측점·횡단 옵션·결과 메트릭 화면 렌더링 |
|
||||
| 종횡단 생성 실행 | `B06_wf3_ProfileCross_UI_Page.ts:201` | 입력 옵션을 `generateSections()`로 전송 |
|
||||
| 종횡단 확정 | `B06_wf3_ProfileCross_UI_Page.ts:233` | route별 종횡단을 `confirmSections()`로 확정 |
|
||||
| workflow 상태 조회 | `B06_wf3_ProfileCross_UI_Page.ts:259` | 단계 상태와 진입 가능 단계 조회 |
|
||||
| workflow layout 구성 | `B06_wf3_ProfileCross_UI_Page.ts:271` | 공통 단계·경로·상태 표시 |
|
||||
|
||||
## API 클라이언트
|
||||
| 항목 | 위치 | 역할 |
|
||||
|---|---|---|
|
||||
| `generateSections()` | `B06_wf3_ProfileCross_Api_Fetch.ts:82` | 종단면·횡단면 생성 요청 |
|
||||
| `getSections()` | `B06_wf3_ProfileCross_Api_Fetch.ts:93` | route별 결과 요약 조회 |
|
||||
| `confirmSections()` | `B06_wf3_ProfileCross_Api_Fetch.ts:103` | 생성 결과 확정 요청 |
|
||||
| `SectionGenerateRequest` | `B06_wf3_ProfileCross_Api_Fetch.ts:18` | 측점·폭·샘플 간격 입력 타입 |
|
||||
| `SectionGenerateResponse` | `B06_wf3_ProfileCross_Api_Fetch.ts:31` | 종단 ID·횡단 개수·길이·파일경로 타입 |
|
||||
|
||||
## 입력 옵션
|
||||
| 항목 | 역할 |
|
||||
|---|---|
|
||||
| `route_id` | 확정된 B05 경로 선택 |
|
||||
| `filter_key`, `method`, `smooth`, `crs` | 지표면 필터·표현·평활화·좌표계 |
|
||||
| `station_interval_m` | 종단 측점 간격 |
|
||||
| `cross_half_width_m` | 횡단 좌우 반폭 |
|
||||
| `cross_sample_interval_m` | 횡단 표고 샘플 간격 |
|
||||
| `long_sample_interval_m` | 종단 표고 샘플 간격 |
|
||||
|
||||
현재 코드에는 종단도·횡단 프로필을 WebCAD로 렌더링하는 전용 뷰어가 없다.
|
||||
Reference in New Issue
Block a user