Files
Generadordeguiones/database/migrations/06_guiones_generados.sql
Hanzo_dev 2fc4168301 feat: análisis extendido (10 campos nuevos) + generador de guiones con GPT-4o
Análisis extendido:
- Nuevos campos: apertura_exacta, cierre_exacto, tecnica_retencion, momento_pico_seg
- Copywriting: nivel_consciencia (Schwartz), objecion_principal, avatar_descripcion
- Replicabilidad: ingredientes_clave, replicabilidad, ratio_emocion_logica
- analizador.js: prompt extendido con metodología Schwartz + retención
- validador.js: schema Zod actualizado con 6 nuevos enums
- Migración SQL 05: ALTER TABLE + nuevos ENUMs + índices

Generador de guiones:
- generador.js: lib GPT-4o con temperatura 0.7 y contexto de patrones
- server.js: endpoints POST /api/generar, GET /api/generados, GET /api/generados/:id
- backend/api/generar.js + api/generar.js + api/generados.js: Vercel handlers
- Migración SQL 06: tabla guiones_generados con score_estimado, variantes, notas
- GenerateView.vue: formulario completo + preview del guion con copy al portapapeles
- SideNavBar: nueva entrada "Generar" con ícono auto_fix_high
- Router: ruta /generate → GenerateView
- api.js: api.generar() + api.generados.listar/obtener()

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 20:52:25 -05:00

63 lines
2.6 KiB
SQL

-- ============================================================
-- MIGRACIÓN 06 — Tabla de Guiones Generados
-- Almacena los guiones creados por el generador IA
-- Ejecutar en Supabase SQL Editor después de la migración 05
-- ============================================================
create type objetivo_guion_enum as enum (
'awareness', 'engagement', 'conversion', 'educacion', 'entretenimiento'
);
create table guiones_generados (
-- Identificadores
id uuid primary key default gen_random_uuid(),
cliente_id uuid references clientes(id) on delete set null,
-- Parámetros de entrada
niche text not null,
tema text not null,
audiencia text not null,
plataforma plataforma_enum not null,
duracion_objetivo integer, -- segundos objetivo
tono tono_enum,
objetivo objetivo_guion_enum,
estructura_usada estructura_narrativa_enum,
instrucciones_extra text,
-- Referencias usadas para generar
referencias_ids uuid[], -- IDs de guiones analizados usados como base
num_referencias integer generated always as (
coalesce(array_length(referencias_ids, 1), 0)
) stored,
-- Contenido generado
titulo_sugerido text,
gancho text not null,
desarrollo text not null,
cta text,
guion_completo text not null,
variantes_gancho text[],
tecnicas_aplicadas text[],
notas_produccion text,
duracion_estimada_seg integer,
score_estimado integer check (score_estimado between 1 and 100),
-- Auditoría
fecha_generacion timestamp with time zone default now(),
version_prompt text default 'v1.0',
aprobado boolean default false, -- marcado manualmente cuando el guion se usa
notas_usuario text -- feedback del usuario sobre el guion
);
-- Índices
create index idx_gg_niche on guiones_generados(niche);
create index idx_gg_cliente on guiones_generados(cliente_id);
create index idx_gg_fecha on guiones_generados(fecha_generacion desc);
create index idx_gg_aprobado on guiones_generados(aprobado) where aprobado = true;
comment on table guiones_generados is 'Guiones creados por el generador IA a partir de patrones analizados';
comment on column guiones_generados.referencias_ids is 'IDs de guiones analizados que se usaron como patrones de referencia';
comment on column guiones_generados.aprobado is 'True cuando el usuario marca el guion como usado/aprobado';