M1 · 2/3 (Front) — Retirer le bloc contact principal des ecrans Client #57

Merged
tristan merged 4 commits from refactor/refonte-contact-suppression-inline-front into develop 2026-06-03 14:48:56 +00:00
Owner

Objectif

Retirer le bloc « contact principal » (Nom, Prénom, Téléphone, Téléphone 2, Email) des trois écrans Client — création, consultation, modification — ainsi que des types, mappeurs, validations et clés i18n associés. La saisie des contacts passe désormais exclusivement par l'onglet Contacts (ClientContactBlock, inchangé).

Dépend du ticket 1/3 (back) : l'API ne renvoie/n'accepte plus ces 5 champs sur client. Contexte : docs/specs/M1-clients/refonte-contact/README.md.

Changements

  • pages/clients/new.vue : bloc principal réduit à Nom entreprise / Catégories / Relation / Triage. Suppression de main.firstName/lastName/email, mainPhones, addMainPhone(), prefillFirstContact(). isMainValid ne dépend plus que de companyName + ≥ 1 catégorie + relation valide. Payload POST et ClientResponse nettoyés.
  • pages/clients/[id]/edit.vue : mêmes champs retirés, isMainValid simplifié.
  • pages/clients/[id]/index.vue : affichage lecture seule des 5 champs retiré.
  • utils/clientEdit.ts : MainFormDraft, mapMainDraft(), buildMainPayload() débarrassés des 5 champs + hasSecondaryPhone.
  • utils/clientConsultation.ts : ClientDetail débarrassé des champs inline (ContactRead conservé).
  • i18n/locales/fr.json : clés form.main.firstName/lastName/email/phonePrimary/phoneSecondary/addPhone supprimées. form.contact.* conservé.
  • Tests : clientEdit.spec.ts ajusté (factory, MAIN_KEYS, assertions mapMainDraft, test téléphone secondaire obsolète retiré).

Vérifications

  • make nuxt-test : suites clientEdit / clientConsultation / clientFormRules vertes. Les 2 échecs restants (useClientReferentials.spec.ts, libellé de site) sont pré-existants sur develop (confirmé par git stash), sans rapport avec ce ticket.
  • eslint sur les fichiers touchés : OK, aucun import/variable mort.
  • Zéro référence orpheline aux clés form.main.* supprimées ; JSON i18n valide.

Reste à faire

  • Golden path navigateur (création → consultation → modification sans bloc inline) à valider manuellement.
## Objectif Retirer le bloc « contact principal » (Nom, Prénom, Téléphone, Téléphone 2, Email) des trois écrans Client — **création**, **consultation**, **modification** — ainsi que des types, mappeurs, validations et clés i18n associés. La saisie des contacts passe désormais exclusivement par l'onglet **Contacts** (`ClientContactBlock`, inchangé). Dépend du ticket **1/3 (back)** : l'API ne renvoie/n'accepte plus ces 5 champs sur `client`. Contexte : `docs/specs/M1-clients/refonte-contact/README.md`. ## Changements - **`pages/clients/new.vue`** : bloc principal réduit à Nom entreprise / Catégories / Relation / Triage. Suppression de `main.firstName/lastName/email`, `mainPhones`, `addMainPhone()`, `prefillFirstContact()`. `isMainValid` ne dépend plus que de `companyName` + ≥ 1 catégorie + relation valide. Payload POST et `ClientResponse` nettoyés. - **`pages/clients/[id]/edit.vue`** : mêmes champs retirés, `isMainValid` simplifié. - **`pages/clients/[id]/index.vue`** : affichage lecture seule des 5 champs retiré. - **`utils/clientEdit.ts`** : `MainFormDraft`, `mapMainDraft()`, `buildMainPayload()` débarrassés des 5 champs + `hasSecondaryPhone`. - **`utils/clientConsultation.ts`** : `ClientDetail` débarrassé des champs inline (`ContactRead` conservé). - **`i18n/locales/fr.json`** : clés `form.main.firstName/lastName/email/phonePrimary/phoneSecondary/addPhone` supprimées. `form.contact.*` conservé. - **Tests** : `clientEdit.spec.ts` ajusté (factory, `MAIN_KEYS`, assertions `mapMainDraft`, test téléphone secondaire obsolète retiré). ## Vérifications - `make nuxt-test` : suites `clientEdit` / `clientConsultation` / `clientFormRules` vertes. Les 2 échecs restants (`useClientReferentials.spec.ts`, libellé de site) sont **pré-existants** sur `develop` (confirmé par `git stash`), sans rapport avec ce ticket. - `eslint` sur les fichiers touchés : OK, aucun import/variable mort. - Zéro référence orpheline aux clés `form.main.*` supprimées ; JSON i18n valide. ## Reste à faire - Golden path navigateur (création → consultation → modification sans bloc inline) à valider manuellement.
tristan added the type/refactorfrontM1-Client labels 2026-06-03 14:13:58 +00:00
tristan added 1 commit 2026-06-03 14:13:58 +00:00
refactor(front) : retirer le bloc contact principal des ecrans client
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m48s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Failing after 56s
3b2b441e5f
Les 5 champs inline (nom, prenom, telephones, email) sont retires des ecrans
creation / consultation / modification du Client. Les coordonnees sont saisies
exclusivement dans l'onglet Contacts (ClientContactBlock). Types, mappeurs,
validations, payloads et cles i18n form.main.* associes nettoyes ; tests Vitest
clientEdit ajustes.

Ticket M1 2/3 (front), refonte-contact.
tristan added 1 commit 2026-06-03 14:17:45 +00:00
fix(front) : option vide sur le select Distributeur / Courtier
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m51s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Failing after 54s
13266681e2
Sans option vide, une fois une relation selectionnee on ne pouvait plus revenir
a « aucune relation ». Ajoute l'option « Aucun » (value null) via
empty-option-label sur les ecrans creation et modification ; onRelationChange
gere deja le retour a null (reset des FK distributor/broker).
tristan added 1 commit 2026-06-03 14:21:41 +00:00
fix(front) : afficher le champ relation vide en consultation
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m4s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Failing after 52s
cf750b5f19
En consultation, le select Distributeur / Courtier etait masque (v-if) quand
aucune relation n'etait posee, ce qui le faisait disparaitre alors que les
autres onglets affichent leurs champs meme vides. Le select est desormais
toujours visible (vide = « Aucun »), aligne sur le mode edition. Le nom du
distributeur/courtier reste conditionnel (libelle type-dependant).
tristan added 1 commit 2026-06-03 14:43:10 +00:00
test(front) : maj test referentiel sites (libelle = departement)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m46s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m21s
435aa8f03e
Le mapping du libellé de site est passé au numéro de département
(postalCode.slice(0,2)) en ERP-66 (#52) sans mise à jour de ce test, qui
attendait encore le name. Le mock fournit desormais un postalCode et attend le
departement. Echec pre-existant sur develop, sans lien avec la refonte-contact.
tristan merged commit ec952896ba into develop 2026-06-03 14:48:56 +00:00
tristan deleted branch refactor/refonte-contact-suppression-inline-front 2026-06-03 14:48:56 +00:00
Sign in to join this conversation.