Refactor error handling and enhance API interactions across Filament pages

- Introduced `ApiErrorTranslator` to normalize and translate API error messages, providing clearer feedback in French.
- Updated all Filament pages (Articles, Documents, Divers, Journaux, Tiers, TablesExplorer) to utilize the new error translation mechanism, improving user experience during API interactions.
- Added validation for required fields before API calls, ensuring users receive immediate feedback when mandatory inputs are missing.
- Implemented tracking properties to distinguish between "never searched" and "searched without results," enhancing the user interface.
- Removed the obsolete `$results` property from the Articles page and added a new `$barcode` property to align with API requirements.
- Updated documentation to reflect changes in API behavior and error handling, including new metadata returned by the `art_list` endpoint.
- Added new tests to verify the functionality of the barcode handling and validation logic.
This commit is contained in:
2026-02-23 10:15:17 +01:00
parent 7df94b64fa
commit bb1bbc2904
29 changed files with 1075 additions and 157 deletions

View File

@@ -1,6 +1,6 @@
# Progress
Dernière mise à jour : 2026-02-21
Dernière mise à jour : 2026-02-23
## Ce qui fonctionne
@@ -35,6 +35,20 @@ Dernière mise à jour : 2026-02-21
- [x] `README.md` créé
- [x] Formatage Pint validé
- [x] CI GitHub Actions (lint + tests)
- [x] `ApiErrorTranslator` créé (`app/Support/ApiErrorTranslator.php`) : normalisation et traduction des erreurs API
- [x] Composant `error-banner` amélioré (supporte `nl2br` pour les explications)
- [x] Composant `json-block` amélioré (prop `$searched` + état vide)
- [x] Badge de comptage corrigé (`count($data)` au lieu de `$metadata['rowcount']`)
- [x] Validation des champs obligatoires sur toutes les pages API (messages en français)
- [x] Propriétés de tracking (`$hasSearched`, etc.) sur toutes les pages
- [x] `ApiErrorTranslator` intégré dans toutes les pages API (Articles, Documents, Divers, Journaux, Tiers, TablesExplorer)
- [x] 4 nouveaux fichiers de tests : ArticlesPageTest, JournauxPageTest, TiersPageTest, ApiErrorTranslatorTest
- [x] Tests existants mis à jour (DiversPageTest, DocumentsPageTest) avec validation et tracking
- [x] Investigation paramètre `results` : sans effet sur `art_list` (5 max) et `third_list` (10 max), limite fixe côté serveur
- [x] Investigation paramètre `barcode` : sans effet observable sur `art_list`, `search` reste obligatoire
- [x] Page Articles : `$results` supprimé, `$barcode` ajouté, formulaire mis à jour
- [x] Documentation `art_list` et `third_list` corrigée (métadonnées réelles, paramètres inefficaces documentés)
- [x] 2 nouveaux tests barcode dans ArticlesPageTest (envoi quand renseigné, omission quand vide)
## Ce qui reste à faire
@@ -48,13 +62,16 @@ Dernière mise à jour : 2026-02-21
- Le test `FilamentDashboardTest > it displays project statistics` échoue car le dashboard ne contient pas la section "Endpoints API" / "Tables accessibles" / "Pages Filament" / "Tests Pest". Le test a été créé avant la refonte du dashboard.
- L'erreur `SQLSTATE[HY000] [1049] Unknown database` peut apparaître lors de `composer update` si la base n'est pas encore créée (script `boost:update`). Sans impact une fois la base créée.
- L'API retourne chaque colonne en double dans `column_list`. Le `TablesExplorer` déduplique côté client.
- Le paramètre `results` n'a aucun effet sur `art_list` (toujours 5 max) ni sur `third_list` (toujours 10 max). Limite fixe côté serveur.
- Le paramètre `barcode` n'a aucun effet observable sur `art_list`. Le paramètre `search` reste obligatoire même avec `barcode`.
## Métriques
- Tests : 84 passent, 1 en échec pré-existant (205 assertions)
- Tests : 124 passent, 1 en échec pré-existant
- Pages Filament : 7 (Documentation, TablesExplorer, Articles, Documents, Journaux, Tiers, Divers)
- Composants Blade design system : 10
- Endpoints API couverts par LogisticsService : 19
- Endpoints accessibles depuis l'interface : 19 (dont 2 non fonctionnels)
- Migrations : 5 (users, cache, jobs, two_factor, api_request_logs)
- Règles Cursor : 4 (laravel-boost, memory-bank, design-system, update-documentation)
- Classes support : 1 (ApiErrorTranslator)