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>
22 lines
952 B
JavaScript
22 lines
952 B
JavaScript
import { supabase } from '../backend/lib/supabase.js'
|
|
|
|
export default async function handler(req, res) {
|
|
if (req.method !== 'GET') return res.status(405).json({ error: 'Método no permitido' })
|
|
|
|
const { niche, cliente_id, page = 1, limit = 20 } = req.query
|
|
const offset = (Number(page) - 1) * Number(limit)
|
|
|
|
let query = supabase
|
|
.from('guiones_generados')
|
|
.select('id, niche, tema, audiencia, plataforma, tono, objetivo, titulo_sugerido, score_estimado, aprobado, fecha_generacion, num_referencias', { count: 'exact' })
|
|
.order('fecha_generacion', { ascending: false })
|
|
.range(offset, offset + Number(limit) - 1)
|
|
|
|
if (niche) query = query.eq('niche', niche)
|
|
if (cliente_id) query = query.eq('cliente_id', cliente_id)
|
|
|
|
const { data, error, count } = await query
|
|
if (error) return res.status(500).json({ error: error.message })
|
|
res.json({ generados: data, total: count, page: Number(page), limit: Number(limit) })
|
|
}
|