feat: backup architecture docs, source code, and scripts

This commit is contained in:
Warren
2026-04-25 17:15:45 +08:00
parent 59809dae1f
commit 1f84e5469f
368 changed files with 146329 additions and 261 deletions

View File

@@ -0,0 +1,438 @@
---
document_type: "architecture_design"
service: "MOMENTRY_CORE"
title: "Momentry Core 架構常見問題解答 (FAQ)"
date: "2026-04-25"
version: "V1.0"
status: "active"
owner: "Warren"
created_by: "OpenCode"
tags:
- "momentry"
- "core"
- "架構常見問題解答"
ai_query_hints:
- "查詢 Momentry Core 架構常見問題解答 (FAQ) 的內容"
- "Momentry Core 架構常見問題解答 (FAQ) 的主要目的是什麼?"
- "如何操作或實施 Momentry Core 架構常見問題解答 (FAQ)"
---
# Momentry Core 架構常見問題解答 (FAQ)
## 目錄
1. [設計與實現相關問題](#設計與實現相關問題)
2. [開發與部署相關問題](#開發與部署相關問題)
3. [分片與處理相關問題](#分片與處理相關問題)
4. [數據庫與存儲相關問題](#數據庫與存儲相關問題)
5. [性能與擴展相關問題](#性能與擴展相關問題)
6. [安全與監控相關問題](#安全與監控相關問題)
---
## 設計與實現相關問題
### Q1.1: 為什麼設計文檔與實際代碼實現不一致?
**A**: 這是開發過程中的常見現象。主要原因包括:
1. **設計先行**:架構設計通常在代碼實現之前完成
2. **技術調整**:實際開發中根據技術可行性調整設計
3. **資源限制**:某些功能因資源限制推遲實現
4. **迭代開發**:敏捷開發中的持續改進
**解決方案**
- 以實際 Rust 代碼實現為最高權威
- 定期更新設計文檔反映實際狀態
- 建立設計與實現一致性檢查機制
### Q1.2: 如何理解分片類型的差異?
**A**: 設計文檔與實際代碼的分片類型對照:
| 設計概念 | 設計值 | 實現值 | 狀態 |
|----------|--------|--------|------|
| 句子級分片 | `sentence` | `Sentence` | ✅ 已實現 |
| 視覺物件級分片 | `visual` | 無對應實現 | ❌ 未實現 |
| 場景級分片 | `scene` | `Cut` | ⚠️ 部分實現 |
| 摘要級分片 | `summary` | `Story` | ⚠️ 概念調整 |
| 時間基準分片 | `time` | `TimeBased` | ✅ 已實現 |
| 軌跡追蹤分片 | `trace` | `Trace` | ✅ 已實現 |
### Q1.3: 如何處理設計與實現的衝突?
**A**: 遵循以下原則:
1. **優先級原則**:以實際代碼實現為準
2. **文檔更新原則**:更新設計文檔反映實際實現
3. **版本控制原則**:記錄設計變更歷史
4. **團隊溝通原則**:確保團隊理解實際架構
---
## 開發與部署相關問題
### Q2.1: 如何快速開始開發?
**A**: 建議步驟:
1. **環境設置**
```bash
# 安裝 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 安裝項目依賴
cargo build
```
2. **開發工作流**
```bash
# 構建項目
cargo build
# 運行測試
cargo test
# 格式化代碼
cargo fmt
# 代碼檢查
cargo clippy
```
3. **調試工具**
- 使用 `tracing` 日誌系統
- 設置 `RUST_LOG=debug` 環境變數
- 使用 `cargo test -- --nocapture` 查看測試輸出
### Q2.2: 開發環境和生產環境如何區分?
**A**: 系統支持完全環境隔離:
| 環境 | 二進制名稱 | Redis 網址 | 默認端口 |
|------|------------|------------|----------|
| 生產環境 | `momentry` | `momentry:` | 3002 |
| 開發環境 | `momentry_playground` | `momentry_dev:` | 3003 |
**使用方法**
```bash
# 生產環境
cargo run -- server --host 0.0.0.0 --port 3002
# 開發環境
cargo run --bin momentry_playground -- server
```
### Q2.3: 如何添加新的處理器?
**A**: 標準步驟:
1. **創建處理器模塊**
```rust
// src/core/processor/new_processor.rs
use crate::core::processor::Processor;
pub struct NewProcessor;
impl Processor for NewProcessor {
// 實現處理器 trait
}
```
2. **註冊到處理器註冊表**
```rust
// src/core/processor/mod.rs
mod new_processor;
pub use new_processor::NewProcessor;
// 註冊處理器
registry.register("new_processor", Box::new(NewProcessor::new()));
```
3. **集成到處理管道**
- 配置處理順序
- 設置超時參數
- 定義輸出格式
---
## 分片與處理相關問題
### Q3.1: 分片是如何生成的?
**A**: 分片生成流程:
```
視訊輸入 → 多模態處理 → 分片規則應用 → 分片存儲
↓ ↓ ↓ ↓
ASR 文本提取 Rule1/2/3/4 數據庫存儲
OCR 視覺特徵 → 分片類型 → 向量索引
YOLO 場景檢測 → 檢索優化
CUT
```
**分片規則**
1. **Rule 1 (Sentence)**: 基於 ASR 結果的句子級分片
2. **Rule 2 (Visual)**: 基於 YOLO 的視覺物件分片 (未實現)
3. **Rule 3 (Cut)**: 基於 CUT 算法的場景分片
4. **Rule 4 (Story)**: 基於分片聚合的故事級分片
### Q3.2: 處理管道如何工作?
**A**: 處理管道特點:
1. **統一執行框架**
- 所有 Python 腳本通過 `PythonExecutor` 執行
- 統一的超時控制和錯誤處理
- 標準化的輸出格式
2. **並行處理**
- 支持多個處理器並行執行
- 資源分配和調度優化
- 錯誤隔離和恢復
3. **結果整合**
- 多模態結果融合
- 分片生成和關聯
- 向量嵌入計算
### Q3.3: 如何擴展新的分片類型?
**A**: 擴展步驟:
1. **定義新的分片類型**
```rust
// src/core/chunk/types.rs
pub enum ChunkType {
// 現有類型...
NewType, // 新的分片類型
}
```
2. **創建專用內容結構**
```rust
pub struct NewTypeContent {
pub field1: String,
pub field2: Vec<String>,
// ... 其他字段
}
```
3. **實現分片生成規則**
- 創建新的規則處理器
- 集成到處理管道
- 定義分片內容格式
---
## 數據庫與存儲相關問題
### Q4.1: 為什麼使用多個數據庫?
**A**: 多數據庫架構的優勢:
| 數據庫 | 用途 | 優勢 |
|--------|------|------|
| PostgreSQL | 結構化數據 | ACID 事務,關係型查詢 |
| Redis | 緩存和隊列 | 高性能,低延遲 |
| Qdrant | 向量數據 | 向量相似度搜索ANN 算法 |
| MongoDB | 文檔數據 | 靈活 schema易於擴展 |
**使用場景**
- **PostgreSQL**: 視訊元數據、分片信息、任務管理
- **Redis**: 會話緩存、隊列管理、實時統計
- **Qdrant**: 語義搜索、視覺檢索、推薦系統
- **MongoDB**: 處理結果、日誌數據、配置存儲
### Q4.2: 數據一致性如何保證?
**A**: 數據一致性策略:
1. **事務處理**
- 關鍵操作使用 PostgreSQL 事務
- 確保數據原子性和一致性
2. **冪等性設計**
- 處理器結果冪等性
- 任務執行冪等性
3. **補償機制**
- 失敗操作的補償處理
- 數據一致性修復工具
4. **監控和告警**
- 數據一致性監控
- 異常檢測和自動修復
### Q4.3: 如何優化數據庫性能?
**A**: 性能優化建議:
1. **PostgreSQL**
```sql
-- 創建索引
CREATE INDEX idx_chunks_video_record_id ON chunks(video_record_id);
CREATE INDEX idx_chunks_chunk_type ON chunks(chunk_type);
-- 分區表
CREATE TABLE chunks_2026_04 PARTITION OF chunks
FOR VALUES FROM ('2026-04-01') TO ('2026-05-01');
```
2. **Redis**
- 使用連接池減少連接開銷
- 合理設置過期時間避免內存洩漏
- 使用 pipeline 批量操作
3. **Qdrant**
- 優化向量索引參數
- 定期重建索引
- 使用量化減少存儲空間
---
## 性能與擴展相關問題
### Q5.1: 如何評估系統性能?
**A**: 關鍵性能指標:
1. **處理性能**
- 視訊處理吞吐量 (分鐘/小時)
- 分片生成速度 (分片/秒)
- 向量嵌入計算時間 (毫秒/分片)
2. **檢索性能**
- 查詢響應時間 (毫秒)
- 檢索準確率 (召回率,精確率)
- 並發處理能力 (QPS)
3. **資源利用率**
- CPU 使用率
- 內存佔用
- 磁盤 I/O
**監控工具**
- Prometheus + Grafana 監控面板
- 自定義性能指標收集
- 壓力測試和基準測試
### Q5.2: 如何擴展系統處理能力?
**A**: 擴展策略:
1. **垂直擴展**
- 升級服務器硬件
- 增加 GPU 資源
- 擴展內存和存儲
2. **水平擴展**
- 微服務架構重構
- 負載均衡和集群
- 分布式處理管道
3. **軟件優化**
- 算法優化和並行化
- 緩存策略優化
- 數據庫查詢優化
### Q5.3: 如何處理大規模數據?
**A**: 大規模數據處理策略:
1. **分布式處理**
- 分片級別並行處理
- 任務隊列和工作者模式
- 結果聚合和歸一化
2. **增量處理**
- 流式處理支持
- 增量更新和索引
- 實時數據同步
3. **存儲優化**
- 數據分區和分片
- 壓縮和編碼優化
- 冷熱數據分離
---
## 安全與監控相關問題
### Q6.1: 系統安全如何保證?
**A**: 安全架構:
1. **訪問控制**
- API 密鑰認證
- 角色基於權限控制 (RBAC)
- 請求限流和防刷
2. **數據安全**
- 傳輸加密 (HTTPS)
- 數據存儲加密
- 敏感信息脫敏
3. **審計日誌**
- 操作日誌記錄
- 安全事件監控
- 異常行為檢測
### Q6.2: 如何監控系統狀態?
**A**: 監控體系:
1. **基礎設施監控**
- 服務器資源監控
- 網絡連接狀態
- 存儲空間使用
2. **應用監控**
- 服務健康檢查
- 性能指標收集
- 錯誤日誌分析
3. **業務監控**
- 用戶行為分析
- 業務指標統計
- 系統可用性監控
### Q6.3: 如何進行故障恢復?
**A**: 故障恢復策略:
1. **預防措施**
- 定期備份和快照
- 系統健康檢查
- 容量規劃和預警
2. **故障檢測**
- 自動化監控告警
- 異常檢測算法
- 性能閾值告警
3. **恢復機制**
- 自動化故障轉移
- 數據恢復工具
- 服務重啟策略
---
## 更多資源
### 官方文檔
- [架構概覽](./ARCHITECTURE_OVERVIEW.md) - 系統架構全面介紹
- [設計實現差異](./DESIGN_IMPLEMENTATION_GAP.md) - 設計與實現不一致分析
- [執行計畫](./ARCHITECTURE_DECISION_EXECUTION_PLAN.md) - 架構改進執行方案
### 開發指南
- [快速入門指南](./QUICK_START_GUIDE.md) - 5分鐘快速上手
- [決策卡片](./ARCHITECTURE_DECISION_CARDS.md) - 架構決策記錄
- [技術決策記錄](./TECHNICAL_DECISION_RECORDS.md) - 詳細技術決策
### 參考資料
- [性能與擴展](./PERFORMANCE_AND_SCALABILITY.md) - 性能優化指南
- [安全架構](./SECURITY_ARCHITECTURE.md) - 安全設計詳解
- [監控架構](./MONITORING_ARCHITECTURE.md) - 監控系統設計
---
**最後更新**: 2026-04-22
**文檔版本**: V1.0
**更新頻率**: 每月審查更新
**維護者**: OpenCode