1-- Phase 12 (TASK-0121 + TASK-0125): AI usage-ledger + re-embed-walk indexes. 2-- 3-- ai_messages IS the usage ledger (TASK-0121): the monthly token rollup 4-- sums tokensIn + tokensOut per workspace since month-start → the 5-- createdAt range index (plus the composite conversation range for 6-- per-conversation history scans). 7-- 8-- ai_embeddings gets [workspaceId, model] for the nightly full re-embed 9-- walk (TASK-0125): the job groups rows by model before re-embedding. 10-- 11-- No tables added/removed; no column changes (workspace.usageLimits / 12-- workspace.settings are pre-existing Json columns). 13 14CREATE INDEX "ai_messages_createdAt_idx" ON "ai_messages"("createdAt"); 15CREATE INDEX "ai_messages_conversationId_createdAt_idx" ON "ai_messages"("conversationId", "createdAt"); 16CREATE INDEX "ai_embeddings_workspaceId_model_idx" ON "ai_embeddings"("workspaceId", "model"); 17 18-- TASK-0122: conversation soft delete (hide immediately, purge after 30 d). 19ALTER TABLE "ai_conversations" ADD COLUMN "deletedAt" TIMESTAMP(3); 20CREATE INDEX "ai_conversations_deletedAt_idx" ON "ai_conversations"("deletedAt"); 21 22-- TASK-0121/0123+: per-message metadata (feature tag on hidden per-call 23-- ledger rows, truncated flag on aborted streams, …). 24ALTER TABLE "ai_messages" ADD COLUMN "metadata" JSONB; 25