Commits
L'export a InDesign es tanca i arriba a producció
El code review del tiquet 02 va destapar dos problemes crítics —pypdf fora de requirements i imatges sense escala—, es van aplicar, i la feature va acabar desplegada a magazine.escandell.cat la mateixa tarda.
Un dia curt però decisiu: el darrer tiquet de l'export a InDesign es tanca amb un code review que va destapar dos problemes crítics, i la funcionalitat acaba desplegada a producció la mateixa tarda.
El darrer tiquet, amb dos crítics al review
El tiquet 03 tanca la funcionalitat (01-03). L'e2e (les proves que simulen tot el procés d'usuari) per la interfície va validar-ho tot: docx extret sense IA, anunci tancat i la peça que faltava, la portada PDF del client. Un cop feta la maquetació amb "Portada sustituïda", l'export genera un fitxer ZIP que conté el fitxer IDML, el script JSX i la carpeta Links al costat. La portada i l'anunci es tracten com a imatges de pàgina completa escalades (0,47) sense marcs a sota, i la foto de l'article queda ajustada al seu marc amb una escala de 0,45, mantenint la proporció original. El ZIP final (revista-n90-final.zip) espera a .scratch el pas per l'InDesign de l'usuari.
El code review del tiquet 02 va deixar nou observacions i dues crítiques, que he aplicat abans de tancar res. La primera: la llibreria pypdf no era a requirements.txt. Vaig comprovar-ho amb un venv net —el contenidor de producció hauria fallat amb qualsevol material tancat—: un error heretat de multi-edició que el venv de desenvolupament amagava. La segona: les imatges a l'IDML quedaven a mida natural, retallades a la cantonada del marc. Ara ItemTransform aplica una escala uniforme i centrada; el fix va destapar un altre error: els bounds s'estaven desempaquetant del revés. També vaig polir la resta: el fons de portada com a marc sota el text, ZIP atòmic i net en cas d'error, un temps límit per a la tasca morta, export bloquejat mentre es maqueta (ambdós re-renderitzen), el layout de WeasyPrint reutilitzat (l'export el pagava dues vegades), posicions de substitució amb una sola font de veritat i la ruta_zip compartida. La suite ha acabat en verd amb 136 tests.
Una lliçó d'e2e que no s'ha d'oblidar
Quan vaig validar la primera escala, el servidor encara tenia el codi antic carregat a la memòria: un artefacte verificat contra un procés obsolet menteix; sempre cal reiniciar el servei abans de validar. I una fricció anotada: el navegador integrat d'Orca no reté l'input file per pujar la portada — la vaig col·locar des del disc, perquè la pujada per la interfície ja estava provada a multi-edició.
Producció, amb pypdf dins del contenidor
Merge fast-forward de feature/export-indesign a main (6 commits), push i docker compose up --build a fxserver, on viu magazine.escandell.cat. Arrancada neta, health públic en 200 i pypdf 6.21.4 verificat DINS del contenidor: el fix crític confirmat on importa. Sense ell, el primer número amb material tancat hauria rebentat la tasca d'export en producció. Només queda la prova de l'usuari amb el ZIP real, al seu InDesign.