8fae987e15
Auto Tag Develop / tag (push) Successful in 6s
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>
48 lines
2.3 KiB
Markdown
48 lines
2.3 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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.
|