feat(transport) : synchronisation du référentiel codes IDTF (ERP-149) #101
Reference in New Issue
Block a user
Delete Branch "feat/erp-149-idtf-sync"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ERP-149 — Récupération des codes IDTF (transport routier)
Commande console
app:idtf:sync: récupère l'export Excel des codes IDTF (régimes de nettoyage transport) depuis icrt-idtf.com, le parse et synchronise une table référentielle. Scope road ; discriminantschemaroad/water conservé pour un futur fluvial.Contenu
Version20260612160000(namespace racine) :idtf_product+idtf_sync_log,COMMENT ON COLUMNsur chaque colonne, unique(schema, idtf_number),cas_numbersJSONB, soft-delete.IdtfSheetParser: parsing pur d'une matrice (sans dépendance PhpSpreadsheet) — détection dynamique de la ligne d'en-tête, mapping par libellé normalisé (résiste au réordonnancement), CAS split sur;, datedd-mm-yyyy→ ISO +checkdate, skip des lignes non numériques.SyncIdtfCommand: options--schema(road|water) /--file/--dry-run. POST avec les 10fields[]explicites (le piègefields[]=allne sort que 6 colonnes) → export 11 colonnes ; garde-fou content-type/signature ZIP. Upsert DBAL transactionnel + soft-delete + journal.make idtf-sync.Tests
IdtfSheetParser: en-tête dynamique, mapping, CAS, date, skip, ordre de colonnes)..xlsxgénéré par PhpSpreadsheet (parsing → upsert → journal → soft-delete + schéma invalide rejeté).ColumnsHaveSqlCommentTest✅.Décisions
phpoffice/phpspreadsheetétait déjà une dépendance (^5.7) — le bump initial vers ^5.8 a été reverté.framework.http_clientactivé par la PR QUALIMAT (raison de l'empilement sur #99).