- `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.4 KiB
4.4 KiB
검증 보고서: B07 상세설계 페이지 전면 개편 (openwebcad 기반)
- 검증 일자: 2026-07-19
- 검증 대상: B07 상세설계 단계 (
B07_wf4_DesignDetail) UI 개편 및 백엔드 라우터, 수량 테이블 계산 기능 - 검증자: Antigravity (코드 검증자 역할)
1. 검증 요약
B06 확정 종·횡단 산출물을 CAD 도면으로 렌더링하고, AutoCAD Web 스타일의 간소화된 2D CAD 편집 환경을 제공하기 위한 프론트엔드/백엔드 연동 및 수량 테이블 자동 생성 로직이 설계 명세대로 정상 구현되었음을 확인하였습니다.
2. 세부 검증 내용
2.1. openwebcad UI 개편 및 3단 레이아웃 (작업 1)
- CAD 프레임 구성:
B07_wf4_DesignDetail_UI_Page.ts에서createWorkflowLayout을 재사용하여 시스템의 일관성 있는 3단 레이아웃을 준수하고 있으며, 중앙 영역에/b07-cad/index.html을 iframe으로 정상 임베드하였습니다. - MIT 라이선스 공시: 기존 CAD 영역의 MIT 공시를 제거하고 B07 상세설계 페이지의 우측 하단에 저채도의 작은 폰트로 법적 요구사항을 올바르게 표기하였습니다.
2.2. 데이터 연동 및 도면 단위 표시 (작업 2)
- 메타데이터 캐싱:
GET /api/projects/{project_id}/design-drawings를 통해 진입 시 전체 도면의 일괄 로드를 차단하고 도면 목록(종단도, 측점별 횡단도) 메타데이터만 신속하게 로드합니다. - 단건 로드: 좌측 패널의 도면 목록 클릭 시
GET /api/projects/{project_id}/design-drawings/{drawing_id}API를 호출하여 선택한 단건의 CAD 스키마 JSON 데이터만 CAD 도면 영역에 전달하도록 postMessage 기반으로 안전하게 연동하였습니다.
2.3. 확정 / 완료 / 롤백 플로우 (작업 3)
- 확정 저장: "현재 도면 확정" 버튼 클릭 시, postMessage API(
aislo:b07:save-request)를 통해 CAD 프레임으로부터 편집 상태의 JSON을 받아오고,PUT /api/projects/{project_id}/design-drawings/{drawing_id}/confirmAPI를 호출하여B07_wf4_DesignDetail/drawings/폴더 내에 JSON 형식으로 영구 저장합니다. - 워크플로우 단계 연계:
- 개별 도면 확정 시
manifest.json에 확정 정보를 기록합니다. - 모든 도면이 최종 확정되면
complete_stage(cursor, project_id, 4)를 호출하여 단계를 완료 처리하고 다음 단계(B08) 이동을 허용합니다. - 도면 변경 감지(
aislo:b07:drawing-changed) 시invalidateAPI를 호출하여 단계를 설계 중 단계로 롤백하고 다음 단계 이동을 차단합니다.
- 개별 도면 확정 시
2.4. 횡단면 수량 테이블 자동 계산 및 CAD 렌더링 (작업 4)
- 계산 로직:
B07_wf4_DesignDetail_Router.py의_quantity_rows함수는 B06 산출 횡단면 JSON 데이터로부터 지반고(center_z)와 계획고(planned_elevation_m), 그리고 수량 데이터(quantities)를 읽어와 절토고 및 성토고를 계산합니다. - 예외 처리: B06 최초 생성 데이터에 계획고나 수량 항목이 아직 존재하지 않는 시점에는
None값을 안전하게 처리하여 하이픈(-)으로 기입되도록 방어 코드가 설계되어 있습니다. - CAD 도면 내 삽입:
_quantity_table_entities함수를 통해 수량 테이블의 격자선(Line엔티티)과 텍스트(Text엔티티)를 횡단면 좌표 우측 영역에 자동 계산된 위치(X offset +2.0m)로 생성하여 DXF/PDF 출력물에 온전히 포함되도록 설계하였습니다.
3. 기술적 제약조건 및 규칙 준수 여부
- 700줄 제한:
B07_wf4_DesignDetail_Router.py: 555줄 (준수 완료)B07_wf4_DesignDetail_UI_Page.ts: 314줄 (준수 완료)
- Surgical Edit 및 스타일 일관성: 기존 공통 레이아웃 템플릿과 CSS 명세를 충실히 준수하고 있으며 불필요한 코드 리팩토링이나 외부 변경을 유발하지 않음.
- 금지 항목 미실행:
ruff,prettier,lint등 자동 린팅 도구를 코드 검증 중 직접 구동하지 않음.
4. 최종 의견
B07 상세설계 페이지 개편 및 수량 테이블 자동 생성의 요구사항은 모두 완벽하게 개발 완료되었으며 오작동 가능성이 없는 안전한 코드로 확인되었습니다. 해당 작업을 승인하고 이관 처리를 권장합니다.