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>
3.5 KiB
Amendement des tickets M2 existants — suppression du contact inline du Supplier
Les 14 tickets M2 (n° 84–97, groupe Lesstime « M2 — Répertoire fournisseurs ») ont été
rédigés sur le modèle initial avec contact inline. La décision refonte-contact les
amende : Supplier ne porte plus les 5 champs firstName/lastName/phonePrimary/ phoneSecondary/email ; les contacts vivent uniquement dans SupplierContact (onglet
Contacts). Comme M2 n'est pas codé, il suffit de ne jamais créer ces colonnes/champs.
Bandeau injecté en tête des tickets impactés
⚠️ AMENDEMENT 2026-06-03 — refonte-contact. Le contact principal inline est supprimé du
Supplier: ne pas créer/saisir les colonnes ni les champsfirstName,lastName,phonePrimary,phoneSecondary,Supplier. Les contacts sont gérés uniquement viaSupplierContact(onglet Contacts). RG-2.01 et RG-2.02 sont supprimées (équivalent assuré par RG-2.04 / RG-2.13). RG-2.12 ne s'applique qu'àcompanyName+SupplierContact. Décisions transverses recherche (D1) et export (D2) : cf.docs/specs/M1-clients/refonte-contact/README.md.
Tickets à amender
Back
| Ticket | n° | Impact |
|---|---|---|
| migration BDD M2 (supplier + sous-collections) | #85 | Retirer first_name/last_name/phone_primary/phone_secondary/email du CREATE TABLE supplier et leurs COMMENT ON COLUMN. supplier_contact inchangé. |
| entités + repositories M2 | #86 | Supplier : retirer les 5 props + Assert\Callback RG-2.01. SupplierContact inchangé. |
| SupplierProvider + SupplierProcessor | #87 | Retirer la validation RG-2.01, la normalisation des champs inline, leur présence dans MAIN_FIELDS / changedFields. Recherche selon D1. |
| export XLSX fournisseurs | #91 | Colonnes contact selon D2 (depuis le contact principal, ou supprimées). |
| tests PHPUnit M2 | #92 | RG-2.01/2.02 testées sur SupplierContact (pas Supplier) ; contrat de sérialisation sans les 5 champs inline sur le supplier. |
Front
| Ticket | n° | Impact |
|---|---|---|
page Ajouter un fournisseur (/suppliers/new) + useSupplierForm |
#94 | Retirer le bloc contact principal du formulaire + le pré-remplissage du 1er contact. Saisie des coordonnées dans l'onglet Contacts. |
page Consultation fournisseur (/suppliers/{id}) |
#95 | Retirer l'affichage du bloc contact principal. |
page Modification fournisseur (/suppliers/{id}/edit) |
#96 | Retirer les 5 champs du bloc principal ; payload supplier:write:main sans ces champs. |
Léger
| Ticket | n° | Impact |
|---|---|---|
| page Répertoire fournisseurs + datatable | #93 | Recherche « nom / contact / email » selon D1. Datatable : colonnes inchangées (pas de contact inline en colonne). |
| i18n + sidebar fournisseurs | #97 | Ne pas créer les clés i18n form.main.firstName/lastName/email/phone* (garder form.contact.*). |
Tickets NON impactés
- #84 (taxonomie FOURNISSEUR), #88 (sous-ressources contacts/adresses/ribs —
SupplierContactest la cible, inchangé), #89 (validators Information Commerciale / catégorie / RG-2.07-2.08), #90 (RBAC fournisseurs).
Méthode d'amendement
Pour chaque ticket impacté : préfixer la description existante du bandeau ci-dessus
(sans rien supprimer du contenu d'origine), via mcp__lesstime__update-task
(description = bandeau + description actuelle). La méthode préserve l'historique et reste
réversible (retirer le bandeau).