4.9 KiB
4.9 KiB
document_type, service, title, date, version, status, owner, created_by, tags, ai_query_hints
| document_type | service | title | date | version | status | owner | created_by | tags | ai_query_hints | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| test_doc | MOMENTRY_CORE | Release 到正式版分析 | 2026-03-31 | V1.0 | active | Warren | OpenCode |
|
|
Release 到正式版分析
| 項目 | 內容 |
|---|---|
| 建立者 | Warren |
| 建立時間 | 2026-03-31 |
| 文檔版本 | V1.0 |
當前狀態摘要
已完成的隔離功能
| 功能 | 狀態 | 說明 |
|---|---|---|
| Redis 隔離 | ✅ 完成 | momentry: vs momentry_dev: prefix |
| MongoDB 隔離 | ✅ 完成 | momentry vs momentry_dev database |
| Qdrant 隔離 | ✅ 完成 | momentry_rule1 vs momentry_dev_rule1 collection |
| PostgreSQL Schema 隔離 | 🔶 部分完成 | schema 會在啟動時創建 tables,但運行時有連接池問題 |
代碼變更清單
| 文件 | 變更 |
|---|---|
.env.development |
新增 DATABASE_SCHEMA=dev, MONGODB_DATABASE=momentry_dev, QDRANT_COLLECTION=momentry_dev_rule1 |
src/core/config.rs |
新增 DATABASE_SCHEMA, MONGODB_DATABASE, QDRANT_COLLECTION 靜態配置 |
src/core/db/postgres_db.rs |
新增 schema 初始化邏輯(after_connect 鉤子) |
src/core/db/mongodb_db.rs |
新增 database 字段,使用配置 |
Release 所需動作
🔴 阻塞問題
1. PostgreSQL Schema 隔離修復
問題: 運行時查詢使用 public schema 而非 dev schema
狀態: 🔶 需要修復
修復方案: 採用「明確 Schema 前綴」方案
- 預估工作量: 3-4 小時
- 影響範圍: ~48 個 SQL 查詢函數
詳細計畫: 參考 docs_v1.0/TESTING/POSTGRESQL_ISOLATION_FIX_PLAN.md
🟡 必要動作(Release 前必須完成)
2. 添加 Production 環境變數到 .env
當前 .env 缺少必要變數:
# 建議添加到 .env
DATABASE_SCHEMA=public # 明確指定 production 使用 public schema
MONGODB_DATABASE=momentry # 明確指定 production 使用 momentry
3. 完整測試覆蓋
| 測試項目 | 狀態 |
|---|---|
| PostgreSQL Schema 隔離 | 🔶 需修復後重新測試 |
| MongoDB Database 隔離 | ✅ 需重新測試 |
| Qdrant Collection 隔離 | ✅ 需重新測試 |
| Redis Prefix 隔離 | ✅ 需重新測試 |
| API 功能正常 | ✅ 需重新測試 |
4. Code Review
cargo clippy --lib通過cargo test --lib通過cargo fmt -- --check通過
🟢 已確認無需動作
| 項目 | 說明 |
|---|---|
| PostgreSQL 資料庫 | 無需變更 - 繼續使用 momentry 資料庫 |
| MongoDB | 無需變更 - 繼續使用 momentry database |
| Qdrant | 無需變更 - 繼續使用 momentry_rule1 collection |
| Redis | 無需變更 - prefix 已正確配置 |
| File System | 無需變更 - output 目錄已正確配置 |
Release 檢查清單
Release 前檢查
| # | 項目 | 狀態 | 負責人 |
|---|---|---|---|
| 1 | PostgreSQL Schema 隔離修復 | 🔶 TODO | Developer |
| 2 | 更新 .env 配置 |
🔶 TODO | DevOps |
| 3 | 執行完整隔離測試 | 🔶 TODO | QA |
| 4 | Code Review (clippy/test/fmt) | ✅ N/A | CI |
| 5 | 更新文件版本 | 🔶 TODO | Docs |
Release 後驗證
| # | 項目 | 狀態 |
|---|---|---|
| 1 | Production Server 啟動正常 | - |
| 2 | Playground Server 啟動正常 | - |
| 3 | 數據寫入正確 schema | - |
| 4 | 兩環境數據完全隔離 | - |
風險評估
Release 風險矩陣
| 風險 | 概率 | 影響 | 等級 | 緩解措施 |
|---|---|---|---|---|
| PostgreSQL Schema 隔離失敗 | 高 | 高 | 🔴 | 修復後再 Release |
| 向量數據混入 | 低 | 高 | 🟡 | Qdrant 已隔離 |
| Redis 數據混入 | 低 | 中 | 🟢 | Prefix 已隔離 |
| API 功能異常 | 低 | 高 | 🟡 | 完整測試覆蓋 |
不建議立即 Release 的原因
-
PostgreSQL Schema 隔離不完全: 這是核心問題
- 可能導致 Playground 測試數據污染 Production 數據
- 違背隔離架構設計目標
-
未經完整測試驗證:
- 現有測試有 44% 失敗率
- 需要修復後重新測試
Release 決策建議
選項 A: 立即 Release(不建議)
條件:
- 忽略 Schema 隔離問題
- 接受測試失敗
風險:
- 數據污染風險
- 違背設計目標
不建議理由:
- Playground 可能污染 Production 數據
選項 B: 修復後 Release(建議)
條件:
- 完成 PostgreSQL Schema 隔離修復
- 通過完整測試驗證
時間:
- 修復: 3-4 小時
- 測試: 1-2 小時
- 總計: ~6 小時
優點:
- 確保數據隔離正確
- 符合設計目標
- 測試通過率 100%
版本資訊
- 版本: V1.0
- 建立日期: 2026-03-31