Files
logisticsAPI/memory-bank/progress.md
Marvin bc82299aa6 Enhance API parameter documentation and introduce reusable component
- Added a new Blade component `<x-logistics.param-table>` for displaying API parameter tables across all Filament pages, ensuring consistent styling and reducing HTML duplication.
- Integrated parameter tables for each endpoint in the Articles, Documents, Divers, Journaux, Tiers, and other pages, providing users with clear reference information.
- Updated the documentation to reflect the new structure and details of API parameters, including required fields and descriptions.
- Improved user experience by ensuring that endpoints without parameters do not display empty tables.
- Overall, enhanced the clarity and usability of API interactions within the application.
2026-02-23 13:55:00 +01:00

9.2 KiB

Progress

Dernière mise à jour : 2026-02-23

Ce qui fonctionne

  • Projet Laravel 12 initialisé (livewire-starter-kit)
  • Livewire 4 + Flux UI Free v2 installés
  • Fortify installé (authentification existante, non utilisée par Filament)
  • Documentation API rédigée avec accents (documentation/documentation_api_logistics.md)
  • Memory bank créé et structuré (memory-bank/, .cursor/rules/memory-bank.mdc)
  • Configuration API Logistics (.env, config/logistics.php) avec timeout et retry
  • LogisticsService créé (app/Services/LogisticsService.php) avec 19 méthodes, timeout, retry, gestion d'erreur
  • LogisticsApiException créée (app/Exceptions/LogisticsApiException.php) avec messages français
  • Migration api_request_logs créée
  • Filament v5.0.0 installé et configuré sans authentification
  • 7 pages Filament créées : Documentation, TablesExplorer, Articles, Documents, Journaux, Tiers, Divers
  • 7 vues Blade associées dans resources/views/filament/pages/
  • Toggle Lecture/Ecriture sur toutes les pages entité (Articles, Documents, Journaux, Tiers, Divers)
  • Page Documents : 9 endpoints couverts (7 lecture + 2 écriture)
  • Page Divers : 3 endpoints couverts (2 lecture + 1 écriture fonctionnel en MODE=1 Restock)
  • Gestion d'erreur dans toutes les pages Filament (LogisticsApiException + Throwable)
  • Logging des requêtes API réussies et échouées dans api_request_logs
  • Système de design unifié : 11 composants Blade dans resources/views/components/logistics/
  • Convention de design documentée dans .cursor/rules/design-system.mdc
  • Toutes les pages Filament utilisent les composants x-logistics.*
  • Thème Filament personnalisé (resources/css/filament/admin/theme.css)
  • Plugin @tailwindcss/typography activé pour le rendu prose
  • Styles .documentation-prose personnalisés pour le dark mode
  • TablesExplorer amélioré : selectTable, déduplication colonnes, filtre, badges de types
  • Page Documentation avec rendu markdown stylisé et export PDF
  • Connectivité API fonctionnelle (serveur tse-10-test.esi.local)
  • Convention d'écriture avec accents français appliquée
  • README.md créé
  • Formatage Pint validé
  • CI GitHub Actions (lint + tests)
  • ApiErrorTranslator créé (app/Support/ApiErrorTranslator.php) : normalisation et traduction des erreurs API
  • Composant error-banner amélioré (supporte nl2br pour les explications)
  • Composant json-block amélioré (prop $searched + état vide)
  • Badge de comptage corrigé (count($data) au lieu de $metadata['rowcount'])
  • Validation des champs obligatoires sur toutes les pages API (messages en français)
  • Propriétés de tracking ($hasSearched, etc.) sur toutes les pages
  • ApiErrorTranslator intégré dans toutes les pages API (Articles, Documents, Divers, Journaux, Tiers, TablesExplorer)
  • 4 nouveaux fichiers de tests : ArticlesPageTest, JournauxPageTest, TiersPageTest, ApiErrorTranslatorTest
  • Tests existants mis à jour (DiversPageTest, DocumentsPageTest) avec validation et tracking
  • Investigation paramètre results : sans effet sur art_list (5 max) et third_list (10 max), limite fixe côté serveur
  • Investigation paramètre barcode : sans effet observable sur art_list, search reste obligatoire
  • Page Articles : $results supprimé, $barcode ajouté, formulaire mis à jour
  • Documentation art_list et third_list corrigée (métadonnées réelles, paramètres inefficaces documentés)
  • 2 nouveaux tests barcode dans ArticlesPageTest (envoi quand renseigné, omission quand vide)
  • Investigation complète des 9 endpoints Documents (appels API réels, structures de réponse, formats)
  • Document_GetPDF reclassé comme fonctionnel (LAYOUT numérique en string, ex: "1")
  • Format de date YYYY-MM-DD confirmé et documenté pour tous les endpoints avec paramètre date
  • Codes paydelay documentés (10 codes via codes_list PAYDELAY : 30, 30F, 45F, 50, 60, 60F, 75F, 90, 90F, 0F)
  • Modes de paiement documentés (codes_list PAYMODE : CAS, VIR, BC, CBEF)
  • Paramètre results ajouté à document_list (fonctionne, défaut ~108)
  • Documents.php : propriété $results ajoutée, transmise en string à l'API
  • documents.blade.php : champ results ajouté, bandeau "non fonctionnel" retiré de GetPDF, placeholder LAYOUT mis à jour
  • Documentation API massivement enrichie (réponses réelles, structures détaillées, section endpoints partiellement fonctionnels)
  • 1 nouveau test Pest (results envoyé en string à document_list)
  • Investigation complète des 2 endpoints Tiers (appels API réels)
  • third_list : colonnes de recherche confirmées (name,groupid,vat, pas custid), colonnes valides documentées (15 colonnes), colonne custname invalide
  • third_GetArtHistory : structure de réponse documentée (8 champs), casse thirdid obligatoire, retourne tout l'historique sans limite
  • Tiers.php : valeur par défaut $select corrigée de custid,custname à custid,name
  • tiers.blade.php : placeholder du champ select mis à jour
  • Documentation third_list et third_GetArtHistory massivement enrichie (colonnes valides, métadonnées, exemples de réponse, structure de réponse)
  • 3 nouvelles remarques dans la documentation (colonnes third_list vs column_list/cust, colonnes de recherche, casse thirdid)
  • 7 nouveaux tests Pest dans TiersPageTest (total : 15 tests)
  • Investigation complète des 3 endpoints Divers (appels API réels)
  • getserialnumber : structure de réponse documentée (objet { "getserialnumber": "..." }, pas une chaîne)
  • codes_list : correspondance exacte (pas préfixe), sensible à la casse, chaîne vide = liste maître (42 groupes), signification des champs documentée
  • custom_geninv_updatestock reclassé comme FONCTIONNEL (MODE=1 Restock). STKID = code de dépôt. THIRDID obligatoire en Restock. QTY négatif possible.
  • Divers.php : ajout THIRDID, valeur par défaut MODE=1, validation améliorée
  • divers.blade.php : bandeau mis à jour, champ THIRDID, labels corrigés
  • Documentation enrichie : getserialnumber (structure réponse), codes_list (2 modes, groupes, champs), custom_geninv_updatestock (reclassé, 7 paramètres, modes, erreurs). Section "Endpoints non fonctionnels" supprimée. 4 nouvelles remarques.
  • 12 nouveaux tests Pest dans DiversPageTest (total : 22 tests)
  • Composant <x-logistics.param-table> créé : tableau de référence des paramètres API réutilisable
  • Tableaux de paramètres ajoutés sous chaque endpoint de toutes les pages (17 endpoints au total)
  • Tableau brut HTML de custom_geninv_updatestock refactorisé vers le composant param-table

