Files
Aislo/docs/wiki/pages/B08_DesignDetail/B08_backend.md
T
eomsangdonandClaude Opus 5 eb30b774f8 chore(docs): docs 폴더 git 추적 전환 · PLAN·OWNERS 최상위 이관
- `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>
2026-09-09 18:19:07 +09:00

6.1 KiB

status, page_id, related_pages, last_updated, source
status page_id related_pages last_updated source
stable B08_DesignDetail
B08_DesignDetail/B08_frontend
B08_DesignDetail/B08_api
B07_Quantity/B07_backend
db_schema/structure_output
dependencies
architecture/implementation_status
architecture/workflow_data_flow
2026-08-30
docs/raw/verification/2026-07-19_verify_B07_DesignDetail.md
docs/raw/verification/2026-07-20_verify_B07_상세설계개선.md
docs/raw/verification/2026-07-21_verify_B06_ground_section_type_B07_linkage.md
docs/raw/verification/2026-07-21_verify_B06_default_design_B07_gating.md
docs/raw/verification/2026-07-22_verify_B06_B07.md
docs/raw/verification/2026-07-25_verify_b07_design_detail.md
docs/raw/verification/2026-07-26_verify_B07_도면_템플릿_및_도각_적용.md
docs/raw/verification/2026-08-08_verify_server_and_e2e_fixes.md

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_drawingexpected_idskind == "cross"인 횡단도만으로 한정하여, 종단도 확정 여부와 관계없이 모든 횡단 도면이 최종 확정되면 단계 완료(B08 이동 허용) 처리.
  • 도면 변경 시 invalidate API를 호출하여 단계를 IN_PROGRESS로 복원하고 다음 단계 게이팅을 차단함.

현재 책임 경계

항목 현재 구현 판정
횡단 절·성토 단면 재계산 B06 지정값과 계획고로 재계산 후 DB design을 confirmed로 병합 B08 구현 책임
CAD 수량표 횡단 도면의 quantity_table 생성·역추출·manifest 저장 구현됨
프로젝트 전체 수량 산출 공종별 집계·수량 SSOT·보정 이력 B08에도 완성 구현 없음
B07 연계 B07은 계산 없이 stage 4 완료 향후 책임 경계 결정 필요