-- ADR-007 Step 4: embedding 失敗持久化 retry queue -- 日期: 2026-04-19 -- 原因: 原本 openclaw_learning_service._embedding_queue 為記憶體 Queue, -- Python 進程重啟會遺失未處理項目。改為 DB 表 + Hermes worker 輪詢。 CREATE TABLE IF NOT EXISTS embedding_retry_queue ( id SERIAL PRIMARY KEY, target_table VARCHAR(50) NOT NULL, -- 'ai_insights' / 'conversations' target_id INTEGER NOT NULL, -- 目標列 id text_content TEXT NOT NULL, -- 要 embed 的原文 model VARCHAR(50) DEFAULT 'bge-m3:latest', status VARCHAR(20) DEFAULT 'pending', -- pending / processing / done / failed attempts INTEGER DEFAULT 0, last_error TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, processed_at TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_embed_retry_status ON embedding_retry_queue(status, created_at); CREATE INDEX IF NOT EXISTS idx_embed_retry_target ON embedding_retry_queue(target_table, target_id);