# task-1754.1 완료 보고서

## SCQA

**S**: InsuWiki FloatingTermDetection 컴포넌트의 수동 검색 기능은 Firestore `documents` 컬렉션에서 `searchKeywords` 필드로 용어를 검색하고, 매칭 없으면 "신규 용어로 생성" 옵션을 드롭다운에 표시한다.

**C**: Firestore 보안 규칙이 `isPublic() || isAuthor()` 조건을 요구하지만, 쿼리에 `visibility` 필터가 없어 "Rules are not filters" 원칙에 의해 전체 쿼리가 거부된다. catch 블록에서 `setResults([])` 처리하여 드롭다운이 완전히 사라지고, "신규 용어로 생성" 옵션도 표시되지 않는다.

**Q**: Firestore 권한 에러 발생 시에도 "신규 용어로 생성" 옵션을 사용자에게 제공할 수 있는가?

**A**: catch 블록에서 검색 키워드가 유효하면 "신규 용어로 생성" 옵션을 결과에 추가하고 `setShowDropdown(true)`를 호출하도록 수정하여 해결. Next.js 빌드 성공, git push 완료 (커밋 `8787fc6`).

## 수정 내역

- **파일**: `/home/jay/projects/insuwiki/nextapp/src/components/FloatingTermDetection.tsx`
- **위치**: `handleSearch` 함수 catch 블록 (67-82줄)
- **변경**: `setResults([])` → 키워드가 유효하면 `{isNew: true}` 항목으로 결과 설정 + 드롭다운 표시

## 산출물

- `/home/jay/projects/insuwiki/nextapp/src/components/FloatingTermDetection.tsx`

## 발견 이슈 및 해결

### 자체 해결 (1건)
1. **catch 블록에서 드롭다운 미표시** — `setShowDropdown(true)` 추가하여 해결. try 블록과 동일 패턴 적용.

### 범위 외 미해결 (2건)
1. **Firestore 쿼리에 visibility 필터 미적용** — 범위 외 사유: 지시서에 "#1 수정만으로도 충분, #2는 선택 사항"으로 명시. 레거시 문서 호환성 문제로 별도 판단 필요.
2. **ManualTermInput에 단위 테스트 파일 부재** — 범위 외 사유: 기존 테스트 구조에 없는 항목이며, 본 작업(Lv.1 버그 수정)의 범위 밖.

## 테스트 결과

- Next.js `npm run build`: 성공 (에러 0건)
- 빌드 산출물: 전체 라우트 정상 생성 확인

## 모델 사용 기록

- 브리짓(Brigid) / catch 블록 수정 / sonnet / -

## Git

- 커밋: `8787fc6` — `fix: FloatingTermDetection 검색 실패 시에도 신규 용어 생성 옵션 표시`
- push: `master` 브랜치, origin에 push 완료

## 세션 통계
- 총 도구 호출: 6회

### 수정 파일 목록
- bash_cmd: 3회 (Bash)
- /home/jay/projects/insuwiki/nextapp/src/components/FloatingTermDetection.tsx: 1회 (Edit)
- /home/jay/workspace/memory/reports/task-1754.1.md: 1회 (Write)
- /home/jay/workspace/memory/tasks/task-1754.1.md: 1회 (dispatch)

### 도구 사용 현황
- Bash: 3회
- Edit: 1회
- Write: 1회
- dispatch: 1회

