-- 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);
