Correctifs post-review M2 fournisseurs (P1 + P2/P3 + alignement M1) #74

Merged
malio merged 11 commits from fix/review-m2-correctifs into develop 2026-06-08 08:47:43 +00:00
Owner

Correctifs issus de la review lead du stack M2 fournisseurs (ERP-84→113), répartis en priorités. Base : develop. Suite verte : make test 577 tests / 2475 assertions, php-cs-fixer 0 correction.

P1 — défauts bloquants

  • ERP-89 — Le message de complétude Information ne fuit plus le nom de champ technique ((champ "%s") retiré). Correction miroir appliquée aux deux validators (Supplier + Client), accent uniformisé. Le propertyPath est conservé pour le mapping inline front.
  • ERP-112 — La fixture fournisseurs résout désormais la catégorie en filtrant sur le type FOURNISSEUR (via CategoryInterface::getCategoryTypeCode()), évitant de rattacher une catégorie homonyme d'un autre type (RG-2.10).
  • ERP-113 — Tests d'export complétés : dédup F3 (fournisseur multi-catégories rendu sur une seule ligne) ; gating SIREN prouvé via un utilisateur minimal non-admin portant suppliers.view + suppliers.accounting.view (nouveau helper createUserWithPermissions).

P2 / P3

  • ERP-86maxMessage explicite sur competitors (Supplier).
  • ERP-92 — Garde skipIfSitesModuleDisabled() sur le test POST adresse sans site (évite un faux positif si le module Sites est désactivé).
  • ERP-89 bis — Nouveau test : Admin authentifié non-Commerciale + Information incomplète → 200 (distinct du cas user=null).
  • ERP-85down() de la migration fournisseurs en DROP TABLE IF EXISTS.
  • ERP-87 — Reset de la mémoïsation payload en début de process() du SupplierProcessor + documentation du filtre ?archivedOnly de l'export (parité avec le provider liste).
  • spec-back.md (M2) — Alignée sur le code (le code fait foi) : security PATCH manage or accounting.manage, gating accounting par ajout de groupe (SupplierReadGroupContextBuilder), anti-N+1 via hydrateListCollections (pas de fetch-join), types de colonnes réels (IDENTITY / TIMESTAMP(0)).

Alignement M1 ↔ M2

  • ERP-86/87 (Client) — Mêmes corrections appliquées aux jumeaux M1 : message competitors explicite + reset mémoïsation ClientProcessor.

Décision actée

  • RG-2.10 (catégorie) : court-circuit conservé (une seule violation sur categories). Les violations partageant path + message sont fusionnées côté front ; ERP-101 (toutes les erreurs en un aller-retour) est déjà respecté car le Callback n'interrompt pas la validation des autres champs.
Correctifs issus de la review lead du stack M2 fournisseurs (ERP-84→113), répartis en priorités. Base : `develop`. Suite verte : `make test` 577 tests / 2475 assertions, `php-cs-fixer` 0 correction. ## P1 — défauts bloquants - **ERP-89** — Le message de complétude Information ne fuit plus le nom de champ technique (`(champ "%s")` retiré). Correction miroir appliquée aux deux validators (Supplier + Client), accent uniformisé. Le `propertyPath` est conservé pour le mapping inline front. - **ERP-112** — La fixture fournisseurs résout désormais la catégorie en filtrant sur le type `FOURNISSEUR` (via `CategoryInterface::getCategoryTypeCode()`), évitant de rattacher une catégorie homonyme d'un autre type (RG-2.10). - **ERP-113** — Tests d'export complétés : dédup F3 (fournisseur multi-catégories rendu sur une seule ligne) ; gating SIREN prouvé via un utilisateur minimal non-admin portant `suppliers.view` + `suppliers.accounting.view` (nouveau helper `createUserWithPermissions`). ## P2 / P3 - **ERP-86** — `maxMessage` explicite sur `competitors` (Supplier). - **ERP-92** — Garde `skipIfSitesModuleDisabled()` sur le test POST adresse sans site (évite un faux positif si le module Sites est désactivé). - **ERP-89 bis** — Nouveau test : Admin authentifié non-Commerciale + Information incomplète → 200 (distinct du cas `user=null`). - **ERP-85** — `down()` de la migration fournisseurs en `DROP TABLE IF EXISTS`. - **ERP-87** — Reset de la mémoïsation payload en début de `process()` du SupplierProcessor + documentation du filtre `?archivedOnly` de l'export (parité avec le provider liste). - **spec-back.md (M2)** — Alignée sur le code (le code fait foi) : security PATCH `manage or accounting.manage`, gating accounting par ajout de groupe (`SupplierReadGroupContextBuilder`), anti-N+1 via `hydrateListCollections` (pas de fetch-join), types de colonnes réels (`IDENTITY` / `TIMESTAMP(0)`). ## Alignement M1 ↔ M2 - **ERP-86/87 (Client)** — Mêmes corrections appliquées aux jumeaux M1 : message `competitors` explicite + reset mémoïsation `ClientProcessor`. ## Décision actée - **RG-2.10 (catégorie)** : court-circuit conservé (une seule violation sur `categories`). Les violations partageant path + message sont fusionnées côté front ; ERP-101 (toutes les erreurs en un aller-retour) est déjà respecté car le Callback n'interrompt pas la validation des autres champs.
matthieu added 10 commits 2026-06-08 08:32:10 +00:00
matthieu added the backdbM2-Fournisseurtype/docstype/fixtype/test labels 2026-06-08 08:32:26 +00:00
malio added 1 commit 2026-06-08 08:47:27 +00:00
Merge branch 'develop' into fix/review-m2-correctifs
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m59s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m9s
e9af495d39
malio merged commit 9cda225bdf into develop 2026-06-08 08:47:43 +00:00
malio deleted branch fix/review-m2-correctifs 2026-06-08 08:47:43 +00:00
Sign in to join this conversation.