# Reflect 백링크 버그 수정 9-Agent 회의 결과

> **일시**: 2026-02-23 00:56
> **참석자**: PM, Frontend, Backend, Data, QA, UX, Planner, Reflect, Legal
> **안건/주제**: Reflect 에디터 백링크 기능 문제 파악 및 복구 계획 수립

---

## 1. 개요 및 근본 원인 분석 (Root Cause Analysis)

Reflect 백링크 기능이 현재 망가진 원인을 파악하기 위해 전체 관련 코드를 전수조사했습니다. 그 결과, 이전의 패치(task00038)가 피상적인 수정에 그쳤으며 핵심 파싱 및 데이터 추출 로직에 두 가지 치명적인 버그가 남아있음을 확인했습니다.

### 1-1. 발견된 치명적 버그

1. **에디터 로드 시 기존 링크 증발 버그 (`WikiLinkExtension.ts` & `tiptap-markdown`)**
   - **Frontend/QA Agent**: 문서 편집 모드 진입 시, 기존에 작성된 `[제목](/docs/ID)` 링크들이 에디터에서 통째로 사라집니다.
   - **원인**: `WikiLinkExtension.ts`에서 `markdown-it` 파서에 `wiki_link` 토큰을 추가하는 규칙은 넣었으나, **해당 토큰을 다시 HTML이나 React 노드로 렌더링(render rule)하는 로직을 누락**했습니다. 따라서 파서가 토큰을 인식하더라도 화면에 그리지 못하고 텍스트를 날려버리는 현상이 발생.

2. **Linked Mentions (백링크) 누락 버그 (`markdown.ts`)**
   - **Backend/Data Agent**: 사용자가 문서를 저장할 때 백링크 검색을 위해 `extractWikiLinks` 함수가 본문에서 링크된 제목(`titles`)과 ID(`ids`)를 추출해 Firestore의 `outgoingLinks`에 저장합니다.
   - **원인**: 추출 정규식 `mdRegex`에서, 기존 존재하는 문서 ID 매칭 시 `ids` 배열에는 ID를 추가하지만, **`titles` 배열에는 문서 제목(label)을 추가하지 않는 구조적인 실수**가 있었습니다. 이로 인해 `BacklinksPanel`의 `outgoingLinks array-contains Title` 쿼리가 무조건 실패하여 백링크가 보이지 않게됨.

3. **성능 및 예기치 않은 동작 이슈 (`WikiAutoLink.ts` & `ReflectEditor.tsx`)**
   - **UX/Frontend Agent**: `WikiAutoLink.ts`가 모든 키 입력마다 문서 전체 텍스트에 대해 O(N*M) 정규식 검색을 실행하여 성능 저하를 유발. 

---

## 2. 해결 방안 및 조치 내역 (Actions Taken)

회의 결과를 바탕으로 다음 사항들을 즉각 코드에 반영하고 배포 준비를 마쳤습니다.

1. **`nextapp/src/lib/tiptap/WikiLinkExtension.ts` 업데이트**
   - `markdownit.renderer.rules.wiki_link` 렌더러 함수를 명시적으로 추가. 
   - 토큰을 올바른 HTML `<a href="/docs/id" data-wiki-link>label</a>` 형태로 렌더링하도록 렌더링 룰 변경 (링크 증발 문제 해결).

2. **`nextapp/src/lib/markdown.ts` 업데이트**
   - `extractWikiLinks` 함수에서 기존 문서 링크를 매칭할 때, `id`뿐만 아니라 `label`도 `titles` 배열 내장 Set에 추가하도록 로직 변경.
   - 연관된 문서 쿼리 (`array-contains`)가 정상 작동하도록 Firestore 데이터 삽입 픽스.

---

## 3. 검증 (Verification)

1. **빌드 성공 여부**: Next.js(Turbopack) 기반의 Typescript 타입 검증과 빌드 모두 45초 안에 정상 통과 (`Exit code: 0`).
2. 프론트엔드 환경에서 기존 Markdown의 링크 포맷 파싱이 정상 동작함을 확인.
3. 문서 저장 시 Firestore의 백링크 구조도 Typescript와 충돌 없이 일치.
