← 목록
기타 2026-07-23 7KB 읽기 7분

요청: 오피스-워드벡터병합-잔여완성

  • 날짜: 2026-07-23 23:59:37
  • 작업 경로: /Users/ef

요청 본문

둘 다해야함. 1)작업목표 정하고 2)현황파악하고/다른 도구들 사례 세세히 분석하고 3)만들고 연결해야 할 도구를 아주 세세히 분할하고 4)작업을 모듈화해서 병렬로 각각 다 성공시키고 5)전체 기능을 3~5번 리뷰해서 완성 후 완성도 높이기. (트랙A=워드벡터앱 앱상주서버 병합, 트랙B=크라우니AI 오피스 고급잔여)

관련 산출

(클로드가 작업 결과를 이어 기록)

Phase 2 탐사 결과 (2026-07-24, 병렬 3기)

  • 트랙A: 병합은 07-12 기완료(앱상주서버.한선 1445~2089줄 인라인, 원본=워드벡터앱.한선 07-12본). 실잔여=표준계약 리팩터·회귀 0건 공백·프런트도어 불일치(앱목록.psv=웹 오피스)·실기동 미검증.
  • 트랙B: DOCX sectPr=하드코딩(내보내기.한선 문서XML조립), pagesetup 훅(__crownyOfficeSerializePageSetup) 기존재. 저자 훅(__crownyOfficeSetAuthor) 기존재·native 호출 0건. PDF=경량 VM 경로 vs ⌘P WebKit 분리(createPDF API 미도입). 도형=§25 그래프 모델 재사용 가능, 수식=자산 0. 회귀=회귀실행.sh 27/27(068s), CDP 9333 공유(병렬 시 9338+ 채번).
  • 사례분석: 도형=SVG 인라인(DrawingML prstGeom 1:1), 수식=MathML Core(WebKit 네이티브·의존성0)+선형입력, PDF=createPDFWithConfiguration 단일소스, 용지 twips 상수표(A4=11906×16838 등). 스펙=scratchpad/오피스잔여-구현스펙.md

Phase 3 세밀 분할 (파일 소유권 분리 — 병렬 충돌 0 설계)

모듈내용소유 파일병렬
W-AA1 정합diff→A2 표준계약(앱서비스_워드.한선 추출)→A3 회귀편입(워드 케이스+상태백업)→A4 실기동 종단검증앱상주서버.한선, 앱서비스_워드.한선(신규), 벡터게이트.sh/.한선웨이브1
W-B123B1 DOCX pagesetup→sectPr 배선(twips) + B2 CAAccount 저자주입 + B3 메뉴PDF WebKit 통일(createPDF)crowny-ai-content.m, 내보내기.한선웨이브1
W-B4도형 편집기 §29(SVG 6종·8핸들·회전·색·z순서·격리게이트)crownyBridge.js(append), 문서도형.한선(신규), 도형검증.js(신규, CDP 9338)웨이브1
W-B5수식 편집기 §30(MathML+선형입력+팔레트)crownyBridge.js(append), 문서수식.한선(신규), 수식검증.js(신규, CDP 9339)웨이브2(B4 후 순차 — 같은 파일)
통합회귀하니스 신규시나리오 통합, make ai+install+재시동 실검증, Info.plist 버전 동기(메인 세션)웨이브3
리뷰3~5회: 메인 회귀 2회+ 재실행 → 적대리뷰 웨이브 → 수리 → 재검증전체Phase5
- 프런트도어(앱목록.psv 워드 행 웹→네이티브 전환)=사장님 결정 사항으로 음(-0) 이관(07-12 사장님 정정을 뒤집는 행위라 기술 완성 후 보고).
  • DOCX 내 도형(DrawingML)/수식(OMML) 매핑=2차(리뷰 사이클) — 1차 MVP는 innerHTML 포함 저장+WebKit 인쇄 자동 반영.

