Youngger9765
refactor: reorganize project structure and add new features
e66ee1b
# Backend Scripts
## Reprocess All Documents
重新處理所有已上傳的文檔,使用新的 chunking 參數。
### 使用方式
```bash
# 確保 backend API 正在運行
python backend/scripts/reprocess_all_docs.py
```
### 功能
- 自動獲取資料庫中所有文檔
- 為每個文檔調用 `/api/ingest/reprocess/{doc_id}` endpoint
- 使用新的參數重新切割文本(chunk_size=400, overlap=80)
- 重新生成 embeddings
- 顯示詳細進度和統計數據
### 輸出範例
```
🔄 Reprocessing All Documents with New Chunk Parameters
================================================================================
New chunk_size: 400
New overlap: 80
================================================================================
📋 Fetching document list...
✅ Found 3 documents
[1/3] Processing: 職涯諮詢師初階培訓簡報.pdf (ID: 1)
✅ Success!
Old chunks: 9
New chunks: 28
Embeddings: 28
[2/3] Processing: 職涯諮詢師進階培訓簡報.pdf (ID: 2)
✅ Success!
Old chunks: 4
New chunks: 15
Embeddings: 15
================================================================================
📊 SUMMARY
================================================================================
✅ Successful: 2
❌ Failed: 0
📈 Total old chunks deleted: 13
📈 Total new chunks created: 43
📈 Chunk increase: +30 (+230.8%)
```
### 注意事項
1. **需要 API 運行**: 確保 backend API 在 `http://localhost:8000` 運行
2. **時間較長**: 處理過程需要為每個 chunk 生成 embedding,可能需要數分鐘
3. **OpenAI API**: 會消耗 OpenAI API credits
4. **無法復原**: 舊的 chunks 會被刪除,請確認後再執行
### 疑難排解
如果遇到 pgbouncer 錯誤:
1. 等待幾分鐘讓 Supabase 緩存清除
2. 確認 `.env` 中的 `DATABASE_URL` 正確
3. 重啟 backend API
如果遇到 timeout:
1. 增加 `httpx.AsyncClient(timeout=300.0)` 的 timeout 值
2. 確認網路連接穩定
3. 檢查 OpenAI API key 是否有效