크라우니 오피스 시트 punch #7 — 자동 필터
개요
판정표(시트기능-판정표.md) 우선순위 #7 "필터(전무·신규)" 구현. crownyBridge.js §19 몽키패치 연장,
앱 번들(bundle/office/app) 무수정. 헤더 ▼ 드롭다운 자동 필터(값목록/같음/포함/큼/작음/범위),
다중열 AND, 시트별 독립, 표시만 숨김(값 보존), 해제 시 전체 복원.
무엇을 했는지
JS(즉시층): bundle/office/bridge/crownyBridge.js §19 확장
patchedRenderVals: 활성 시트 filters{colIdx0:{mode,...}}를 표시행(order)에 적용 —
itemRows만 조건판정, 헤더/합계/빈행 항상 표시, 여러 열 AND.
self.__visibleItemRows 노출.
filterMatchVal(mode별 판정), uniqueColValues(고유값), commitFilter/clearAllFilters,
openFilterDropdown(값목록 체크박스+조건 입력 UI),
ensureFilterButtons(헤더 배경 #3D2B1F
셀에 ▼ 주입·활성 강조, 멱등 폴링 200ms).
applySheetOp에 filters 열인덱스 remap 추가(행/열 삽입·삭제 추종, 삭제열 필터 소멸).
하니스용 API: window.__crownySheetFilterApply/Clear/ClearAll/UniqueVals.
한선씨 정본: bundle/office/bridge/시트필터.한선 — 조건판정(같음/포함/큼/작음/범위/값목록)·
고유값추출·다중열AND·해제복원. hanseonc_high 컴파일 + crownyc run
19/19 PASS.
실측(CDP :9333, before/after)
- ① 실제 UI: B열 ▼ 클릭 → 드롭다운 → '성장'만 체크 → 적용:
[서버/인프라,마케팅,디자인외주] → [마케팅]. DOM '서버/인프라' 사라짐, '마케팅' 유지.
- ② C열 > 7,000,000 추가(AND) → [] (마케팅 6.5M 탈락). 완화(>5M) → [마케팅]. 활성필터 2개.
- ③ 전체 해제 → [서버/인프라,마케팅,디자인외주] 복원, filters 0, DOM 복원.
- ④ 필터 중 C2=4,200,000 / C3=6,500,000 값 보존. 인건비 시트 filters={} (독립).
회귀
- 문서 27/27 PASS(회귀실행.sh). 시트 #1~#6 스모크: 수식 E2=9,000,000 / C2리터럴·E2수식원문 /
₩통화서식 / 인건비=김민준 독립 / 행삽입 rowCount 7→8 / ArrowDown sel 3→4 — 전부 정상.
- CrownyAI 3초 생존 ✓. 네이티브(crowny-browser.m·crowny-shell.m·Makefile·.app 번들) 무수정.
dist/CrownyAI.app Resources 브릿지·한선 동기화만 수행.
관련 파일
- /Users/ef/crownybrowser/bundle/office/bridge/crownyBridge.js (§19 punch #7)
- /Users/ef/crownybrowser/bundle/office/bridge/시트필터.한선 (정본, 19/19)
- /Users/ef/crownybrowser/spec/시트기능-판정표.md (판정 근거)
잔여 이슈(범위 밖)
- 필터 반영 집계(SUBTOTAL) — 현재 집계는 전체 itemRows 기준(과제 명시 후속).
- 범위선택 붙여넣기·조건부서식 실규칙 등 판정표 우선순위 #8~ 잔존.