- `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>
6.1 KiB
6.1 KiB
status, page_id, related_pages, last_updated, source
| status | page_id | related_pages | last_updated | source | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| stable | B08_DesignDetail |
|
2026-08-30 |
|
B08_DesignDetail — Backend
도면 관리, 종단 30측점 분할, CAD 수량산출표 및 도면 템플릿 파이프라인
B06(종횡단) 결과물과 CAD 에디터(openwebcad) 간의 도면 데이터 관리, 종단도 30측점 N분할, 선별 레이어 분리, A1 도각 템플릿 병합 및 납품 양식 CAD 테이블 직렬화를 수행합니다.
| 소스 파일 / 엔드포인트 | 위치 | 역할 |
|---|---|---|
GET /api/projects/{project_id}/design-drawings |
B08_DesignDetail_Router.py |
프로젝트 도면 목록 메타데이터 로드 (종단도 30측점 동적 분할 longitudinal_chunks() 연동) |
GET /api/projects/{project_id}/design-drawings/{drawing_id} |
B08_DesignDetail_Router.py |
선택 도면의 CAD 스키마 JSON(포맷 버전 8) 및 Y축/도각 템플릿 병합 결과물 전달 |
PUT /api/projects/{project_id}/design-drawings/{drawing_id}/confirm |
B08_DesignDetail_Router.py |
도면 편집 JSON 및 CAD 수량표 역추출(extract_quantity_table) 데이터 확정 저장 (버전 스탬프 v5, get_db_pool() 동기 호출 예외 정정) |
B08_DesignDetail_Engine_Cad_Long.py |
B08_DesignDetail/ |
종단 CAD 도면 및 하단 납품 측점 테이블(b07-long-table) 조립 엔진, 도각 템플릿 병합 적용 (663줄) |
B08_DesignDetail_Engine_Cad.py |
B08_DesignDetail/ |
횡단 CAD 4개 레이어 분리 및 CAD 수량표 조립 엔진 (693줄, DRAWING_FORMAT = 7 스키마 무효화) |
B08_DesignDetail_Engine_Template.py |
B08_DesignDetail/ |
[신설/도각병합] A1 도각 JSON 템플릿 로드, 콘텐츠 bbox 기준 균등 스케일링/이동 연산, 레이어 잠금(b07-frame) 및 uuid5 결정적 ID 변환 모듈 (123줄) |
dxf_to_openwebcad.py |
resources/dwg_analysis/ |
[신설/템플릿변환] ezdxf 기반 원시 도각 DXF 마스터 파일을 openwebcad JSON 포맷으로 일방향 자동 변환하는 오프라인 파이프라인 스크립트 (341줄) |
/b08-cad 정적 서빙 |
main.py |
B08_DesignDetail/openwebcad/dist 경로의 독립형 2D CAD 컴파일본 서빙 |
토적도·유역도는 B08_DesignDetail/B08_drawing_masshaul_watershed, CAD 명령 구조는 B08_DesignDetail/B08_CAD_commands에서 관리한다.
도각 템플릿 변환 및 종단도 A1 도각 병합 (2026-07-26)
- DXF ➡️ openwebcad JSON 변환: openwebcad 에디터에 호환되는 독자적 기하 JSON 스펙으로 DXF Model Space 원시 객체(Line, Arc, Circle, Text 등)를 1:1 파싱합니다. ACI 7(검은색)을 웹 캔버스 전용
#f5f7fa색상으로 보정하며,uuid5기반 결정적 ID를 생성하여 재변환 시의 Git diff를 차단합니다. - A1 도각 템플릿 병합: 840×594 크기의 A1 프레임 내부 작도영역
_A1_INNER에 종단 콘텐츠 bbox가 5% 여백을 두고 안전하게 중앙 배치되도록 스케일 배율과 이동 변위를 역산하여 오버레이합니다. fontSize와 radius도 스케일비에 비례해 자동 축소/확대 렌더링되며, 템플릿 레이어는b07-frame(잠금 상태)로 강제 잠금 처리됩니다.
종단도 30측점 N분할 및 납품 양식 측점 테이블 (2026-07-25 N-1-1)
- 30측점 N분할 (
longitudinal_chunks): 가로 폭 축척 보정을 위해 종단도를 30측점 단위로 동적 N분할하여종단도 (1/N)메타데이터로 서빙. - 하단 CAD 측점 테이블 (
b07-long-table): 세로쓰기(textDirection: (0,1)) 지반고/계획고/절성토고 값 표기, 구배/곡선 브래킷 및 사선+원 표기 엔티티 직렬화. Y축 눈금/라벨 및b07-long-grid잠금 레이어 연동.
횡단도 4개 선별 레이어 및 CAD 수량산출표 (2026-07-25 N-1-2/N-1-3)
- 4개 레이어 분리:
b07-ground(#f5f7fa,isLocked: true지표선 선택 제외),b07-design(#b794f6, 계획선),b07-structure(#f6d55c, 구조물),b07-rock-boundary(#f59e0b 파선, 암경계선). - CAD 수량산출표 엔티티 (
b07-cross-table): HTML 패널 대신 21개 수량 키셋 기반 3그룹 CAD 테이블 엔티티를 도면 하단에 직렬화하고 더블클릭 편집 및 확정 저장 시extract_quantity_table()역추출 보존 연동.
워크플로우 게이팅 연동
- 횡단도 완료 게이팅: 백엔드
confirm_design_drawing의expected_ids를kind == "cross"인 횡단도만으로 한정하여, 종단도 확정 여부와 관계없이 모든 횡단 도면이 최종 확정되면 단계 완료(B08 이동 허용) 처리. - 도면 변경 시
invalidateAPI를 호출하여 단계를 IN_PROGRESS로 복원하고 다음 단계 게이팅을 차단함.
현재 책임 경계
| 항목 | 현재 구현 | 판정 |
|---|---|---|
| 횡단 절·성토 단면 재계산 | B06 지정값과 계획고로 재계산 후 DB design을 confirmed로 병합 |
B08 구현 책임 |
| CAD 수량표 | 횡단 도면의 quantity_table 생성·역추출·manifest 저장 |
구현됨 |
| 프로젝트 전체 수량 산출 | 공종별 집계·수량 SSOT·보정 이력 | B08에도 완성 구현 없음 |
| B07 연계 | B07은 계산 없이 stage 4 완료 | 향후 책임 경계 결정 필요 |