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

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.tstsconfig.json에서 @mlightcad/dxf-json-converter@mlightcad/libredwg-converter 경로를 해당 스텁 파일로 바인딩(alias)하여 번들링 단계에서 GPL 패키지가 포함되지 않도록 원천 차단하였습니다.
    • 빌드 결과물에 GPL 코드나 워커 파일이 유입되지 않는 것을 확인했습니다.
  • 결과: Pass (GPL 라이선스 리스크 차단)

② 백엔드 ezdxf 프로토타입 API 구현

  • 검증:
    • B07_wf4_DesignDetail_Router.pyezdxf를 사용하여 격자(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 라우팅 재진입 정상 작동 보증)

④ 화면 레이아웃 및 다국어 리소스

  • 검증:
    • createWorkflowLayout 3단 셸 레이아웃 구조를 재사용하며, 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. 미결 과제 (사용자 화면 평가 필요)

  • 현재 코드 및 빌드 수준의 검증은 모두 완료되었으나, 실제 브라우저 화면상의 렌더링 품질과 다음 조작감에 대한 사용자 화면 평가가 필요합니다:
    1. 휠 줌/팬 조작감 및 CAD 스냅 반응성
    2. 한글 문자("종단면도 (PoC)") 폰트 렌더링 정상 여부 (한글 폰트 로딩 확인)
    3. 다른 단계 이동 후 B07 재진입 시 오작동 여부
    4. /api/b07/poc/sample-drawing?stations=2000 파라미터 테스트를 통한 대용량 렌더링 성능 검증