# Agent 미팅: InsuWiki 협업 검토 시스템 + 신뢰도 UX (v2 재진행)

**날짜**: 2026-04-11
**소집 이유**: task-1633.1 Agent Meeting 규칙 미준수로 재진행. 제이회장님 1인 승인 병목 해소 + 신뢰도 시각화 설계
**참여 페르소나**: 토르(백엔드), 프레이야(프론트), 미미르(UX), 헤임달(보안QA), 로키(레드팀)
**미팅 모드**: hybrid
**토론 깊이**: thorough
**총 사이클 수**: 3

---

## Cycle 1 (Independent Round)

### 헤르메스 분석
현재 시스템 상태 근거:
- `firestore.ts:14` — UserRole에 reviewer 부재
- wiki-statuses.json 파일 기반 → 동시성 불가
- `/api/wiki/entries/{id}/approve` 인증 미구현 (SEC-01 CRITICAL)
- authorityTier 하드코딩 (kakao_expert=3.5)

### 페르소나 의견

**토르(백엔드)**: 서브컬렉션 구조 유지 + reviewSummary 집계 필드. 이벤트 소싱 패턴(리뷰→CF onCreate→상태전이) 권고. compositeReliabilityScore는 별도 컬렉션(documentScores)에 저장하여 무한루프 방지. Strangler Fig 마이그레이션 6주. 복합인덱스 20~30개(200개의 15%). 검토자 적체 3단계 SLA(WARNING/CRITICAL/ESCALATION).

**프레이야(프론트)**: TrustBadge 3중 인코딩(아이콘+색상+텍스트). 4단계 배지(방패체크/원형체크/info/시계). 검토 UI: 6번째 탭(대기열) + 인라인 패널(상세검토) 병행. TrustFilter: 프리셋 2개 + 고급 확장. 미검증 콘텐츠: "부드러운 구분" 전략. 프로그레시브 디스클로저 3레이어.

**미미르(UX)**: 162가지→4단계 압축은 조건부 정당화. 결격조건(knockout) + 가중평균 하이브리드 제안. 가중치 수정안(verification 0.30, sourceRef 0.10). 동적 기본 필터(콘텐츠 밀도 기반). 이중 프레이밍(기여자/독자). 검토 탭 미추가, 독립화면 분리 권고. 근거 유형 필수 + 가중 투표.

**헤임달(보안QA)**: 신규 CRITICAL 10건, HIGH 10건, MEDIUM 1건 식별. 문서 기반 역할 조회 권장(Claims 전파 지연 해결). 3계층 방어 필수. 감사 로그 Cloud Functions only + BigQuery 이중화. Security Rules 상세 설계 제시. 테스트 매트릭스 5역할×12API=60케이스.

**로키(레드팀)**: 14건 합의 각각 공격 벡터 분석. 핵심 발견: 콘텐츠 포이즈닝(승인 후 수정), 검토자 공모, admin 단일장애점. CRITICAL 8건 포함 총 23건 위험 식별. 하위 호환 기간 = SEC-01 지속으로 Big Bang 강력 권고.

### 합의/결론 (Cycle 1 — 15건)
1. SEC-01 즉시 해결 (P0)
2. 3계층 방어 (Rules + Functions + API Routes)
3. 승인 후 수정 → 자동 상태 리셋 (신규)
4. 문서 기반 역할 조회
5. 이벤트 소싱 패턴
6. 감사 로그 CF only, append-only
7. compositeReliabilityScore 서버 전용
8. 자기 검토 금지 Rules 강제
9. 검토자 배정 무작위화
10. TrustBadge 3중 인코딩
11. 프리셋 필터
12. 결격 조건 + 가중 평균 하이브리드
13. 근거 유형 필수 + 출처 첨부
14. 복합 인덱스 20~30개
15. authorityTier 백필: sourceType 기반 자동 매핑

