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