Skip to content

Sudamericana: PDF Final a pdfkit + saca PDF muerto de ambos botones ganador - #13

Merged
danguz80 merged 1 commit into
mainfrom
claude/libertadores-penalties-admin-s9py1b
Aug 21, 2026
Merged

Sudamericana: PDF Final a pdfkit + saca PDF muerto de ambos botones ganador#13
danguz80 merged 1 commit into
mainfrom
claude/libertadores-penalties-admin-s9py1b

Conversation

@danguz80

Copy link
Copy Markdown
Owner

Mismo cambio que se hizo para Libertadores (PR #12), aplicado a Sudamericana.

Cambio 1 y 2: se sacan DOS generaciones de PDF muertas

  • POST /:jornadaNumero (Calcular Ganadores de jornada): generaba el PDF Final completo con el motor viejo (Chromium) en cada cálculo, pese a que ese PDF nunca se enviaba a ningún lado. Se saca esa generación; el endpoint ahora solo calcula y guarda el ganador.
  • POST /acumulado (Calcular Ganador Ranking Acumulado): tenía el mismo patrón para J10 — generaba el PDF Final y lo descartaba, mientras el mensaje de respuesta afirmaba falsamente "PDF enviado por email". Se saca también esa generación.

Cambio 3: el botón real de PDF Final pasa a pdfkit

POST /:jornadaNumero/pdf-final pasa a usar pdfkit, reusando server/utils/pdfFinal.js (el mismo renderer genérico creado para Libertadores en el PR anterior).

Se reescribe generarPDFSudamericanaConGanadores preservando intactas todas las consultas SQL y la lógica de clasificación de cada jornada (J6 grupos, J7-J9 fases eliminatorias, J10 finalista/campeón/subcampeón vía sudamericana_puntos_clasificacion). A diferencia de Libertadores, Sudamericana no filtra el partido FINAL de la tabla principal de pronósticos — así funcionaba el original, se preserva igual.

Se actualiza el frontend (ClasificacionSudamericana.jsx) sacando la referencia a pdfGenerado en el mensaje de "Calcular Ganadores" de jornada, que ya no existe en la respuesta.

Pruebas

generarPDFSudamericanaConGanadores completo probado con pool.query mockeado simulando una jornada 8 y una jornada 10: ambos casos generan PDF válido sin errores, con el número de queries esperado y el partido FINAL apareciendo correctamente en la tabla principal (comportamiento distinto a Libertadores, verificado que se preservó).


🤖 Generated with Claude Code


Generated by Claude Code

…anador

Mismo cambio que se hizo para Libertadores, aplicado a Sudamericana:

1. POST /:jornadaNumero (Calcular Ganadores de jornada) generaba tambien
   el PDF Final completo con el motor viejo (Chromium) en cada calculo,
   pese a que ese PDF nunca se enviaba a ningun lado. Se saca esa
   generacion; el endpoint ahora solo calcula y guarda el ganador.

2. POST /acumulado (Calcular Ganador Ranking Acumulado) tenia el MISMO
   patron para J10: generaba el PDF Final y lo descartaba, mientras el
   mensaje de respuesta afirmaba falsamente 'PDF enviado por email'. Se
   saca tambien esa generacion.

3. El boton real de PDF Final (POST /:jornadaNumero/pdf-final) pasa a
   usar pdfkit en vez de html-pdf-node/Chromium, reusando
   server/utils/pdfFinal.js (el mismo renderer generico creado para
   Libertadores). Se reescribe generarPDFSudamericanaConGanadores
   preservando intactas todas las consultas SQL y la logica de
   clasificacion de cada jornada (J6 grupos, J7-J9 fases eliminatorias,
   J10 finalista/campeon/subcampeon via sudamericana_puntos_clasificacion).
   A diferencia de Libertadores, Sudamericana no filtra el partido FINAL
   de la tabla principal de pronosticos (asi funcionaba el original).

Se actualiza el frontend (ClasificacionSudamericana.jsx) sacando la
referencia a pdfGenerado en el mensaje de 'Calcular Ganadores' de
jornada, que ya no existe en la respuesta.

Probado localmente: generarPDFSudamericanaConGanadores completo con
pool.query mockeado simulando J8 y J10 - ambos casos generan PDF
valido sin errores, con el numero de queries esperado y el partido
FINAL apareciendo en la tabla principal (a diferencia de Libertadores).
Copilot AI lite review requested due to automatic review settings August 21, 2026 08:26
@netlify

netlify Bot commented Aug 21, 2026

Copy link
Copy Markdown

Deploy Preview for pollafutbol ready!

Name Link
🔨 Latest commit 30d47b1
🔍 Latest deploy log https://app.netlify.com/projects/pollafutbol/deploys/6a880bbe1956a40008c873fc
😎 Deploy Preview https://deploy-preview-13--pollafutbol.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@danguz80
danguz80 merged commit 476863d into main Aug 21, 2026
3 of 4 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Este PR migra la generación del PDF Final de Copa Sudamericana desde el motor viejo basado en Chromium a pdfkit, y elimina generación de PDFs “muertos” que se calculaban pero no se enviaban/usarían, reduciendo consumo de memoria y CPU en producción.

Changes:

  • Elimina la generación automática (y descartada) del PDF Final en los endpoints de cálculo de ganadores de jornada y de acumulado.
  • Reescribe generarPDFSudamericanaConGanadores para generar el PDF Final usando generarPdfFinalBuffer (pdfkit).
  • Ajusta el frontend para dejar de mostrar mensajes/flags ligados a pdfGenerado en “Calcular Ganadores” de jornada.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
server/routes/ganadoresJornadaSudamericana.js Quita generación de PDFs descartados y migra el PDF Final bajo demanda a pdfkit via generarPdfFinalBuffer.
client/src/pages/ClasificacionSudamericana.jsx Elimina el texto/UI que dependía de pdfGenerado en el cálculo de ganadores de jornada.
Suppressed comments (1)

server/routes/ganadoresJornadaSudamericana.js:12

  • Los imports fs, path y fileURLToPath (y las constantes __filename/__dirname) quedaron sin uso en este archivo tras el cambio a pdfkit: no se usan para guardar/leer PDFs ni para resolver rutas. Conviene eliminarlos para evitar warnings de linter y reducir ruido.
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants