Files
Starseed/docs/specs/M1-clients/refonte-contact/M1-ticket-02-front.prompt.md
T
matthieu 8fae987e15
Auto Tag Develop / tag (push) Successful in 6s
docs(commercial) : refonte contact — suppression du contact inline (specs M1 + M2) (#54)
Acte la décision refonte-contact dans les specs : le contact principal inline (firstName/lastName/phonePrimary/phoneSecondary/email) est retiré des entités tiers (Client, Supplier). Les contacts vivent uniquement dans ClientContact / SupplierContact (onglet Contacts). Garantie « >=1 contact nommé » préservée par RG-1.05/1.14 (M1) et RG-2.04/2.13 (M2).

- M1 (spec-back/spec-front/cahier) : modèle Client sans contact inline ; RG-1.01/1.02 supprimées ; D1 (recherche) / D2 (export) décrites ; version V1.
- M2 (spec-back/spec-front) : FICHIERS NOUVEAUX (non versionnés sur develop), introduits déjà corrigés (Supplier sans contact inline, RG-2.01/2.02 supprimées) ; version V0.2.
- docs/specs/M1-clients/refonte-contact/ : décision (README) + tickets (M1 back/front/specs, M2 specs) + prompts + amendement des tickets M2.

Lesstime : tâches #103 (M1 back), #104 (M1 front), #105 (M1 specs), #106 (M2 specs) ; tickets M2 #85-#97 amendés.
---------

Co-authored-by: Matthieu <contact@malio.fr>
Reviewed-on: #54
Co-authored-by: THOLOT DECHENE Matthieu <matthieu@yuno.malio.fr>
Co-committed-by: THOLOT DECHENE Matthieu <matthieu@yuno.malio.fr>
2026-06-03 13:16:11 +00:00

2.3 KiB

Prompt d'implémentation — M1 · Ticket 2/3 (Frontend)

Projet Starseed (Nuxt 4 / Vue 3 Composition API / TypeScript / @malio/layer-ui). Lis CLAUDE.md et .claude/rules/frontend.md avant de coder. Commentaires en français, code en anglais, 4 espaces d'indentation.

Mission

Retirer le bloc « contact principal » (Nom, Prénom, Téléphone, Téléphone 2, Email) des écrans Client (création / consultation / modification) et de tout le code associé (types, mappeurs, validations, i18n). Les contacts restent gérés par l'onglet Contacts (ClientContactBlock, inchangé).

Spec détaillée : docs/specs/M1-clients/refonte-contact/M1-ticket-02-front.md (lis-la en entier + le README.md du dossier). Ce ticket dépend du ticket back (l'API ne porte plus les 5 champs sur client).

Étapes

  1. Explorer frontend/modules/commercial/ : pages/clients/new.vue, [id]/edit.vue, [id]/index.vue, types/clientForm.ts, types/clientConsultation.ts, utils/clientEdit.ts, utils/clientConsultation.ts, i18n/locales/fr.json.
  2. Supprimer le bloc principal des 3 écrans + l'état réactif main.firstName/lastName/email, mainPhones, prefillFirstContact().
  3. Adapter isMainValid : ne dépend plus que de companyName (+ relation/catégories selon l'existant). La garantie « ≥ 1 contact valide » reste portée par l'onglet Contacts.
  4. Nettoyer les types (MainFormDraft, ClientDetail) et les mappeurs (mapMainDraft, buildMainPayload, clientConsultation).
  5. Retirer les clés i18n form.main.firstName/lastName/email/phonePrimary/phoneSecondary/addPhone ; vérifier par recherche qu'aucune vue ne les utilise plus. Garder form.contact.*.
  6. Mettre à jour les specs Vitest (clientFormRules, clientEdit, clientConsultation).

Garde-fous

  • useApi() uniquement ; composants Malio* uniquement ; pas d'état tableau dans l'URL.
  • Ne touche pas ClientContactBlock.vue, l'onglet Contacts, ni la liste/répertoire.
  • Pas de normalisation front (le serveur normalise).

Vérification finale

make nuxt-test            # Vitest vert
make dev-nuxt             # port 3004 — golden path manuel

Golden path à vérifier dans le navigateur : créer un client (entreprise + 1 contact dans l'onglet Contacts), le consulter, le modifier — sans aucun bloc contact inline.