feat(analysis): agregar campo conclusion_estrategica al análisis
Nuevo campo de síntesis de ~15 líneas que integra todos los datos del análisis (narrativa, Cialdini, neuromarketing, copywriting, métricas) en un veredicto estratégico accionable. Incluye migración 08 para Supabase y visualización en AnalysisDetailView antes del patrón ganador. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@ -99,7 +99,8 @@ Devuelve EXACTAMENTE este JSON con los valores que correspondan:
|
|||||||
"hashtags_sugeridos": ["<hashtag1>", "<hashtag2>", "<hashtag3>", "<hashtag4>", "<hashtag5>", "<hashtag6>", "<hashtag7>"],
|
"hashtags_sugeridos": ["<hashtag1>", "<hashtag2>", "<hashtag3>", "<hashtag4>", "<hashtag5>", "<hashtag6>", "<hashtag7>"],
|
||||||
|
|
||||||
"score_virabilidad": <número entero del 1 al 100>,
|
"score_virabilidad": <número entero del 1 al 100>,
|
||||||
"resumen_patron": "<párrafo de 3-4 oraciones describiendo el patrón ganador de este video: qué hace, por qué funciona psicológicamente y cómo se puede replicar>"
|
"resumen_patron": "<párrafo de 3-4 oraciones describiendo el patrón ganador de este video: qué hace, por qué funciona psicológicamente y cómo se puede replicar>",
|
||||||
|
"conclusion_estrategica": "<síntesis estratégica extensa de aproximadamente 15 líneas que integra TODOS los datos del análisis. Estructura la respuesta así: (1) Veredicto general sobre la efectividad del video y su score de viralidad. (2) Análisis de la estructura narrativa elegida y por qué encaja con el nicho y el avatar objetivo. (3) Qué principios de Cialdini se activaron y cómo interactúan entre sí para generar persuasión. (4) Cómo los elementos de neuromarketing (atención visual, pacing, carga cognitiva, lenguaje sensorial) amplifican el mensaje. (5) Análisis del trigger emocional dominante y el arco emocional: cómo conducen al espectador hacia el CTA. (6) Evaluación del nivel de consciencia del avatar y si la promesa explícita está bien calibrada para ese nivel. (7) Insight estratégico principal: qué hace este video mejor que el promedio de su nicho y por qué es difícil de replicar sin entender su mecánica interna. (8) Veredicto final de replicabilidad y qué elementos son absolutamente críticos conservar en una versión derivada.>"
|
||||||
}`
|
}`
|
||||||
|
|
||||||
const completion = await openai.chat.completions.create({
|
const completion = await openai.chat.completions.create({
|
||||||
|
|||||||
@ -166,6 +166,7 @@ export const AnalisisSchema = z.object({
|
|||||||
// Métricas
|
// Métricas
|
||||||
score_virabilidad: flexInt(1, 100),
|
score_virabilidad: flexInt(1, 100),
|
||||||
resumen_patron: z.string().min(10).max(1500),
|
resumen_patron: z.string().min(10).max(1500),
|
||||||
|
conclusion_estrategica: z.string().min(10).max(4000),
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
9
database/migrations/08_conclusion_estrategica.sql
Normal file
9
database/migrations/08_conclusion_estrategica.sql
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
-- ============================================================
|
||||||
|
-- MIGRACIÓN 08 — Conclusión Estratégica
|
||||||
|
-- Ejecutar en Supabase SQL Editor después de la migración 07
|
||||||
|
-- ============================================================
|
||||||
|
|
||||||
|
alter table guiones
|
||||||
|
add column if not exists conclusion_estrategica text;
|
||||||
|
|
||||||
|
comment on column guiones.conclusion_estrategica is 'Síntesis estratégica generada por GPT-4o que integra todos los datos del análisis (narrativa, Cialdini, neuromarketing, copywriting, métricas) en un veredicto accionable sobre por qué funciona el video y cómo replicarlo';
|
||||||
@ -195,6 +195,15 @@
|
|||||||
<!-- Columna derecha (contenido) -->
|
<!-- Columna derecha (contenido) -->
|
||||||
<div class="xl:col-span-8 flex flex-col gap-5">
|
<div class="xl:col-span-8 flex flex-col gap-5">
|
||||||
|
|
||||||
|
<!-- Conclusión Estratégica -->
|
||||||
|
<div v-if="guion.conclusion_estrategica" class="bg-surface rounded-xl border border-border shadow-sm p-6">
|
||||||
|
<p class="text-[10px] font-semibold text-ink-2 uppercase tracking-wider mb-3 flex items-center gap-1.5">
|
||||||
|
<span class="material-symbols-outlined text-[16px] text-ink-3">summarize</span>
|
||||||
|
Conclusión Estratégica
|
||||||
|
</p>
|
||||||
|
<p class="text-sm text-ink leading-relaxed">{{ guion.conclusion_estrategica }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Patrón Ganador -->
|
<!-- Patrón Ganador -->
|
||||||
<div class="bg-surface rounded-xl border border-accent-border shadow-sm p-6 bg-accent-subtle/30">
|
<div class="bg-surface rounded-xl border border-accent-border shadow-sm p-6 bg-accent-subtle/30">
|
||||||
<p class="text-[10px] font-semibold text-accent uppercase tracking-wider mb-3">Síntesis del Patrón Ganador</p>
|
<p class="text-[10px] font-semibold text-accent uppercase tracking-wider mb-3">Síntesis del Patrón Ganador</p>
|
||||||
|
|||||||
Reference in New Issue
Block a user