feat(front) : onglet contact prestataire (ERP-142) #104

Merged
tristan merged 1 commits from feature/ERP-142-onglet-contact-prestataire into develop 2026-06-15 09:05:07 +00:00
Owner

Empilée sur ERP-141 (#103).

Périmètre ERP-142

Onglet Contact de l'écran /providers/new — saisie multi-contacts (blocs ajoutables) via la sous-ressource contacts.

  • ProviderContactBlock.vue (miroir SupplierContactBlock) : Nom / Prénom / Fonction / Email / Téléphone (x1, +1 révélable, max 2), erreurs 422 par champ (prop :errors).
  • useProviderForm étendu : état contacts, canAddContact (RG-3.04), addContact/removeContact, submitContacts (POST /providers/{id}/contacts pour les nouveaux, PATCH /provider_contacts/{id} pour les existants, groupe provider:write:contacts), submitRows (erreurs collectées par ligne, non bloquant).
  • RG-3.04 : « + Nouveau contact » désactivé tant que le bloc courant est vide (≥1 champ parmi prénom/nom/fonction/tél/email — aligné back).
  • RG-3.12 : onglet non validable vide ; une amorce vide est soumise pour déclencher la 422 firstName inline.
  • Suppression d'un bloc → modal de confirmation.
  • Helpers purs utils/forms/providerContact.ts (isProviderContactBlank, buildProviderContactPayload).
  • i18n technique.providers.form.contact/confirmDelete + toast.updateSuccess.

Vérifications

  • Vitest : 418/418 (16 nouveaux : helpers, bloc, workflow contacts).
  • ESLint : OK.
  • nuxi typecheck : 0 erreur sur les fichiers source du ticket.
  • Golden path navigateur : bloc Contact rendu, « Nouveau contact » désactivé tant que vide puis activé après saisie, révélation du 2e téléphone (max 2).
Empilée sur ERP-141 (#103). ## Périmètre ERP-142 Onglet **Contact** de l'écran `/providers/new` — saisie multi-contacts (blocs ajoutables) via la sous-ressource contacts. - **`ProviderContactBlock.vue`** (miroir `SupplierContactBlock`) : Nom / Prénom / Fonction / Email / Téléphone (x1, +1 révélable, **max 2**), erreurs 422 par champ (prop `:errors`). - **`useProviderForm`** étendu : état `contacts`, `canAddContact` (RG-3.04), `addContact`/`removeContact`, `submitContacts` (POST `/providers/{id}/contacts` pour les nouveaux, PATCH `/provider_contacts/{id}` pour les existants, groupe `provider:write:contacts`), `submitRows` (erreurs collectées **par ligne**, non bloquant). - **RG-3.04** : « + Nouveau contact » désactivé tant que le bloc courant est vide (≥1 champ parmi prénom/nom/fonction/tél/email — aligné back). - **RG-3.12** : onglet non validable vide ; une amorce vide est soumise pour déclencher la 422 `firstName` inline. - Suppression d'un bloc → modal de confirmation. - Helpers purs `utils/forms/providerContact.ts` (`isProviderContactBlank`, `buildProviderContactPayload`). - i18n `technique.providers.form.contact/confirmDelete` + `toast.updateSuccess`. ## Vérifications - Vitest : 418/418 (16 nouveaux : helpers, bloc, workflow contacts). - ESLint : OK. - `nuxi typecheck` : 0 erreur sur les fichiers source du ticket. - Golden path navigateur : bloc Contact rendu, « Nouveau contact » désactivé tant que vide puis activé après saisie, révélation du 2e téléphone (max 2).
Owner

Review — RAS, bon pour merge.

Onglet Contact conforme :

  • ProviderContactBlock en Malio*, collection inline (ajout désactivé tant que le dernier bloc est vide — RG-3.04).
  • Soumission ligne à ligne : POST /providers/{id}/contacts (nouveaux) / PATCH /provider_contacts/{id} (existants), erreurs 422 collectées par index (contactErrors), pas d'arrêt au premier échec (ERP-101).
  • Cas « onglet 100 % vide » géré : on soumet une amorce pour déclencher la 422 RG-3.04 inline plutôt que de finaliser un onglet vide.
**Review — RAS, bon pour merge.** Onglet Contact conforme : - `ProviderContactBlock` en `Malio*`, collection inline (ajout désactivé tant que le dernier bloc est vide — RG-3.04). - Soumission ligne à ligne : POST `/providers/{id}/contacts` (nouveaux) / PATCH `/provider_contacts/{id}` (existants), erreurs 422 collectées par index (`contactErrors`), pas d'arrêt au premier échec (ERP-101). - Cas « onglet 100 % vide » géré : on soumet une amorce pour déclencher la 422 RG-3.04 inline plutôt que de finaliser un onglet vide.
tristan changed target branch from feature/ERP-141-page-ajouter-prestataire to develop 2026-06-15 08:59:43 +00:00
tristan force-pushed feature/ERP-142-onglet-contact-prestataire from 8e24405423 to ad4bbab372 2026-06-15 09:02:09 +00:00 Compare
tristan added 1 commit 2026-06-15 09:04:58 +00:00
feat(front) : onglet contact prestataire
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m41s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m20s
564114b265
tristan force-pushed feature/ERP-142-onglet-contact-prestataire from ad4bbab372 to 564114b265 2026-06-15 09:04:58 +00:00 Compare
tristan merged commit c1e45cd582 into develop 2026-06-15 09:05:07 +00:00
tristan deleted branch feature/ERP-142-onglet-contact-prestataire 2026-06-15 09:05:08 +00:00
Sign in to join this conversation.