feat(commercial) : messages de validation FR sur les contraintes back + garde-fou (ERP-107) #59

Merged
malio merged 5 commits from feat/erp-107-validation-messages-fr into develop 2026-06-04 09:27:33 +00:00

5 Commits

Author SHA1 Message Date
malio 16e376a0d0 Merge branch 'develop' into feat/erp-107-validation-messages-fr
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m48s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m15s
2026-06-04 09:23:12 +00:00
Matthieu a17723cb1c docs(commercial) : spec + plan validation tous-blocs collections client (500 NonUniqueResult + collecte erreurs par bloc)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Has been cancelled
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Has been cancelled
2026-06-04 11:21:32 +02:00
malio f6ae49e258 Merge branch 'develop' into feat/erp-107-validation-messages-fr
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m38s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m7s
2026-06-04 08:41:38 +00:00
Matthieu 27489c777b merge: integrate origin/develop into ERP-107
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m48s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m17s
Resout les conflits avec la suppression du contact inline du Client (#57,
ERP-104) : les champs firstName/lastName/phones/email ne sont plus portes par
Client. Les messages de validation FR correspondants vivent desormais sur
ClientContact. Le test fonctionnel du message email FR est recible sur la
sous-ressource POST /clients/{id}/contacts.
2026-06-04 10:15:04 +02:00
Matthieu 9202d2ee6f feat(commercial) : messages de validation FR sur les contraintes back + garde-fou (ERP-107)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m45s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m12s
Audit et complete les messages des contraintes #[Assert\*] des entites metier
(pendant back du mapping d'erreur par champ front ERP-101) :

- Message FR explicite sur toutes les contraintes (Email, NotBlank, Length,
  Bic, Iban, PositiveOrZero, Count...) des entites Client, ClientContact,
  ClientAddress, ClientRib, Category, Role, User.
- Ajout des Assert\Length manquantes calees sur le length de la colonne ORM
  (telephones VARCHAR(20), siren, nTva, accountNumber, username...) : evite
  une erreur Postgres 500 non rattachee au champ au profit d'une 422 propre.
- Locale FR globale (symfony/translation + default_locale: fr) comme filet
  pour les messages natifs non surcharges.
- Garde-fou tests/Architecture/EntityConstraintsHaveFrenchMessageTest : echoue
  si une contrainte n'a pas de message FR explicite ou si Assert\Length.max
  diverge du length ORM (whitelist justifiee pour les formats Bic/Iban/Regex).
- Test fonctionnel du JSON 422 reel (message FR + propertyPath consommable
  par useFormErrors cote front).
- Convention documentee dans .claude/rules/backend.md.

Tests : 469 verts (1793 assertions).
2026-06-04 10:11:33 +02:00