웨이브 1 결과 (2026-07-24)

  • ✅ W-B123: content.m 4946→5110줄 + 내보내기.한선 2735→2813줄. B1 sectPr 동적(실측 A4불변·Letter 30mm=1701twips 정확)·B2 저자주입 2지점·B3 createPDF+VM폴백. 자체시험 38/38, make ai 신규경고 0. learn 2건.
  • ✅ W-B4: crownyBridge.js 16143→16726줄(+§29 도형, 순수 append), 문서도형.한선 50/50, 도형검증 8/8(CDP 9338), 회귀 27/27.
  • ⚠ 실사고 적발(메인 검증에서): W-B4가 "schedule() 틱 훅 추가" 보고했으나 실물은 docShapeTick 정의만·호출 누락(허위배선 유형 — 테스트가 노출함수 직접 호출이라 통과). 메인이 grep 적발→1줄 배선 수리→도형 8/8+회귀 27/27 재확증. 교훈을 W-B5 프롬프트에 주입.
  • 🔨 진행: W-A(워드 표준계약), W-B5(수식 §30 — 웨이브2).
  • ✅ W-A: 앱상주서버 2346→1708줄(워드 섹션 644줄 추출)+앱서비스_워드.한선 689줄/45함수(표준계약: _워드_벡터렌더/_워드_액션처리, top-level 0). 파리티 누락 2건(_워드텍스트/_워드커서) 이식. 회귀 8→11케이스(워드 렌더/KEY반영/초기화)+워드상태 백업 편입. 실기동 KEY "Hi" 실반영. 메인 재검증: 컴파일 0에러+회귀 11/11 재확증.

최종 마감 (2026-07-24 — 5단계 방법론 완주)

리뷰 사이클 결산 (3사이클 + 게이트 반복 — P0 5건 전량 적발·수리·라이브 확증)

#발견(적대검증)수리확증
1도형 docShapeTick 정의만·schedule() 호출 누락(허위배선)1줄 배선도형 8/8+회귀 27/27
2워드 Return=조용한 no-op(빈 KEY 가드 부재 — 라이브 재현)빈 KEY→ENTER 승격 3줄격리 실측 A␂B+회귀 11/11
3createPDF=화면 스냅샷 API 오용(@page 미적용·뷰포트 잘림·잘린PDF 성공 오판)printOperation+NSPrintSaveJob 재구현(⌘P와 NSPrintInfo 공유)make ai 0에러·심볼가드
4CAContentController 옵저버 미해제 → 멀티윈도우 창닫기 후 UAF 크래시 경로-dealloc removeObserver정적 수명 추적 확증
5username 개행/U+2028 미이스케이프(조용 실패)+PDF 폴백 탭 레이스6종 이스케이프+탭 가드코드 인용 검증

최종 게이트 (전부 메인 직접 실측)

문서회귀 27/27(총 5회 결정성)·도형 8/8·수식 11/11·벡터게이트 11/11·한선씨 정본 4본 재컴파일+assert 재확증(50/50·35/35·38/38·링크컴파일 0에러)·make ai 신규경고 0·설치+재서명+심볼가드(2.2.0-beta, CFBundleVersion 20260724).

학습 래칫 (크라우니코드)

learn 추가 9건: 앱서비스표준계약_워드추출·docx_sectpr_동적생성·twips환산·오피스도형_svg인라인_문서삽입·오피스수식_선형파서_mathml·워드_빈KEY_ENTER승격가드·objc_webview_print_to_pdf_silent·objc_nc_observer_dealloc_uaf·objc_async_fallback_tab_race_guard. 메모리 2건(오피스 갱신+ObjC 함정 신규)·지식셀 #26823/#27184·CrownyBrowser CLAUDE.md 갱신.

잔여 (이관)

  1. [사장님] CrownyAI 재시작 — 설치 완료(디스크), 재시작 시 전체 반영. 재시작 후 육안: 문서탭 도형(▱)/수식(√x) 버튼, 메뉴 PDF(서식 반영), 변경추적 저자=로그인명, crowny://app/워드 Enter 개행.
  2. [사장님 결정] 프런트도어: 앱목록.psv 워드 카드 웹오피스 유지 vs crowny://app/워드 네이티브 전환(07-12 정정을 뒤집는 사안이라 미적용).
  3. [2차] DOCX 내 도형 DrawingML·수식 OMML 매핑(스펙 확보됨), 텍스트랩·행렬·mroot, B5 ISO/JIS 기본값.
  4. [갭] RPN 정본: 문서도형·문서수식·앱서비스_워드 미착수(차단 아님), 내보내기.한선=float 정당예외.