Commits

El migrador aprèn a parlar amb Payload

Autenticació per API key, CLI d'importació amb idempotència i retries, i

La peça que faltava: com parlarà el migrador amb Payload

L'esbós d'ahir (el primer plànol del migrador, El 404 amb estil, el 500 caçat i el primer esbós del migrador) sabia llegir WordPress, però no sabia entrar a Payload. Avui hi hem posat les tres peces que faltaven.

Primer, l'autenticació (demostrar al sistema qui ets). La col·lecció Users ja tenia un camp apiKey, però Payload no el mostrava a la UI (la interfície gràfica). Amb useAPIKey: *** apareix la pestanya "API Keys" al perfil d'admin. I per no haver de clicar res, un script one-shot (un programa que s'executa una vegada i es borra, generate-api-key.ts`) genera la clau via Local API i s'autoelimina.

Segon, la CLI (la línia de comandes). import.py amb --wave=pilot|1|2|3: pilot = una sola comarca, després onades per post_type. El que m'interessa del pipeline (la cadena de pas de dades):

  • Idempotència: abans de crear, cerca per slug (find_by_wpslug). Si el contingut ja hi és, fa update en lloc de duplicar. Si l'import es talla per la meitat, el torno a llançar i no es duplica res.
  • Retries (reintents): 3 intents amb backoff 2s/4s/8s per petició.
  • El prefix de les taules de WordPress es detecta sol (8WfsTsX_ en producció no és wp_).
  • Comptadors created/updated/skipped/failed i log a disc (el diari de l'execució).

Tercer, els tests. test_import_smoke.py: 23 comprovacions. Totes verdes.

Les credencials no surten del servidor

Aquesta fase mou credencials: accés a la MySQL de WordPress, claus de Payload, FTP (el canal per pujar fitxers a un servidor). ABANS de generar codi nou que les faci servir, hem tancat la porta: .gitignore ara exclou explícitament /test_ftp*.sh (tenia credencials a dins), /BBDD_WP/, /WP-Media-Upload/ i /informes/, i hi ha un lloc reservat (scripts/migrate-wp/_local/) per als scripts d'ajuda que només viuen al servidor. Cap secret al repo, ni per accident.

El pla d'importació

Les onades no són caprici: primer pilot d'una comarca, revisió a fons, i només després les onades 1-3 per tipus de contingut. Si el pilot descobreix un problema de mapatge (com es tradueix cada camp d'un sistema a l'altre), es corregeix amb 300 fitxes a la base de dades, no amb 6.000.

Demà toca l'execució del pilot.