← 목록
기타 2026-07-17 3KB 읽기 3분

크라우니 오피스 시트 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~ 잔존.