feat(transport) : page répertoire transporteurs (ERP-164) #121

Open
tristan wants to merge 4 commits from feat/erp-164-carriers-list into develop
Owner

Liste /carriers + filtres + export. Ticket ERP-164.

Liste /carriers + filtres + export. Ticket ERP-164.
tristan added 1 commit 2026-06-16 14:21:29 +00:00
feat(transport) : page répertoire transporteurs (ERP-164)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m54s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m33s
1ef4215ebf
tristan added the frontM4-Transporteurtype/feat labels 2026-06-16 14:22:03 +00:00
tristan added 1 commit 2026-06-16 14:30:42 +00:00
feat(transport) : filtres checkbox, toggle « Voir les archivés », transporteurs dans Administration (ERP-164)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 3m9s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m36s
8046de76c6
Author
Owner

Pourquoi le back est modifié sur ce ticket front (ERP-164)

La sidebar/navbar est pilotée par le back (source de vérité unique : config/sidebar.php, cf. .claude/rules/architecture.md). Le front la consomme via /api/sidebar et n'a pas le droit de la hardcoder (règle frontend). Déplacer le répertoire transporteurs dans la section Administration (1er item) et corriger l'icône de section (mdi:cog-outlinemdi:file-settings-cog-outline) impose donc d'éditer config/sidebar.php — il n'existe aucune voie front-only.

Détail des modifs back :

  • config/sidebar.php : suppression de la section dédiée « Transport » ; l'item /carriers (route inchangée, gate transport.carriers.view, module owner transport) devient le premier item de la section Administration, dont l'icône passe à mdi:file-settings-cog-outline.

Ce qui n'a PAS bougé côté back :

  • Le toggle « Voir les archivés » n'a nécessité aucune modif back : CarrierProvider et CarrierExportController supportaient déjà ?archivedOnly=true (n'affiche que les archives, aligné M1/M2/M3). Le front a simplement basculé de includeArchived vers archivedOnly.
  • Aucune permission RBAC modifiée → les 3 miroirs RBAC restent alignés. Le test E2E sidebar-visibility.spec.ts n'est pas impacté : il n'énumère que les liens /admin/<slug> (ALL_ADMIN_LINKS), or /carriers est hors de ce préfixe — expectedAdminLinks reste donc inchangé (commentaire personas.ts mis à jour pour refléter le nouvel emplacement).

Autres ajustements (front) de cette révision :

  • Filtre certification désormais en cases à cocher individuelles (MalioCheckbox), pattern identique au filtre Catégories du répertoire clients.
### Pourquoi le back est modifié sur ce ticket front (ERP-164) La sidebar/navbar est **pilotée par le back** (source de vérité unique : `config/sidebar.php`, cf. `.claude/rules/architecture.md`). Le front la consomme via `/api/sidebar` et n'a **pas le droit de la hardcoder** (règle frontend). Déplacer le répertoire transporteurs dans la section **Administration** (1er item) et corriger l'icône de section (`mdi:cog-outline` → `mdi:file-settings-cog-outline`) **impose donc d'éditer `config/sidebar.php`** — il n'existe aucune voie front-only. **Détail des modifs back :** - `config/sidebar.php` : suppression de la section dédiée « Transport » ; l'item `/carriers` (route inchangée, gate `transport.carriers.view`, module owner `transport`) devient le **premier item** de la section **Administration**, dont l'icône passe à `mdi:file-settings-cog-outline`. **Ce qui n'a PAS bougé côté back :** - Le toggle « Voir les archivés » n'a nécessité **aucune** modif back : `CarrierProvider` et `CarrierExportController` supportaient déjà `?archivedOnly=true` (n'affiche que les archives, aligné M1/M2/M3). Le front a simplement basculé de `includeArchived` vers `archivedOnly`. - Aucune permission RBAC modifiée → les 3 miroirs RBAC restent alignés. Le test E2E `sidebar-visibility.spec.ts` n'est pas impacté : il n'énumère que les liens `/admin/<slug>` (`ALL_ADMIN_LINKS`), or `/carriers` est hors de ce préfixe — `expectedAdminLinks` reste donc inchangé (commentaire `personas.ts` mis à jour pour refléter le nouvel emplacement). **Autres ajustements (front) de cette révision :** - Filtre certification désormais en cases à cocher individuelles (`MalioCheckbox`), pattern identique au filtre Catégories du répertoire clients.
tristan added 1 commit 2026-06-16 14:59:28 +00:00
chore(frontend) : bump @malio/layer-ui ^1.7.12 + commentaire useSuppliersRepository
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 3m14s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m31s
597c63bb2e
tristan added 1 commit 2026-06-17 06:40:04 +00:00
Merge remote-tracking branch 'origin/develop' into feat/erp-164-carriers-list
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 3m1s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m20s
45158af920
Author
Owner

Review front — ERP-164 (répertoire transporteurs)

Verdict : mergeable en l'état (réserves mineures, transverses).

Miroir quasi 1:1 de l'écran de référence M2/M3 : filtres en state local (test qui vérifie que l'URL n'est pas modifiée 👍), useApi(), usePaginatedList + MalioDataTable, composants Malio*, export blob, gating RBAC. Bonne couverture Vitest.

Findings

  • MINOR — Un échec de chargement de liste (réseau / 403) affiche silencieusement « Aucun transporteur » au lieu d'un état d'erreur. usePaginatedList expose error/loading non exploités par la page. Comportement identique aux écrans M2/M3 → dette transverse, pas une régression de ce ticket.
  • NIT — Bump @malio/layer-ui ^1.7.10 → ^1.7.12 justifié (consomme MalioDrawer/MalioAccordion/MalioCheckbox). personas.ts n'actualise qu'un commentaire (permissions transport.carriers.* déjà présentes dans develop) → pas de désync RBAC introduite.

Note : PR déclarée contre develop mais c'est une stack ; seul l'incrément develop..erp-164 (front) a été reviewé.

## Review front — ERP-164 (répertoire transporteurs) **Verdict : mergeable en l'état** (réserves mineures, transverses). Miroir quasi 1:1 de l'écran de référence M2/M3 : filtres en state local (test qui vérifie que l'URL n'est pas modifiée 👍), `useApi()`, `usePaginatedList` + `MalioDataTable`, composants `Malio*`, export blob, gating RBAC. Bonne couverture Vitest. **Findings** - **MINOR** — Un échec de chargement de liste (réseau / 403) affiche silencieusement « Aucun transporteur » au lieu d'un état d'erreur. `usePaginatedList` expose `error`/`loading` non exploités par la page. Comportement **identique aux écrans M2/M3** → dette transverse, pas une régression de ce ticket. - **NIT** — Bump `@malio/layer-ui ^1.7.10 → ^1.7.12` justifié (consomme `MalioDrawer`/`MalioAccordion`/`MalioCheckbox`). `personas.ts` n'actualise qu'un commentaire (permissions `transport.carriers.*` déjà présentes dans `develop`) → pas de désync RBAC introduite. > Note : PR déclarée contre `develop` mais c'est une stack ; seul l'incrément `develop..erp-164` (front) a été reviewé.
Some checks are pending
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 3m1s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m20s
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/erp-164-carriers-list:feat/erp-164-carriers-list
git checkout feat/erp-164-carriers-list
Sign in to join this conversation.