Files
Aislo/docs/raw/verification/2026-07-19_verify_b07_independent_cad.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

4.4 KiB

검증 보고서: B07 독립형 2D CAD 전환 (2026-07-19)

  • 검증 일시: 2026-07-19
  • 검증자: Antigravity (검증자 QA 역할)
  • 검증 대상 브랜치: feature/B07-페이지-개발

1. 검증 개요

본 검증은 PLAN.md에 명시된 "B07 독립형 2D CAD 전환" 계획에 따라 코더가 수행한 코드 수정 사항을 정밀 분석하여, 라이선스 리스크 해소, 프로젝트 소스 소유권 확보, 빌드 체인 통합, 정적 서빙 엔드포인트 동작의 실무 정합성을 검증하는 것을 목적으로 합니다.


2. 변경 내역 및 정밀 검증 결과

① 파일 삭제 및 의존성 정리 (Surgical Edit 검증)

  • 삭제 파일:
    • B07_wf4_DesignDetail/B07_wf4_DesignDetail_Api_Fetch.ts
    • B07_wf4_DesignDetail/B07_wf4_DesignDetail_Router.py
    • B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_CadViewer.ts
    • config/config_cad_gpl_stub.ts
    • external_program/cad-viewer, external_program/cad-viewer-example 등 레거시 PoC 폴더 및 실행 스크립트
  • 의존성 제거:
    • package.json, tsconfig.json, vite.config.ts에서 @mlightcad/cad-simple-viewer, @mlightcad/data-model, lodash-es 및 GPL 컨버터 차단용 스텁(config_cad_gpl_stub.ts)이 완벽하게 제거되었습니다.
    • requirements.txt에서 불필요한 백엔드 DXF 파싱 패키지인 ezdxf가 surgically 제거되었습니다.
  • 검증 결과: 합격 (Pass). 불필요한 GPL 의존성과 스텁 코드, 외부 PoC 파일이 남김없이 깔끔하게 정리되어 프로젝트 크기 및 라이선스 복잡도가 줄어들었습니다.

② 정적 서빙 및 라우터 마운트 검증 (main.py)

  • 수정 코드:
    • b07_design_router 임포트 및 라우터 등록 코드가 완전히 제거되었습니다.
    • 기존 /cadviewer 마운트 지점을 /b07-cad로 변경하고, 마운트 대상 디렉토리를 B07_wf4_DesignDetail/openwebcad/dist로 설정하였습니다.
  • 검증 결과: 합격 (Pass). CAD 작업 도면은 백엔드에서 DXF/DWG를 직접 가공하지 않고 JSON 도면 모델로 전달하므로 백엔드 라우터 제거가 정합하며, 정적 서빙 엔드포인트가 독립화된 패키지의 빌드 경로(openwebcad/dist)로 올바르게 재매핑되었습니다.

③ 프론트엔드 임베드 검증 (B07_wf4_DesignDetail_UI_Page.ts / UI_Style.css)

  • 수정 코드:
    • B07_CAD_APP_URL을 /b07-cad/index.html로 정의하여 iframe의 src로 임베딩합니다.
    • UI 스타일 시트에서 PoC 당시에 사용되던 canvas 관련 스타일과 로딩 상태 요소 스타일이 제거되고 iframe 100% 배치 스타일만 surgically 유지되었습니다.
  • 검증 결과: 합격 (Pass). 외부 임베드 의존성 없이 프로젝트 내부로 흡수된 openwebcad 앱을 단독 iframe으로 깔끔하게 연동하였으며, UI 스타일이 3단 레이아웃 제약을 정확히 준수합니다.

④ 빌드 파이프라인 통합 검증 (package.json)

  • 수정 코드:
    • "build": "... && npm run build:b07-cad"
    • "build:b07-cad": "npm --prefix B07_wf4_DesignDetail/openwebcad run build"
  • 검증 결과: 합격 (Pass). 최상위 npm run build 수행 시 B07_wf4_DesignDetail/openwebcad 하위의 독립 2D CAD 소스도 빌드되도록 체이닝되어 배포 빌드 일관성을 보장합니다. 수동 빌드 검증을 통해 tsc -b && vite build가 오류 없이 dist/ 빌드본을 산출하는 것을 확인하였습니다.

⑤ 라이선스 보존 및 중첩 .git 제거 검증

  • 검증 결과: 합격 (Pass).
    • B07_wf4_DesignDetail/openwebcad/LICENSE.md에 Bert Verhelst의 MIT 라이선스 전문이 완전하게 보존되어 배포 라이선스 고지 의무를 준수합니다.
    • 하위 디렉토리의 .git이 성공적으로 제거되어 submodule 충돌 없이 단일 프로젝트 저장소의 코드로 귀속되었습니다.

3. 종합 의견

본 작업은 PLAN.md에 수립되었던 B07 독립형 2D CAD 전환 목표를 완벽하고 surgically 달성하였습니다. GPL 라이선스 위험 요소를 내포했던 외부 라이브러리 및 스텁을 배제하고, 독자적인 MIT 라이선스의 openwebcad로 전환하여 보안성 및 법적 안전성을 크게 향상시켰습니다. 백엔드 정적 마운트 매핑과 프론트엔드 빌드 파이프라인 통합이 올바르게 구성되어 검증을 승인(Approved)합니다.