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 éswp_). - 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.