Files
momentry_core/deliverable_v1.1.0/SYSTEM_AUDIT_2026-05-17.md

3.1 KiB
Raw Blame History

System Audit — 2026-05-17

Current State

Embedding Storage (三重冗余,無主)

資料類型 PG pgvector Qdrant JSON 檔案
Sentence 向量 chunk.embedding dev_v1 / rule1_v2 / sentence_*
Story 向量 chunk.embedding dev_v1 / dev_stories .story_llm.json
Face 向量 已清除(依使用者指示) dev_faces (97K) .face.json
Voice 向量 dev_voice (4K)

Pipeline 問題

問題 影響
processor_results.duration_secs 全為 0 無法查各步驟耗時
processor_results.started_at/completed_at 全 NULL 時間線遺失
Redis timing 在 job 完成後被清掉 唯一 timing 來源消失
get_chunk_by_chunk_id_and_uuid 原本是 stub已修 Smart search 找不到 PG chunk
server.rs::search() 未 mount 但仍編譯 Dead code混淆 Qdrant 用途
Face embedding 只寫 Qdrant 不寫 PG 已刪除則全失

Qdrant Collections 現況

Collection Points 來源 UUID
dev_v1 9,936 PG rebuild bd80fec...
dev_faces 97,000 face.json rebuild bd80fec...
dev_stories 560 Snapshot bd80fec...
dev_voice 4,188 Snapshot bd80fec...
dev_rule1_v2 3,417 Snapshot bd80fec...
sentence_story 4,188 Snapshot bd80fec...
sentence_summary 4,188 Snapshot bd80fec...

Safeguards & Fixes

P0 — 必須修

# Fix 做法
1 Pipeline timing 寫入 DB update_processor_result() 加入 started_atcompleted_atduration_secs
2 Qdrant 不當主要儲存 Embedding 以 PG chunk.embedding 為 source of truthQdrant 唯讀 cache
3 Smart search 只走 PG pgvector search_parent_chunks_semantic 已正確,無需 Qdrant
4 移除 server.rs::search() dead code 或 mount 到正式 route 並確認可用

P1 — 建議修

# Fix 做法
5 刪除 Qdrant 前先 snapshot 自動 snapshot script
6 清理多餘 Qdrant collections dev_voice / dev_stories / dev_rule1_v2 / sentence_* 無 server reader可移除
7 Face embedding 寫入 PG 或移除 dead code 目前 face Qdrant write 無人讀取,可移除 sync_face_embeddings
8 UUID 一致性檢查 同一 content 不應產生不同 UUID

P2 — 可選

# Fix 做法
9 chunk_selector.rs player binaryhardcode momentry_rule1 改讀 env var 或 PG
10 AGENTS.md 已加入 delete 安全規則 Done

Data Recovery Path

資料來源 可恢復到 方法
chunk.embedding (PG) Qdrant dev_v1 SQL → Qdrant upsert
face.json (磁碟) Qdrant dev_faces Python script
story_llm.json (磁碟) Qdrant dev_stories Python script
Qdrant snapshots (phase1) Qdrant collections Snapshot upload API