← 목록
AI 2026-07-17 6KB 읽기 5분

크라우니 오피스 시트 punch #3 — 셀 서식 실적용 (₩/%/.00 + 조건부 서식)

개요

spec/시트기능-판정표.md가 지적한 "없음" 항목 3종(₩ 통화·% ·.00 서식 버튼)과 "데모" 항목 1종(조건부 서식 규칙 적용)을 실동작으로 배선. punch #1(수식엔진)·#2(셀 데이터모델)에 이어지는 시트 punch #3. 앱 번들(index.html, ModuleSheets.dc.html 등) 무수정 — 기존 §19(crownyBridge.js) 몽키패치 방식을 그대로 확장.

배선 방식

  • 템플릿 실측: ModuleSheets 템플릿(data-dc-tpl)을 CDP로 덤프한 결과 ₩ 통화(tpl=6)/
%(tpl=7)/.00(tpl=8) 세 span은 sc-camel-on-click 자체가 없는 완전 정적 텍스트였다 (▦ 조건부 서식 tpl=9만 toggleCond 바인딩 보유). DCLogic 프레임워크 자체 바인딩을 쓸 수 없으므로, 문서 모듈 B/I/U/S 버튼과 동일한 관행 — document.addEventListener('click', ..., true) 델리게이션 + 5단계 상위 textContent 매칭으로 죽은 버튼에 실제 클릭을 건다.
  • 상태 모델: state.format[ref] = {type:'general'|'currency'|'percent'|'number', decimals:N}
값(state.vals)과 완전히 분리된 별도 state로 신설 — fx바 편집이 vals만 건드리므로 값을 고쳐도 서식이 자동 유지된다(과제 요건 "서식 유지").
  • 버튼 동작: ₩/% 는 해당 타입 토글(다시 누르면 general로 복귀). .00 은 소수 자릿수를
2→3→0→1→2... 순환(첫 클릭이 버튼 라벨 그대로 2자리 표시가 되도록 "아직 순환 참여 안 한 셀"과 "순환값 0"을 타입 플래그로 구분).
  • 표시 우선순위: state.format에 명시 서식이 있으면 최우선 적용, 없으면 기존 F열
비중 %(하드코딩) → 일반 콤마 표시로 폴백(punch #1/#2 회귀 없음).
  • 조건부 서식: 우측 RULES 패널에 이미 표시돼 있던 두 규칙(정적 설명 텍스트였던 것)을
그대로 실동작화 — ① E2:E4 값 > 10,000,000 → 배경 주황(#FBEFE7)+굵게+주황 글자, ② F2:F4 비중 min~max 정규화 색상 스케일(#F3F7F3 연초록 → #4C7A4C 진초록). 보너스로 임의 숫자 셀 음수 값 → 빨강 글자 규칙도 추가. 패널 토글 여부와 무관하게 셀에는 항상 적용(패널은 정보 표시용 사이드바일 뿐이라는 일반 스프레드시트 관례).
  • 한선씨 정본: bundle/office/bridge/시트서식.한선 — 콤마삽입/통화포맷/퍼센트포맷/
소수자리표시/조건부배경_초과/색상스케일_비율/음수서식 7개 함수, CrownyDoc 셀서식.한선(CrownyFormat JS 생성기)의 case문·조건부 규칙을 한선씨 정수 스케일 표현으로 이식(원본이 JS를 "생성"하는 프로그램이라 그대로 가져올 수 없어 시트셀.한선과 동일 관행으로 재작성). hanseonc_high 컴파일 + crownyc run 자가검증 16/16 PASS.

실측 결과 (CDP :9333, headless Chrome)

  1. C2(4,200,000) 선택 → ₩ 클릭 → ₩4,200,000 표시. 재클릭 → 4,200,000(토글 off) 확인.
  2. D2(4,800,000) 선택 → % 클릭 → 480000000% (원시값×100%, 엑셀과 동일 관례) 표시.
  3. E2(재계산값 9,000,000) 선택 → .00 1차 클릭 → 9000000.00(2자리), 2차 클릭 →
9000000.000(3자리, 자릿수 순환 확인).
  1. 조건부 서식(before 전부 background-color: rgba(0,0,0,0) 무변화였던 항목) → after:
E3(14,500,000 > 10,000,000) 스타일에 `background: rgb(251,239,231); font-weight: 700; color: rgb(192,91,46) 실제 적용 확인. F열은 F3(비중 최대 50%) rgb(76,122,76)`(진초록), F4(비중 최소 19%) rgb(243,247,243)(연초록)로 정규화 색상 스케일 확인.
  1. 서식 유지: C2를 7,777,777로 편집(fx바) → 여전히 ₩7,777,777로 표시, E2도 소수
3자리(12577777.000) 유지 — 서식이 값 편집/재계산 이후에도 살아있음 확인.

회귀

  • 문서 회귀: 회귀실행.sh 27/27 PASS(시트 변경이 ModuleDocs를 건드리지 않음).
  • 시트 punch #1/#2 회귀: 원본 run_sheet_test2.js 재실행 — SUM/VLOOKUP/재계산 전파/
fx바 echo 전부 이전과 동일 결과로 확인(회귀 없음).
  • CrownyAI 3초 생존: timeout 3 ./CrownyAI exit=124(정상 — timeout이 강제종료했다는
뜻, 자체 크래시 없음). 네이티브 코드는 애초에 무수정.

관련 파일

  • /Users/ef/crownybrowser/bundle/office/bridge/crownyBridge.js §19 확장(포맷 헬퍼·
patchedRenderVals 서식/조건부 로직·₩%.00 클릭 델리게이션, 약 3308~3830줄 구간)
  • /Users/ef/crownybrowser/bundle/office/bridge/시트서식.한선 (신규, 자체시험 16/16)
  • /Users/ef/crownybrowser/spec/시트기능-판정표.md (배경 판정표, 이 punch의 근거)
  • /Users/ef/crownybrowser/spec/문서-회귀리포트.md (27/27 최신 갱신)

잔여(범위 밖)

  • 범위 선택(다중 셀) 기반 서식 일괄 적용 — 현재 단일 선택 셀에만 적용(범위선택 자체가
이 앱에 미구현, 판정표 우선순위 밖 별개 항목).
  • 조건부 서식 "+ 새 규칙" UI(신규 규칙 추가 폼)는 여전히 정적 — 이 punch는 패널에 이미
표시돼 있던 기존 2규칙의 "실적용"까지가 범위.
  • 통화 포맷의 통화기호 다중화(USD/EUR 등, 셀서식.한선엔 case 있으나 버튼 UI 자체가 ₩
하나뿐이라 배선 대상 아님).

크라우니코드

lookup HIT 0건 / MISS 0건 / learn 0건 (셀서식.한선/시트셀.한선 기존 패턴 재사용·이식, 신규 검색 없이 직접 확장)