### 미해결 항목 (Cycle 2로)
- 검토 UI 위치 (6번째 탭 vs 독립 화면)
- 기본 필터 전략 (고정 vs 동적)
- 가중치 수정 여부
- 마이그레이션 방식 (Strangler Fig vs Big Bang)

---

## Cycle 2 (Sequential — 쟁점 해결)

### Devil's Advocate: 헤임달

1. **실패 시나리오**: 독립 화면이 검토자에게 인지되지 못해 검토 지연 → Push 알림 병행으로 완화
2. **후회 이유**: 동적 필터의 0건 분기가 죽은 코드화 → 성숙 시 고정 필터 전환 자동 트리거
3. **단순 대안**: 문서 상세 내 인라인 패널만으로 충분할 수 있음 → 대기열 관리 필요하므로 기각

### 비관습적 대안 (미미르): "검토 불필요 아키텍처"
알고리즘+커뮤니티 시그널로 신뢰도 자동 산출. 5~8명 규모에서 자정 작용 부재, 보험 정보 오류의 금전적 피해 → 현 단계 기각, Phase 3 재검토.

### 합의/결론

| 쟁점 | 결정 | 핵심 근거 |
|------|------|----------|
| 검토 UI | **독립 화면 (앱바 아이콘)** + 배지 + Push 알림 | 95% 사용자 UX 보호, 5탭 상한 준수 |
| 기본 필터 | **동적 기본 필터** (0/1~4/5+ 3단계) | 초기 빈 화면 방지 + 장기 신뢰성 |
| 가중치 | **verification 0.30, sourceRef 0.10 강화** | 사후 검증 > 사전 권위. 설정 파일 외부화 |
| 마이그레이션 | **Big Bang + 안전장치 5종** | SEC-01 P0 합의 준수, 5~8명 소규모 |

---

## Cycle 3 (Final Validation + Temporal Interrogation)

### Devil's Advocate: 로키

1. **실패 시나리오**: 리뷰어 고갈(Reviewer Starvation) — 자기검토금지+무작위배정+근거필수+결격조건 결합 시 리뷰 1건당 인지 부담 과다 → 번아웃 → 콘텐츠 적체
2. **후회 이유**: 가중치 직관적 합의(실증 데이터 없음), 4역할 확장성 한계, CF 비용 예측 부재
3. **단순 대안**: diff 기반 경량 수정 자동 승인 유지 (오타/포맷) → **채택**

**반박 및 추가 합의:**
- diff 기반 경량 수정 재검토 면제 → 추가 합의
- 리뷰어 풀 최소 3명 정책 → 추가 합의
- permissions 배열 기반 역할 설계 → 확장성 보완
- 4역할 확장성: 문서 기반 조회로 역할 추가 가능 → 반박 수용

### Temporal Interrogation

**[HOUR 1] 작업 시작:**
- [OPEN] SEC-01: 비활성화 vs 인증 추가 중 택 1
- [OPEN] Firestore 컬렉션 스키마 확정 (reviews 서브컬렉션, auditLog, documentScores)
- [OPEN] 마이그레이션 스크립트 vs 기능 코드 우선 순서
- [OPEN] Firebase 환경 설정 (CF 런타임, 에뮬레이터)
- [OPEN] users 컬렉션 기존 존재 여부 + Custom Claims 병행 여부

**[HOUR 2-3] 핵심 구현:**
- [OPEN] 동시 리뷰 충돌 해결 (Firestore 트랜잭션 범위)
- [OPEN] 이벤트 소싱 이벤트 payload 스키마
- [RESOLVED] 스코어 계산: Cloud Functions onCreate (별도 컬렉션 저장은 OPEN)
- [OPEN] "자기" 판별 기준 (최초작성자 vs 기여자 전원)
- [OPEN] 무작위 배정 풀/최소 인원
- [OPEN] Security Rules get() 호출 10회 제한 대응

