# InsuWiki 백링크 저장 통합 — AI 추천을 [[ 백링크와 동일 메커니즘으로

## Lv.2 작업

## 문제
백링크 저장이 2곳으로 분산:
- `[[ 백링크`: 문서 필드 `outgoingLinks`/`outgoingLinkIds`에 저장
- `AI 추천 체크`: `links` 최상위 컬렉션에 저장

두 방식이 다른 UI에서 표시되고 데이터가 분산됨. 충돌 위험.

## 수정 방향
**AI 추천 체크도 [[ 백링크와 동일한 메커니즘으로 저장.**

### 1. FloatingTermDetection.tsx 수정
현재 `handleApprove()`에서:
```typescript
// 현재 (links 컬렉션에 저장)
await addDoc(collection(db, COLLECTIONS.LINKS), {...});
```

변경:
```typescript
// [[ 백링크와 동일하게 문서 필드에 저장
// outgoingLinks/outgoingLinkIds 에 추가
await updateDoc(doc(db, COLLECTIONS.DOCUMENTS, documentId), {
    outgoingLinks: arrayUnion({targetDocId, targetTitle, ...}),
    outgoingLinkIds: arrayUnion(targetDocId)
});
```

### 2. 정확한 필드 구조 확인
- [[ 백링크가 `outgoingLinks`에 어떤 구조로 저장하는지 확인
- 에디터 코드에서 [[ 처리 로직 찾기
- 동일한 구조로 AI 추천 체크 시에도 저장

### 3. 기존 links 컬렉션 데이터 마이그레이션
- `links` 컬렉션에 있는 기존 AI 추천 연결 → 해당 문서의 `outgoingLinks`로 이동
- 마이그레이션 스크립트 작성 (Firebase Admin SDK)
- 마이그레이션 후 links 컬렉션의 해당 항목 삭제 (또는 deprecated 마킹)

### 4. RelatedDocsSidebar 확인
- 관련 문서 사이드바가 `outgoingLinks` 만 읽는지, `links` 컬렉션도 읽는지
- 통합 후 하나의 소스만 읽도록 정리

## 참조
- FloatingTermDetection: `/home/jay/projects/insuwiki/nextapp/src/components/FloatingTermDetection.tsx`
- RelatedDocsSidebar: `/home/jay/projects/insuwiki/nextapp/src/components/RelatedDocsSidebar.tsx`
- 에디터 [[ 백링크 처리: nextapp/src 에서 `outgoingLinks` 또는 `backlink` 검색
- task-1743.1 보고서: `/home/jay/workspace/memory/reports/task-1743.1.md`
- Firestore 타입: `/home/jay/projects/insuwiki/nextapp/src/types/firestore.ts`

## 테스트
- [[ 백링크로 연결 → outgoingLinks에 저장 확인
- AI 추천 체크 → 동일하게 outgoingLinks에 저장 확인
- Floating 사용자 직접 입력 → 동일하게 outgoingLinks에 저장 확인
- RelatedDocsSidebar에서 3가지 모두 동일하게 표시

## 보고서
`/home/jay/workspace/memory/reports/task-{TASK_ID}.md`
