feat(commercial) : messages de validation FR sur les contraintes back + garde-fou (ERP-107) #59
Reference in New Issue
Block a user
Delete Branch "feat/erp-107-validation-messages-fr"
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?
Contexte
Résout ERP-107 — pendant back du mapping d'erreur par champ front (ERP-101). Le front (
useFormErrors/mapViolationsToRecord) affiche sous chaque champ lemessagerenvoyé par le back. Ce ticket garantit que ces messages existent, sont en FR et rattachés au bon champ.Changements
#[Assert\*]des entités métier :Client,ClientContact,ClientAddress,ClientRib,Category,Role,User(Email, NotBlank, Length, Bic, Iban, PositiveOrZero, Count…).Assert\Lengthmanquantes ajoutées, calées sur lelengthde la colonne ORM (téléphonesVARCHAR(20),siren,nTva,accountNumber,username…). Évite une erreur Postgres 500 non rattachée au champ → 422 propre.symfony/translation+default_locale: fr) comme filet pour les messages natifs Symfony non surchargés.tests/Architecture/EntityConstraintsHaveFrenchMessageTest: échoue si une contrainte n'a pas de message FR explicite (comparaison au défaut Symfony) ou siAssert\Length.maxdiverge dulengthORM. Whitelist justifiée pour les formats auto-bornés (Bic/Iban/Regex CP/couleur hex).propertyPathconsommable par le front..claude/rules/backend.md.Décisions
Length == ORM length: test bloquant (anti-dérive).Assert\Callbackajouté — leClientProcessorgère déjà l'exclusivité (422 +propertyPath). Pas de doublon.Hors périmètre / à suivre
nullable(DB) /NotBlank(back) /required(front) : les champs obligatoires existants ont été confirmés, mais aucun changement de nullabilité DB n'a été fait sans arbitrage métier. À recroiser avec les astérisques front (ERP-101 / PR #58) si divergence constatée.Vérifications
make test: 469 tests verts (1793 assertions), 0 échec/erreur.php-cs-fixer: 0 fichier à corriger.