# 중복 문서 생성 버그 수정 결과 (ABC 이슈)

> **일시**: 2026-02-23 01:40
> **참석자**: PM, Frontend, Backend, QA, UX
> **안건/주제**: 기존 제목과 동일한 `[[문서명]]` 타이핑 시 연동되지 않고 새 문서가 중복 생성되는 버그 분석 및 수정

---

## 1. 개요 및 근본 원인 분석 (Root Cause Analysis)

### 발견된 버그 (Truncated Exact Match Logic)
- **현상**: 시스템에 이미 존재하는 위키 문서 제목(예: "ABC")을 사용자가 에디터에 `[[ABC]]` 형태로 완벽하게 똑같이 입력했음에도, 기존 문서(ID 연결)에 연결되지 않고 무조건 새로운 문서(`new-ABC`) 생성을 시도하는 현상이 발생함.
- **원인**:
  - `ReflectEditor.tsx`에서 연관 위키 문서를 찾아올 때, 내부의 Fuzzy 검색 엔진(`Fuse.js`)은 검색 스코어에 따라 결과를 상위 10개(`slice(0, 10)`)로 잘라내서 렌더링 목록(`filtered`)에 노출합니다.
  - 그런데 기존에 존재하는 문서인지 아닌지를 판별하는 `exactMatch` 검증 로직이 **전체 위키 문서가 아닌, 오직 잘려나간 저 10개의 결과 안에서만** 이루어지고 있었습니다. 
  - 따라서 이미 생성된 "ABC" 문서가 검색 정확도나 스코어링 등의 문제로 10등 안에 들지 못하면, 백단 시스템은 이를 "일치하는 문서가 없다"고 착각하여 무조건 `[Create new: "ABC"]` 팝업 항목을 추가해버렸습니다.

---

## 2. 해결 방안 및 조치 내역 (Actions Taken)

1. **`nextapp/src/components/ReflectEditor.tsx` 업데이트**
   - 앞뒤의 쓸데없는 공백을 자르고 소문자로 통일(`normalizedSearchTerm`)하는 과정을 추가했습니다.
   - 이후 "새로 만들기" 항목을 띄워줄지 말지 검증할 때, `exactMatch` 비교 대상을 기존의 10개 목록(`filtered`)에서 벗어나, 현재 클라이언트 측에 존재하고 있는 **모든 문서의 목록(`wikiMap.keys()`) 전체를 순회(O(N))하여 비교 매칭** 하도록 검열 수준을 높였습니다.
   - 100% 동일한 문서 제목이 발견되면 더 이상 `id: new-...`를 부여한 "Create new" 항목을 추가하지 않고 성공적으로 패스합니다.

---

## 3. 검증 (Verification)

1. **빌드 성능 여부**: 프론트엔드 Typescript 정적 검사(`npm run build`) 결과 문제가 없음을 입증 (Exit zero).
2. 에디터에서 대소문자와 띄어쓰기를 무시하고 제목이 완벽하게 일치하면 즉시 기존 문서를 매칭하게 되어, 중복 문서 데이터 낭비를 막는 것을 확인 완료.
