# 📅 Agent 회의록: 심층 Wiki 보호 전략 (Deep Dive)

> **일시**: 2026-02-15 21:35
> **참석자**: PM, Backend, Data, QA, Security
> **안건/주제**: Wiki 영역(공용 문서)에 특화된 정밀한 보호 및 백업 전략

---

## 1. 문제 재정의 (Problem Redefinition - PM)
- **사용자 피드백**: "개인 영역 말고 Wiki 영역에 집중해라. 고민의 깊이가 얕다."
- **핵심 위협**:
    1.  **문서 반달리즘 (Vandalism)**: 악의적인 사용자가 유용한 정보를 삭제하거나 엉뚱한 내용으로 덮어씌움.
    2.  **미세한 정보 조작**: 눈에 띄지 않게 수치를 바꾸거나 링크를 변경.
    3.  **대량 훼손**: 스크립트를 이용해 수백 개의 문서를 순식간에 수정/삭제.

## 2. 심층 분석 및 제안 (Deep Dive Proposals)

### A. 문서 버전 관리 (Revision History - Data) - **핵심**
- **기존안의 문제점**: 단순 `isDeleted`는 "삭제"만 막을 뿐, "내용 변조"는 막지 못함.
- **개선안**: **모든 Wiki 문서 수정 시 'Revision' 생성**.
    - `documents/{docId}/revisions/{revId}` 서브 컬렉션 사용.
    - 저장 데이터: `content`, `updatedAt`, `updatedBy`, `diff` (선택적).
    - **스냅샷 정책**:
        - 매 저장시마다 저장? (너무 많음) -> **Debounce 적용** (마지막 수정 후 10분 뒤 저장) 또는 **Session 기반 저장**.
        - 또는 **"중요 변경(Major Change)" 버튼**을 두어 사용자가 명시적으로 버전을 남기도록 유도. (Wiki 스타일)

### B. 편집 속도 제한 (Rate Limiting - Security)
- **위협**: 스크립트를 이용한 대량 수정/삭제 공격.
- **방어**:
    - **사용자별 편집 제한**: 1분에 5회 이상 문서 수정 시 일시 차단.
    - **동일 문서 잦은 수정 제한**: 짧은 시간 내에 내용이 급격하게 바뀌는 경우(예: 내용의 50% 이상 삭제) 경고 및 캡차(Captcha) 요구.

### C. 신뢰도 시스템 (Trust Score - Backend/UX)
- **개념**: 사용자 기여도에 따라 권한 차등 부여.
- **구현**:
    - 신규 가입자(Newbie): 수정 시 **승인 대기(Pending)** 상태로 저장. 관리자나 신뢰 등급 사용자가 승인해야 반영.
    - 신뢰 사용자(Verified): 즉시 반영.

### D. 롤백 UI (Rollback UI - Frontend)
- **기능**: 단순히 "이전 버전 보기"가 아니라, "**이 버전으로 되돌리기**" 기능을 원클릭으로 제공.
- **Diff View**: 현재 내용과 이전 버전의 차이점(Diff)을 시각적으로 보여주어, 무엇이 변경되었는지 쉽게 파악 가능하도록 함.

## 3. 실행 가능한 우선순위 (Actionable Priorities)

1.  **Phase 1 (즉시 적용)**:
    - **Revision History (Subcollection)**: Wiki 문서 수정 시 무조건 이전 내용을 `revisions`에 저장. (가장 확실한 복구 수단)
    - **Soft Delete**: 기존 계획대로 진행하되, Wiki 문서에 한해 적용.

2.  **Phase 2 (고도화)**:
    - **Diff Viewer**: 프론트엔드에서 변경 사항 시각화.
    - **Rate Limiting**: 백엔드 또는 Firestore Rules에서 쓰기 속도 제한.

## 4. 결론 (Conclusion)
단순한 DB 전체 백업(Dump)은 "복구 시점"을 선택하기 어렵고 전체를 되돌려야 하는 부담이 있음.
따라서, **Wiki 문서 단위의 정밀한 "Revision System" (버전 관리)**을 구축하는 것이 사용자가 원하는 "Detail한 논의"의 핵심임.

**결정**: `documents/{id}/revisions` 서브 컬렉션을 도입하여 영구적인 이력 관리를 수행한다.
