# useWikiMap isDeleted 근본 원인 발견 및 수정 회의 결과

> **일시**: 2026-02-23 12:00  
> **참석자**: PM, Backend, Frontend, QA  
> **안건**: `[[` 자동완성 — 이전 Fix 이후에도 리스트 미표시 계속되는 원인 재분석

---

## 1. 상황 요약

`6910e29`, `5241664` 커밋으로 ReflectEditor.tsx의 stale closure 문제와 3가지 버그를 수정했으나, 사용자 실사용 테스트에서 **여전히 기존 문서가 추천 리스트에 뜨지 않는 현상** 확인.

---

## 2. 진짜 근본 원인 발견

### `useWikiMap.ts` Firestore 쿼리 조건 문제

**`page.tsx` (메인 목록, 정상 동작):**
```js
// Firestore 쿼리에 isDeleted 조건 없음 → 클라이언트에서 필터
if (data.isDeleted) return; // 필드 없으면 falsy → 포함됨
```

**`useWikiMap.ts` (자동완성용, 문제 있음):**
```js
where('isDeleted', '==', false)  // ← Firestore에서 엄격히 비교
// isDeleted 필드가 없으면? → Firestore가 해당 문서를 완전히 제외!
```

**Firestore 동작 특성**: `isDeleted == false` 조건은 **필드 값이 정확히 `false`인 문서만** 반환합니다. `isDeleted` 필드가 **아예 없는 문서** (레거시 문서, 신규 생성 직후 타이밍 등)는 결과에서 완전히 제외됩니다.

"누수플랜" 문서는 isDeleted 필드 처리 방식 차이로 인해 `page.tsx`에서는 보이나 `useWikiMap`에선 조회되지 않았습니다.

---

## 3. 수정 내역

### `nextapp/src/hooks/useWikiMap.ts` 수정

```diff
- where('isDeleted', '==', false),   // Firestore 쿼리 조건 (문제)
  where('visibility', '==', 'public')

- where('isDeleted', '==', false),   // Firestore 쿼리 조건 (문제)
  where('authorId', '==', user.uid)

// 클라이언트 필터링으로 전환
+ if (data.isDeleted === true) return; // 필드 없으면 = 삭제 안 됨, 포함
```

`page.tsx`와 동일한 방식으로 통일.

---

## 4. 검증

- **빌드**: `✓ Compiled successfully in 29.1s` (TypeScript 에러 없음)
- **커밋**: `b869d1f`
- **사용자 실사용 검증**: `[[누수플` 입력 시 "누수플랜" 정상 추천 확인 ✅
