크라우니 오피스 시트 punch #1(수식엔진) + #2(셀 데이터모델) 브릿지 연결
개요
크라우니 오피스 시트(Sheets) 모듈의 판정표 우선순위 1·2번 — 수식 엔진 연결과 셀 데이터모델
일반화 — 를 문서(Docs) 모듈과 동일한 브릿지 2계층 패턴으로 배선했다. 앱 번들(ModuleSheets,
DCLogic 커스텀 프레임워크)은 무수정, crownyBridge.js가 런타임 몽키패치로 로직을 갈아끼웠다.
배경
spec/시트기능-판정표.md 실측: 앱 시트는 defaults 6개 원시셀(C2:D4)만 편집 가능한 하드코딩
데모였다. fx바 재계산은 진짜였지만 수식 파싱은 parseInt(...replace(/[^0-9]/g,''))로 숫자만
추출 — =SUM(...) 등 문자열 수식은 전혀 파싱되지 않았다. CrownyDoc에 이미 완성된
수식파서.한선(85+함수)·시트엔진.한선(data{key:{value,formula}} 모델)이 있었지만 이 번들에
전혀 연결돼 있지 않았다.
무엇을 했는지
- 셀 데이터모델 일반화 —
window.__dcRegistry.ModuleSheets.Logic.prototype.renderVals를
this.state.vals를
{ref: 리터럴|"="수식} 임의 셀 저장소로 확장(A1:G7, 그리드 열수는 템플릿
grid-template-columns:repeat(7,...) 하드코딩 제약이라 유지).
- 수식 엔진 —
makeEvaluator()가 수식파서.한선 파이프라인(lookup 선처리→범위확장→
- 한선씨 정본 —
bundle/office/bridge/시트셀.한선신규(참조파싱·범위확장·SUM·순환참조감지·
- F열(비중) 표시만 별도 포맷(
Math.round(v*100)+'%')으로 원본 데모 시각 동일성 유지, 진짜
실측 검증 (CDP :9333)
node 기반 CDP 클라이언트로 페이지 새로고침→crownyBridge.js 주입→시트탭 진입→ ModuleSheets.Logic 패치 확인 후:
- 빈 셀 G2에
=SUM(C2:D2)입력 → 9,000,000 (하드코딩 아닌 실계산, DOM diff 확인) - C2를 4,200,000→9,999,999로 변경 → E2(
=C2+D2)·G2(=SUM(C2:D2)) 둘 다 14,799,999로 동시
- 빈 셀 G3에
=C3+D3→ 14,500,000 (산술) - 빈 셀 G5에
=VLOOKUP("마케팅",A2:F4,3)→ 6,500,000 (C3, 보너스 함수 정확 동작) - E4 선택 시 fx바에
=C4+D4원문 echo (펀치#3 최소요건: 클릭→fx바 편집→Enter 커밋 왕복)
회귀실행.sh 27/27 PASS 유지(시트 변경이 ModuleDocs를 건드리지 않음).
네이티브(crowny-browser.m·crowny-shell.m·Makefile·CrownyAI 바이너리) 무수정, CrownyAI 3초
생존 확인.관련 파일
/Users/ef/crownybrowser/bundle/office/bridge/crownyBridge.js— §19 신규 섹션(시트 브릿지)/Users/ef/crownybrowser/bundle/office/bridge/시트셀.한선— 신규, 자체시험 21/21/Users/ef/crownybrowser/spec/시트기능-판정표.md— "【완료】 punch #1+#2" 섹션 추가/Users/ef/crownybrowser/spec/문서-회귀리포트.md— 27/27 최신 리포트- 참조(미수정, 정본):
/Users/ef/CrownyDoc/한선씨/시트/수식파서.한선·시트엔진.한선·
셀서식.한선잔여 이슈 (판정표 우선순위 #3~#10, 이번 punch 범위 밖)
- 다중시트 독립 데이터(현재 "인건비" 탭이 "예산"과 동일 데이터 표시 — 미해결 상속 이슈)
- ₩/%/.00 서식 버튼 실적용, 조건부서식 실규칙 엔진(패널 전환만 진짜)
- 행/열 추가·삭제·크기조절, 다중 범위선택(드래그), 복사/붙여넣기/키보드 내비게이션
- 필터, 다른 열(A/B/D/E/F/G) 정렬, 함수 도우미 클릭 시 fx바 자동 삽입
- cdf 저장/재열기 시 새 셀 데이터모델(
state.vals) 직렬화 왕복은 아직 미배선(Phase 2 저장