refactor(commercial) : suppression du contact principal inline du Client (M1 · back 1/3) #55

Merged
malio merged 2 commits from refactor/refonte-contact-suppression-inline-back into develop 2026-06-03 13:52:26 +00:00
Owner

Contexte

M1 · Ticket 1/3 (Backend) de la refonte contact. Le contact principal inline du Client (firstName, lastName, phonePrimary, phoneSecondary, email) faisait doublon avec la sous-entité ClientContact (onglet Contact). Il est supprimé : les contacts vivent désormais uniquement dans client_contact.

RG-1.01 (firstName OU lastName sur Client) et RG-1.02 (max 2 téléphones sur Client) sont supprimées du Client — leur équivalent vit déjà sur ClientContact (RG-1.05 / RG-1.14).

Changements

  • Migration Version20260603120000 (namespace racine DoctrineMigrations — tri par timestamp, cf. AlphabeticalComparator) : backfill des clients sans contact vers client_contact (position 0) avant le DROP des 5 colonnes. down() best-effort documenté.
  • Entité Client : retrait des 5 propriétés + getters/setters + groupes de sérialisation.
  • ClientProcessor : MAIN_FIELDS / changedBusinessFields() / normalize() allégés ; validateMainContact() (RG-1.01) supprimée.
  • Recherche répertoire (D1) : sur companyName seul (les anciens critères lastName/email vivaient sur les colonnes supprimées).
  • Export XLSX (D2) : colonnes de contact retirées (Nom entreprise / Catégories / Sites / [SIREN] / Date).
  • Fixtures + catalogue de commentaires SQL (ColumnCommentsCatalog) alignés.
  • Tests fonctionnels et unitaires mis à jour.

Décisions actées

  • Migration au namespace racine (et non modulaire Commercial) : une migration App\Module\Commercial\… trierait avant le CREATE TABLE client sur base fraîche → casse. Conforme à la règle ABSOLUE n°11.
  • D1 = recherche companyName seul. D2 = retrait des colonnes contact de l'export.

Vérifications

  • make db-reset && make migration-migrate : migration rejouable sur base fraîche (backfill no-op si contacts déjà présents).
  • make test : 466 tests verts.
  • make php-cs-fixer-allow-risky : clean.
  • Contrat réel GET /api/clients/{id} : les 5 champs ont disparu de la racine, contacts[] porte l'info.
## Contexte M1 · Ticket 1/3 (Backend) de la refonte contact. Le contact principal inline du `Client` (firstName, lastName, phonePrimary, phoneSecondary, email) faisait doublon avec la sous-entité `ClientContact` (onglet Contact). Il est supprimé : les contacts vivent désormais **uniquement** dans `client_contact`. RG-1.01 (firstName OU lastName sur Client) et RG-1.02 (max 2 téléphones sur Client) sont **supprimées** du Client — leur équivalent vit déjà sur `ClientContact` (RG-1.05 / RG-1.14). ## Changements - **Migration** `Version20260603120000` (namespace racine `DoctrineMigrations` — tri par timestamp, cf. AlphabeticalComparator) : **backfill** des clients sans contact vers `client_contact` (position 0) **avant** le `DROP` des 5 colonnes. `down()` best-effort documenté. - **Entité `Client`** : retrait des 5 propriétés + getters/setters + groupes de sérialisation. - **`ClientProcessor`** : `MAIN_FIELDS` / `changedBusinessFields()` / `normalize()` allégés ; `validateMainContact()` (RG-1.01) supprimée. - **Recherche répertoire (D1)** : sur `companyName` seul (les anciens critères lastName/email vivaient sur les colonnes supprimées). - **Export XLSX (D2)** : colonnes de contact retirées (Nom entreprise / Catégories / Sites / [SIREN] / Date). - **Fixtures** + **catalogue de commentaires SQL** (`ColumnCommentsCatalog`) alignés. - **Tests** fonctionnels et unitaires mis à jour. ## Décisions actées - **Migration** au namespace racine (et non modulaire Commercial) : une migration `App\Module\Commercial\…` trierait avant le `CREATE TABLE client` sur base fraîche → casse. Conforme à la règle ABSOLUE n°11. - **D1** = recherche `companyName` seul. **D2** = retrait des colonnes contact de l'export. ## Vérifications - ✅ `make db-reset && make migration-migrate` : migration rejouable sur base fraîche (backfill no-op si contacts déjà présents). - ✅ `make test` : 466 tests verts. - ✅ `make php-cs-fixer-allow-risky` : clean. - ✅ Contrat réel `GET /api/clients/{id}` : les 5 champs ont disparu de la racine, `contacts[]` porte l'info.
matthieu added 1 commit 2026-06-03 13:31:34 +00:00
refactor(commercial) : suppression du contact principal inline du Client (M1)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m57s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m13s
74f0f981d8
Le contact principal (firstName, lastName, phonePrimary, phoneSecondary,
email) n'est plus porte par l'entite Client : les contacts vivent uniquement
dans ClientContact (onglet Contact). RG-1.01 et RG-1.02 supprimees du Client
(equivalent RG-1.05 / RG-1.14 sur ClientContact).

- Migration (namespace racine DoctrineMigrations, ordre par timestamp) :
  backfill des clients sans contact vers client_contact (position 0) puis
  DROP des 5 colonnes inline. down() best-effort documente.
- Entite Client : retrait des 5 props + getters/setters + groupes.
- ClientProcessor : MAIN_FIELDS / changedBusinessFields / normalize alleges,
  validateMainContact (RG-1.01) supprimee.
- Recherche repertoire : companyName seul (D1).
- Export XLSX : colonnes de contact retirees (D2).
- Fixtures + catalogue de commentaires SQL alignes.
- Tests fonctionnels et unitaires mis a jour.
matthieu added the backbreakingdbM1-Clienttype/refactor labels 2026-06-03 13:32:00 +00:00
malio added 1 commit 2026-06-03 13:47:28 +00:00
Merge branch 'develop' into refactor/refonte-contact-suppression-inline-back
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m54s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m12s
c1708cd8f5
malio merged commit 96ddd15c86 into develop 2026-06-03 13:52:26 +00:00
Sign in to join this conversation.