feat(front) : util httpExternal + autocomplete adresse BAN (ERP-66) #52

Merged
tristan merged 5 commits from feature/ERP-66-utils-phone-address into develop 2026-06-03 14:02:14 +00:00

5 Commits

Author SHA1 Message Date
tristan 7a45d17724 fix(back,front) : adresse client — au moins une categorie obligatoire
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m54s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m15s
Spec-front § Adresse : la categorie est obligatoire sur une adresse, mais
n'etait enforced ni au back ni au front.

- Back : ClientAddress::$categories porte desormais Assert\Count(min: 1)
  (POST/PATCH sans categorie -> 422). Test testAddressRequiresAtLeastOneCategory ;
  deux tests existants qui creaient une adresse sans categorie recoivent une
  categorie SECTEUR.
- Front : canValidateAddresses (creation + modification) exige >= 1 categorie
  par adresse -> bouton Enregistrer desactive tant qu'aucune categorie n'est
  choisie (meme gating que les sites).
2026-06-03 15:57:26 +02:00
tristan 9c301371fb fix(front) : consultation — afficher tous les sites (departement) dans le bloc adresse
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m52s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m25s
En consultation, le bloc adresse n'affichait que les sites rattaches a l'adresse
(donc rien si l'adresse est vide). On affiche desormais TOUS les sites de
l'utilisateur (issus de /api/me, groupe me:read — pas de 403 pour les roles
metier), libelle = numero de departement ; les sites rattaches restent coches.
2026-06-03 15:44:16 +02:00
tristan 5754d19450 feat(front) : ameliorations UI onglets client (compta, RIB, blocs, placeholder)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m2s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m16s
- Onglet Comptabilite : grille alignee sur les autres onglets
  (grid-cols-4 gap-x-[44px] gap-y-4) en creation / modification / consultation.
- Bloc RIB toujours visible (au moins un bloc, meme vide) en creation,
  modification et consultation ; un bloc vide n'est jamais persiste.
- Blocs Contact / Adresse / RIB toujours affiches meme vides en consultation
  et modification ; suppression des messages « Aucun ... enregistre ».
- Onglets a venir (Transport, Statistiques, Rapports, Echanges) : nouveau
  composant partage ComingSoonPlaceholder (shared/components/ui) « En cours de
  dev » + gif, reutilisable par tous les modules ; remplace TabPlaceholderBlank.
2026-06-03 15:34:31 +02:00
tristan f4313d1f3d fix(front) : champ adresse vide apres validation + libelle departement des sites
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m51s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m21s
- ClientAddressBlock : la rue courante est toujours reinjectee dans les
  options de MalioInputAutocomplete (computed, miroir de cityOptions).
  Sinon, des que la liste de suggestions BAN est vide (remontage apres
  validation, edition d'une adresse existante), le composant ne resolvait
  plus la valeur liee et affichait un champ vide alors que la donnee etait
  bien persistee. Test de montage ajoute.
- useClientReferentials : le libelle des sites = numero de departement
  (2 premiers chiffres du code postal, deja expose par /sites) au lieu du
  nom.
2026-06-03 13:53:26 +02:00
tristan 8376236a3c feat(front) : util httpExternal + autocomplete adresse BAN (ERP-66)
- httpExternal : client dedie aux API publiques externes (URL absolue,
  sans cookie de session, timeout), seul point d'entree autorise pour un
  $fetch externe (regle frontend n°4).
- useAddressAutocomplete : implementation BAN (api-adresse.data.gouv.fr),
  recherche ville (type=municipality) et adresse, mapping GeoJSON, throw
  en cas d'erreur/timeout (mode degrade cote composant). La recherche
  d'adresse n'impose pas type=housenumber (sinon 0 resultat tant qu'aucun
  numero n'est saisi) — spec-front mise a jour en consequence.
- Tests Vitest : httpExternal, useAddressAutocomplete, et cas limites
  supplementaires pour formatPhoneFR.
2026-06-03 13:29:45 +02:00