Ce qui reste à faire

  • Corriger les tests pré-existants FilamentDashboardTest (2 tests en échec)
  • Vérifier le rendu visuel de toutes les pages avec de vraies données API
  • Éventuellement : pagination / tri côté client pour les grands tableaux
  • Éventuellement : page de consultation des logs API

Problèmes connus

  • 2 tests FilamentDashboardTest échouent car le dashboard ne contient pas les sections attendues. Tests créés 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. En revanche, results fonctionne sur document_list et jnl_list.
  • Le paramètre barcode n'a aucun effet observable sur art_list. Le paramètre search reste obligatoire même avec barcode.
  • La colonne custname n'existe pas dans third_list. Le nom du tiers est dans la colonne name. Beaucoup de colonnes de la table cust (visibles dans column_list/cust) ne sont pas acceptées par third_list dans le paramètre select.
  • third_GetArtHistory retourne l'intégralité de l'historique sans pagination (potentiellement des milliers d'éléments), ce qui peut être lent pour certains tiers.
  • custom_geninv_updatestock MODE=0 (Inventaire) dépend de la configuration des journaux KI du dossier. Dans le dossier de test, aucun journal KI n'est configuré pour les dépôts "A" ou "SG", ce qui rend MODE=0 non fonctionnel dans cet environnement.

Métriques

  • Tests : 147 passent, 2 en échec pré-existant
  • Pages Filament : 7 (Documentation, TablesExplorer, Articles, Documents, Journaux, Tiers, Divers)
  • Composants Blade design system : 11 (card, section-header, error-banner, stat-bar, stat-item, data-table, empty-state, search-input, form-field, json-block, param-table)
  • Endpoints API couverts par LogisticsService : 19
  • Endpoints accessibles depuis l'interface : 19 (tous fonctionnels, MODE=0 de custom_geninv_updatestock dépend de la config)
  • 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)