diff --git a/docs/face_filter_integration_guide.md b/docs/face_filter_integration_guide.md
new file mode 100644
index 0000000..d1d0a32
--- /dev/null
+++ b/docs/face_filter_integration_guide.md
@@ -0,0 +1,543 @@
+# Face Filter Integration Guide for PeopleView
+
+**版本**: v1.0
+**日期**: 2026-08-09
+**狀態**: 可整合
+
+---
+
+## 概述
+
+本指南說明如何將 Face Filter 功能整合到 PeopleView 中。
+
+---
+
+## 已創建的檔案
+
+### 1. Composable
+**位置**: `src/composables/useFaceFilter.ts`
+
+**功能**:
+- 管理臉部過濾狀態
+- 提供三種過濾模式(instant, backend, hybrid)
+- 處理 API 呼叫
+- 儲存使用者偏好到 localStorage
+
+**主要 exports**:
+```typescript
+export function useFaceFilter() {
+ return {
+ mode, // 'instant' | 'backend' | 'hybrid'
+ rules, // QuickFilterRules
+ allFaces, // FaceMetadata[]
+ filteredFaces, // FaceMetadata[]
+ filterResult, // FilterResult | null
+ filterStats, // FilterStats | null
+ loading, // boolean
+ error, // string | null
+ stats, // computed stats
+
+ // Actions
+ initialize,
+ updateRules,
+ setMode,
+ applyBackendFilter,
+ getFaceReportData,
+ refreshStats,
+ resetToDefault,
+ applyLocalFilter
+ };
+}
+```
+
+---
+
+### 2. Components
+
+#### FaceFilterPanel.vue
+**位置**: `src/components/FaceFilterPanel.vue`
+
+**功能**:
+- 過濾面板 UI
+- 模式選擇(instant/backend/hybrid)
+- 過濾規則控制(confidence, bbox_size, source, backend_status)
+- 統計顯示
+
+**Props**:
+```typescript
+{
+ fileUuid: string // 必需的檔案 UUID
+}
+```
+
+**使用範例**:
+```vue
+
+```
+
+---
+
+#### FaceCard.vue
+**位置**: `src/components/FaceCard.vue`
+
+**功能**:
+- 臉部卡片顯示(純文字,無縮圖)
+- 狀態標示(accept/reject/review)
+- 來源徽章(AV/MP)
+- 選擇功能
+
+**Props**:
+```typescript
+{
+ face: FaceMetadata,
+ selected?: boolean,
+ showCheckbox?: boolean
+}
+```
+
+**Events**:
+```typescript
+{
+ click: [face: FaceMetadata],
+ select: [face: FaceMetadata]
+}
+```
+
+**使用範例**:
+```vue
+
+```
+
+---
+
+## 整合步驟
+
+### Step 1: 導入 Composable
+
+在 PeopleView.vue 中導入 useFaceFilter:
+
+```vue
+
+```
+
+---
+
+### Step 2: 添加 FaceFilterPanel 組件
+
+在 toolbar 區域添加 FaceFilterPanel:
+
+```vue
+
+
+
+
+
+```
+
+---
+
+### Step 3: 初始化過濾
+
+當選擇檔案時初始化過濾:
+
+```typescript
+// 在 onFileFilterChange 或 watch(selectedFileUuid) 中
+watch(selectedFileUuid, async (newUuid) => {
+ if (newUuid) {
+ await initialize(newUuid);
+ }
+});
+```
+
+---
+
+### Step 4: 使用過濾後的臉部
+
+使用 `filteredFaces` 替代原始的臉部列表:
+
+```vue
+
+
+
+
+
+
+
+
+
+```
+
+---
+
+### Step 5: 整合到現有 UI
+
+#### 選項 A: 獨立面板(推薦)
+
+FaceFilterPanel 作為獨立面板,放在 toolbar 下方:
+
+```vue
+
+```
+
+#### 選項 B: 整合到現有面板
+
+將過濾控制整合到現有的 Pending Faces 面板:
+
+```vue
+
+```
+
+---
+
+## API 端點
+
+所有 API 呼叫都通過 composable 處理,使用 proxy 到 `http://localhost:8888/api/v1/...`
+
+**實際端點**:
+1. `GET /api/v1/file/{uuid}/faces` - 獲取臉部元數據
+2. `POST /api/v1/file/{uuid}/faces/filter` - 套用後端過濾
+3. `GET /api/v1/file/{uuid}/face/{faceId}/filter-report` - 獲取單臉報告
+4. `GET /api/v1/file/{uuid}/filter-stats` - 獲取統計
+5. `GET/POST /api/v1/file/{uuid}/filter-rules` - 規則 CRUD
+
+---
+
+## 資料結構
+
+### FaceMetadata
+
+```typescript
+interface FaceMetadata {
+ face_id: string;
+ frame: number;
+ primary_source: 'apple_vision' | 'mediapipe';
+ primary_confidence: number;
+ detection_sources: Array<{
+ source_type: string;
+ confidence: number;
+ }>;
+ filter_features: {
+ face_id: string;
+ frame: number;
+ bbox_size: number; // min(width, height)
+ apple_vision_confidence: number;
+ mediapipe_confidence?: number;
+ eye_ratio?: number;
+ nose_ratio?: number;
+ pose_score?: number;
+ mediapipe_detected?: boolean;
+ mediapipe_iou?: number;
+ embedding_similarity?: number;
+ consecutive_frames?: number;
+ total_frames_detected?: number;
+ backend_filter_status?: 'accept' | 'reject' | 'review';
+ };
+}
+```
+
+---
+
+## 過濾模式
+
+### Instant Mode
+- **效能**: 5-10ms
+- **邏輯**: Client 端即時過濾
+- **適用**: 快速調整規則
+
+### Backend Mode
+- **效能**: 100-200ms(API 呼叫)
+- **邏輯**: 後端複雜過濾(landmark, embedding, temporal)
+- **適用**: 高品質過濾
+
+### Hybrid Mode
+- **效能**: 5-10ms(前端)+ 後端預先計算
+- **邏輯**: 後端標示 + 前端即時過濾(AND)
+- **適用**: 最佳使用者體驗
+
+---
+
+## 使用者偏好
+
+偏好儲存在 `localStorage`:
+
+**Key**: `momentry_face_filter_preferences`
+
+**結構**:
+```json
+{
+ "mode": "instant",
+ "rules": {
+ "min_confidence": 0.5,
+ "min_bbox_size": 80,
+ "source": "all",
+ "backend_status": "accept"
+ }
+}
+```
+
+---
+
+## 效能優化
+
+### 分頁
+- `page_size ≤ 50`(防 hang)
+- 虛擬滾動(可選)
+
+### 快取
+- 臉部元數據快取在 composable
+- 偏好儲存在 localStorage
+
+### 懶載入
+- JPG 縮圖懶載入(未來擴展)
+- 當前使用純文字卡片
+
+---
+
+## 錯誤處理
+
+Composable 提供 error 狀態:
+
+```typescript
+if (error.value) {
+ console.error('Face filter error:', error.value);
+ // 顯示錯誤訊息給使用者
+}
+```
+
+---
+
+## 測試
+
+### 單元測試
+```typescript
+import { useFaceFilter } from '../composables/useFaceFilter';
+
+describe('useFaceFilter', () => {
+ it('should filter faces by confidence', () => {
+ const { updateRules, filteredFaces } = useFaceFilter();
+
+ // Setup test data
+ // ...
+
+ updateRules({ min_confidence: 0.7 });
+ expect(filteredFaces.value.length).toBeLessThan(allFaces.value.length);
+ });
+});
+```
+
+### 整合測試
+1. 選擇檔案
+2. 驗證臉部載入
+3. 調整過濾規則
+4. 驗證過濾結果
+5. 切換模式
+6. 驗證模式切換
+
+---
+
+## 未來擴展
+
+### 1. 縮圖支援
+當 Core 實作 `/face/{id}/thumbnail` 端點後:
+
+```vue
+
+```
+
+### 2. 規則管理 UI
+當需要規則 CRUD 時:
+
+```vue
+
+```
+
+### 3. 批量操作
+```typescript
+const selectedFaces = ref([]);
+
+const batchAction = async (action: 'accept' | 'reject') => {
+ await fetch('/api/v1/file/.../faces/batch', {
+ method: 'POST',
+ body: JSON.stringify({
+ face_ids: selectedFaces.value.map(f => f.face_id),
+ action
+ })
+ });
+};
+```
+
+### 4. 匯出功能
+```typescript
+const exportFilteredFaces = () => {
+ const csv = filteredFaces.value.map(face =>
+ `${face.face_id},${face.frame},${face.primary_confidence},${face.filter_features.bbox_size}`
+ ).join('\n');
+
+ // Download CSV
+};
+```
+
+---
+
+## 疑難排解
+
+### 問題 1: 臉部未載入
+**檢查**:
+- `selectedFileUuid` 是否正確
+- API 端點是否可達
+- 網路請求是否成功
+
+**解決**:
+```typescript
+console.log('File UUID:', selectedFileUuid);
+console.log('API Response:', await fetchFaces(selectedFileUuid));
+```
+
+### 問題 2: 過濾未生效
+**檢查**:
+- `mode` 是否正確
+- `rules` 是否正確
+- `filteredFaces` 是否更新
+
+**解決**:
+```typescript
+console.log('Mode:', mode.value);
+console.log('Rules:', rules.value);
+console.log('Filtered:', filteredFaces.value.length);
+```
+
+### 問題 3: 偏好未儲存
+**檢查**:
+- `localStorage` 是否可寫
+- Key 是否正確
+
+**解決**:
+```typescript
+console.log('LocalStorage:', localStorage.getItem('momentry_face_filter_preferences'));
+```
+
+---
+
+## 總結
+
+**整合步驟**:
+1. ✅ 導入 useFaceFilter composable
+2. ✅ 添加 FaceFilterPanel 組件
+3. ✅ 初始化過濾(watch selectedFileUuid)
+4. ✅ 使用 filteredFaces 顯示
+5. ✅ 處理錯誤和載入狀態
+
+**預期效果**:
+- 即時過濾(5-10ms)
+- 三種模式切換
+- 使用者偏好儲存
+- 純文字卡片(無縮圖)
+
+**未來擴展**:
+- 縮圖支援
+- 規則管理 UI
+- 批量操作
+- 匯出功能
+
+---
+
+**文件版本**: v1.0
+**最後更新**: 2026-08-09
+**相關文件**:
+- `/Users/accusys/momentry_core/docs_v1.0/STUDIO_TEAM/face_filter_usage_guide.md`
+- `/Users/accusys/momentry_core/docs_v1.0/STUDIO_TEAM/face_filter_hybrid_mode_guide.md`
diff --git a/src-tauri/src/bin/gen_password.rs b/src-tauri/src/bin/gen_password.rs
deleted file mode 100644
index 323dcd8..0000000
--- a/src-tauri/src/bin/gen_password.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-use argon2::{Algorithm, Argon2, Params, PasswordHasher, Version};
-use argon2::password_hash::{SaltString, rand_core::OsRng};
-
-fn main() {
- let password = std::env::args().nth(1).unwrap_or_else(|| "demo123".to_string());
- let salt = SaltString::generate(&mut OsRng);
- let argon2 = Argon2::new(Algorithm::Argon2id, Version::V0x13, Params::default());
- match argon2.hash_password(password.as_bytes(), &salt) {
- Ok(hash) => println!("{}", hash),
- Err(e) => eprintln!("Error: {}", e),
- }
-}
diff --git a/src-tauri/src/main.rs.bak3 b/src-tauri/src/main.rs.bak3
deleted file mode 100644
index e31e78c..0000000
--- a/src-tauri/src/main.rs.bak3
+++ /dev/null
@@ -1,1177 +0,0 @@
-#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
-
-mod proxy;
-mod db;
-
-use serde::Serialize;
-use base64::{Engine as _, engine::general_purpose::STANDARD};
-use std::sync::Mutex;
-use std::num::NonZeroUsize;
-use lru::LruCache;
-use image::GenericImageView;
-
-static THUMB_CACHE: Mutex