# Agent 미팅: InsuWiki BacklinksPanel visibility 값 혼용 해결

**날짜**: 2026-04-14
**소집 이유**: BacklinksPanel에서 public/shared 혼용으로 Unlinked Mentions 기능 미작동
**참여 페르소나**: 다빈치(천재적사고팀장), 로키(레드팀), 야누스(양면분석), 헤르메스(개발팀장), 비너스(디자인), 아틀라스(코드품질), 프로메테우스(전략)
**미팅 모드**: hybrid
**토론 깊이**: thorough
**총 사이클 수**: 5

---

## 최종 합의 사항

1. **shared 삭제, public으로 통일** — 7명 전원 동의
   - shared를 set하는 코드 0건, Firestore 문서 0건 = 유령 값
   - Unlinked Mentions 버그의 직접 원인

2. **수정 순서** (순서 중요):
   1. Firestore에서 `visibility == "shared"` 문서 존재 확인 (선행 조건)
   2. 코드 3곳 수정: BacklinksPanel, FloatingTermDetection, HubDocuments에서 shared → public
   3. TypeScript visibility 타입 중앙화: `as const` 단일 소스
   4. Firestore Rules에서 isPublic()의 shared 조건 제거
   5. 배포: 코드 먼저 → Rules 나중에

3. **재발 방지**: visibility 값을 `VISIBILITY_VALUES = ['public', 'private'] as const`로 중앙 정의, 쿼리에서 타입 강제

4. **향후 "팀 공유" 기능**: shared enum으로는 부족. 조직/그룹 개념이 필요한 별개 기능. 필요 시 v2에서 제대로 설계. (YAGNI 적용)

## 기각된 대안
- visibility → `accessControl: { level, teamId? }` nested object 전환: v2에서 검토. 현재 과도한 변경.
- boolean `isPublic`으로 단순화: 확장성 부족.

## DA 주요 반론 (로키)
- Rules에서 shared 제거 전 Firestore 실데이터 반드시 확인 (해결: 선행 조건으로 포함)
- Admin SDK로 shared 문서 생성 가능성 (해결: Admin SDK 검증 로직 추가)
