- `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>
5.9 KiB
5.9 KiB
검증 보고서: B07 WebCAD 도입 Phase 1 PoC
- 작성일: 2026-07-19
- 검증자: Antigravity (QA 역할)
- 대상 기능: B07 WebCAD 도입 Phase 1 PoC 기초 환경 및 뷰어 셸 구성
- 상태: Pass (통과 — 사용자 화면 평가 대기 중)
1. 검증 대상 및 범위
- 백엔드 파일:
- [B07_wf4_DesignDetail_Router.py](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Router.py) (191줄)
- [main.py](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/main.py) (라우터 등록)
- [requirements.txt](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/requirements.txt) (
ezdxf==1.4.4추가)
- 프론트엔드 파일:
- [B07_wf4_DesignDetail_UI_Page.ts](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_Page.ts) (91줄)
- [B07_wf4_DesignDetail_UI_CadViewer.ts](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_CadViewer.ts) (120줄)
- [B07_wf4_DesignDetail_Api_Fetch.ts](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Api_Fetch.ts) (72줄)
- [B07_wf4_DesignDetail_UI_Style.css](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_Style.css) (75줄)
- [config/config_cad_gpl_stub.ts](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/config/config_cad_gpl_stub.ts) (29줄, GPL 차단 스텁)
- [package.json](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/package.json) (의존성 추가)
- [vite.config.ts](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/vite.config.ts) (별칭 추가)
- [tsconfig.json](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/tsconfig.json) (경로 추가)
- [ui_template_locale.ts](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/ui_template/ui_template_locale.ts) (다국어 리소스 추가)
2. 세부 검증 항목 및 결과
① GPL 패키지 의존성 차단 및 라이선스 가드
- 검증:
@mlightcad/cad-simple-viewer는 프레임워크 독립적인 MIT 라이선스 코어이지만, 내부적으로 GPL-3.0 변환 패키지들을 dynamic/static import 시도합니다.- 이를 방지하기 위해
config_cad_gpl_stub.ts스텁을 작성하고,vite.config.ts및tsconfig.json에서@mlightcad/dxf-json-converter및@mlightcad/libredwg-converter경로를 해당 스텁 파일로 바인딩(alias)하여 번들링 단계에서 GPL 패키지가 포함되지 않도록 원천 차단하였습니다. - 빌드 결과물에 GPL 코드나 워커 파일이 유입되지 않는 것을 확인했습니다.
- 결과: Pass (GPL 라이선스 리스크 차단)
② 백엔드 ezdxf 프로토타입 API 구현
- 검증:
B07_wf4_DesignDetail_Router.py는ezdxf를 사용하여 격자(GRID), 지반선(GROUND), 계획선(DESIGN), 중심선(CENTER), 텍스트(LABEL) 엔티티를 생성하고, 이를 뷰어가 바로 이해할 수 있는 기하 JSON 포맷으로 직렬화하여/poc/sample-drawing으로 서빙합니다.- 쓰기/읽기 왕복 검증을 위한
/poc/sample-drawing/dxf다운로드 API도 올바르게 구성되었습니다.
- 결과: Pass (GPL 라이선스를 프론트엔드에서 격리하기 위한 기하 JSON 통신 아키텍처 성립)
③ 프론트엔드 뷰어 싱글톤 부착 및 페이지 재진입 처리
- 검증:
AcApDocManager싱글톤 특성에 따라 페이지 재진입 시 뷰어 홀더 엘리먼트(viewerHolder)를 파괴하지 않고 모듈 수준에 영속 유지하며, 새 마운트 시점에 레이아웃 컨테이너에 다시 추가하는 방식을 채택했습니다.- 도면 JSON 로딩은 최초 1회로 한정하여 불필요한 DB 초기화 및 성능 저하를 방지했으며, 마운트 완료 시
zoomToFitDrawing()으로 줌 상태를 복원하도록 설계되었습니다.
- 결과: Pass (SPA 라우팅 재진입 정상 작동 보증)
④ 화면 레이아웃 및 다국어 리소스
- 검증:
createWorkflowLayout3단 셸 레이아웃 구조를 재사용하며, B06→B07 전달 데이터가 확정되지 않은 현재의 스펙에 맞추어 좌측 사이드 패널은 빈 상태(B07_Cad_Side_Pending메시지 노출)로 유지하였습니다.- 우측 메인 영역에는 CAD 호스트를 마운트하고 비동기 로딩 지연에 대처하는 로딩/에러 상태 UI 처리가 안정적으로 적용되었습니다.
- 결과: Pass (3단 레이아웃 가이드라인 준수)
3. 코드 품질 및 제약 조건 검증
- 700줄 제한: 생성 및 수정된 모든 파일이 700줄 제한을 충족합니다 (라우터: 191줄, 뷰어: 120줄, 페이지: 91줄 등).
- Surgical Edit: 기존 구조인
main.py,package.json,tsconfig.json,vite.config.ts등의 파일들에 대해 수정이 필요한 부분만 정밀하게 변경되었습니다. - 빌드 테스트: 타입체크 및 Vite 빌드 완료를 확인했습니다.
4. 미결 과제 (사용자 화면 평가 필요)
- 현재 코드 및 빌드 수준의 검증은 모두 완료되었으나, 실제 브라우저 화면상의 렌더링 품질과 다음 조작감에 대한 사용자 화면 평가가 필요합니다:
- 휠 줌/팬 조작감 및 CAD 스냅 반응성
- 한글 문자("종단면도 (PoC)") 폰트 렌더링 정상 여부 (한글 폰트 로딩 확인)
- 다른 단계 이동 후 B07 재진입 시 오작동 여부
/api/b07/poc/sample-drawing?stations=2000파라미터 테스트를 통한 대용량 렌더링 성능 검증