feat: usar métricas reales para ordenar referencias del generador

- Vistas y Likes son ahora obligatorios al analizar un video
- El generador ordena referencias por likes/vistas reales en lugar del score_virabilidad estimado por GPT-4o
- Agrega CLAUDE.md con guía de arquitectura y comandos

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-01 09:00:20 -05:00
parent a453b87c6c
commit 14372b5b29
5 changed files with 101 additions and 11 deletions

View File

@ -114,8 +114,10 @@ app.post('/api/analizar', async (req, res) => {
contexto_video = '',
} = req.body
if (!url) return res.status(400).json({ error: 'El campo "url" es requerido' })
if (!niche) return res.status(400).json({ error: 'El campo "niche" es requerido' })
if (!url) return res.status(400).json({ error: 'El campo "url" es requerido' })
if (!niche) return res.status(400).json({ error: 'El campo "niche" es requerido' })
if (!vistas || Number(vistas) <= 0) return res.status(400).json({ error: 'El campo "vistas" es requerido y debe ser mayor a 0' })
if (!likes || Number(likes) <= 0) return res.status(400).json({ error: 'El campo "likes" es requerido y debe ser mayor a 0' })
const URL_SOPORTADAS = /^https?:\/\/(www\.)?(tiktok\.com|vm\.tiktok\.com|instagram\.com|youtube\.com|youtu\.be)/
if (!URL_SOPORTADAS.test(url)) {
@ -260,7 +262,8 @@ app.post('/api/generar', async (req, res) => {
`)
.eq('procesado_ok', true)
.eq('niche', niche)
.order('score_virabilidad', { ascending: false })
.order('likes', { ascending: false })
.order('vistas', { ascending: false })
.limit(num_referencias)
if (plataforma) query = query.eq('plataforma', plataforma)