**[HOUR 4-5] 후반+통합:**
- [OPEN] 단위 vs 에뮬레이터 테스트 비율
- [OPEN] Security Rules 테스트 커버리지 범위
- [OPEN] TrustBadge 데이터 로딩 (비동기 vs 블로킹)
- [OPEN] Push 알림 구현 범위 (이번 vs 후속)

**[HOUR 6+] 마무리:**
- [OPEN] Big Bang 실행: 코드 배포와 마이그레이션 동시 vs 순차
- [OPEN] Security Rules 배포 전 스테이징 필요 여부
- [OPEN] Phase 1(보안+로직) vs Phase 2(UX) 경계
- [OPEN] 문서화 형식 (코드 내 vs 외부 문서)

---

## 최종 합의 사항 (20건)

**보안 기반 (6건):**
1. SEC-01 즉시 해결 (approve API 비활성화 또는 인증 추가) — P0
2. Big Bang 전환 (wiki-statuses.json → Firestore) + 안전장치 5종
3. 3계층 방어 (Security Rules → Cloud Functions → API Routes)
4. 문서 기반 역할 조회 + permissions 배열 기반 확장 설계
5. 승인 후 수정 → 자동 상태 리셋 (needs_re_review). 단, diff 기반 경량 수정(오타/포맷)은 면제
6. 감사 로그 Cloud Functions only, append-only + Cloud Logging 이중화

**검토 시스템 (8건):**
7. 4역할: admin/reviewer/member/guest (permissions 배열로 확장 가능)
8. 상태 머신: draft→in_review→approved/rejected/revision_requested
9. 이벤트 소싱: 리뷰 생성 → CF onCreate → 상태 전이
10. 자기 검토 금지 (Security Rules 강제, authorId 기반)
11. 검토자 배정 무작위화
12. 근거 유형 필수 선택 + 출처 첨부 (약관/법규/판례 인용 시)
13. 결격 조건(knockout) + 가중 평균 하이브리드 스코어
14. 가중치: verification 0.30, authority 0.20, source 0.15, review 0.15, freshness 0.10, sourceRef 0.10 (설정 파일 외부화)

**UX (4건):**
15. 검토 UI: 독립 화면 (앱바 아이콘 + 배지 + Push 알림)
16. TrustBadge 3중 인코딩 (아이콘+색상+텍스트), 4단계(공식확인/전문가검증/참고정보/검토대기)
17. 동적 기본 필터 (0건→전체+배너, 1~4건→전체+구분, 5건+→검증만)
18. 프로그레시브 디스클로저 3레이어

**운영 (2건):**
19. 리뷰어 풀 최소 3명 정책 + 검토자 적체 3단계 SLA (WARNING/CRITICAL/ESCALATION)
20. authorityTier 백필: sourceType 기반 자동 매핑 (regulation=1, court_ruling=2, policy_pdf=2, newsletter=3, kakao_expert=3, wiki_editorial=4, youtube=5, kakao_community=5, user_submitted=6)

## 미해결 항목
없음 (Temporal Interrogation의 OPEN 항목은 구현 시 해결)

## 구현 우선순위

### Phase 1 (보안+핵심 로직 — 2주)
- SEC-01 즉시 해결 + Big Bang Firestore 마이그레이션
- reviewer 역할 + 문서 기반 역할 조회
- Security Rules + Cloud Functions 상태 머신
- 감사 로그
- authorityTier 백필

### Phase 2 (프론트엔드+UX — 2주)
- TrustBadge 컴포넌트 + computeTrustLevel
- 동적 기본 필터 + URL 동기화
- 검토 UI (독립 화면 + 인라인 패널)
- 미검증 콘텐츠 배너

### Phase 3 (확장 — 4주)
- compositeReliabilityScore 사전 계산 + 프로그레시브 디스클로저
- 검토자 적체 모니터링 Scheduled Function
- Push 알림
- AI 사전 분류 검토 (aiSuggestedGrade)

## 다음 단계
- 합의 사항 → 3문서(계획서/맥락노트/체크리스트) 반영
- Phase 1 서브태스크 분해 및 팀원 할당
