modularizado de prompts

This commit is contained in:
Lucas Tettamanti
2026-01-25 20:51:33 -03:00
parent b91ece867b
commit a489ec66a2
43 changed files with 5408 additions and 89 deletions

View File

@@ -0,0 +1,56 @@
-- migrate:up
-- Tabla para manejar conversaciones que requieren intervención humana
CREATE TABLE human_takeovers (
id SERIAL PRIMARY KEY,
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
chat_id TEXT NOT NULL,
-- Info del takeover
pending_query TEXT NOT NULL, -- La query/producto que no se encontró
reason TEXT NOT NULL DEFAULT 'product_not_found', -- Razón del takeover
context_snapshot JSONB, -- Snapshot del contexto al momento del takeover
-- Estado
status TEXT NOT NULL DEFAULT 'pending', -- 'pending', 'responded', 'cancelled'
-- Respuesta del humano
human_response TEXT, -- Texto de la respuesta
responded_at TIMESTAMPTZ,
responded_by TEXT, -- Email/ID del usuario que respondió
-- Metadatos
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
-- Índices
CONSTRAINT valid_status CHECK (status IN ('pending', 'responded', 'cancelled'))
);
-- Índice para buscar takeovers pendientes por tenant
CREATE INDEX idx_takeovers_pending ON human_takeovers(tenant_id, status, created_at DESC)
WHERE status = 'pending';
-- Índice para buscar por chat_id
CREATE INDEX idx_takeovers_chat ON human_takeovers(tenant_id, chat_id, created_at DESC);
-- Función para actualizar updated_at
CREATE OR REPLACE FUNCTION update_takeover_timestamp()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at := NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER takeover_updated_trigger
BEFORE UPDATE ON human_takeovers
FOR EACH ROW EXECUTE FUNCTION update_takeover_timestamp();
-- migrate:down
DROP TRIGGER IF EXISTS takeover_updated_trigger ON human_takeovers;
DROP FUNCTION IF EXISTS update_takeover_timestamp();
DROP INDEX IF EXISTS idx_takeovers_chat;
DROP INDEX IF EXISTS idx_takeovers_pending;
DROP TABLE IF EXISTS human_takeovers;