# 댓글 선택 화면 검색(필터) — 설계 날짜: 2026-08-04 · 대상: `server/static/auto.js`, `server/static/index.html` (서버 변경 없음) ## 목적 댓글 선택 화면(자동 탭 ID 패널 + 유튜브 구간 탭 댓글 매칭)에서 수백~수천 장 카드 중 원하는 댓글을 텍스트로 찾을 수 있게 한다. ## 동작 (필터 방식) - 각 패널 상단(선택 요약 바 아래, 카드 섹션 위)에 검색창 1개 + 지우기 ✕. - 입력(디바운스 150ms) 시 그 패널의 **모든 카드 섹션**(컷별 ⭐추천 / ➕채우기)이 자기 **전체 목록**에서 일치하는 카드만 다시 그린다 — "더보기"로 안 펼친 카드도 일치하면 나온다. 일치가 많으면 기존처럼 30장 + 더보기. - 일치 기준: 댓글 본문(HTML→평문) + 작성자 이름, 대소문자 무시. 댓글마다 검색용 평문을 1회 만들어 캐시(`c._st`). - 일치 0장 섹션은 헤더째 숨김. 검색어를 지우면 원래 화면 복원. - 선택 로직 불변: 카드는 원래 컷 섹션 소속이므로 클릭하면 그 컷에 들어간다. 선택 링·사용중 배지·"선택한 것만 보기"는 기존 그대로(검색과 AND). ## 캡처 누락 방지 (중요) 빌드/캡처는 `wrapOf()`로 DOM에서 카드를 찾고 **없으면 조용히 건너뛴다** (`buildAll`, `window.ytCC.capture`). 검색 필터로 선택 카드가 DOM에서 빠진 채 빌드하면 카드가 누락되므로: 1. 섹션은 검색 전 렌더 수(`baseShown`)를 기억하고, 검색 해제 시 그만큼 복원한다. (선택은 렌더된 카드에서만 가능 → 복원하면 선택 카드가 항상 DOM에 있음) 2. `buildAll` 시작 시(각 ID)와 `ytCC.capture` 시작 시 해당 패널의 검색을 강제 초기화(`clearSearch(hlId)`)한 뒤 캡처한다. ## 구현 구조 - `SECS = {hlId: [setFilter,…]}` — 패널별 섹션 필터 레지스트리. `searchBar(hlId)`가 패널 생성 때 배열을 초기화하고, `cardSection()`이 자기 `setFilter(q)`를 등록한다(재렌더: grid 비우고 필터된 목록으로 다시 페이징). - `cardSection` 소폭 리팩터: `more.remove()` → `display:none` 토글 (필터 해제 후 다시 필요할 수 있으므로). - CSS: `.ccsearch` 몇 줄 (index.html).