- 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.
9.1 KiB
9.1 KiB
Active Context
Dernière mise à jour : 2026-02-23
Travail en cours
Aucun travail en cours.
Changements récents (2026-02-23, session investigation art_list)
- Investigation du paramètre
results: tests systématiques via appels API directs. Le paramètreresultsn'a aucun effet observable surart_list(toujours 5 résultats max) ni surthird_list(toujours 10 résultats max). Testé avec les valeurs 1, 3, 5, 10, 20, en int et en string, et avec omission. La limite est fixée côté serveur et non configurable. - Investigation du paramètre
barcode: tests systématiques via appels API directs. Le paramètrebarcodeest accepté par l'API mais n'a aucun effet observable sur les résultats deart_list. Les données retournées sont strictement identiques avec ou sansbarcode. De plus, le paramètresearchreste obligatoire même quandbarcodeest fourni (l'API retourne "Search terms are required" sinon). - Métadonnées
art_list: l'API retourne des métadonnées spécifiques :rowCount(camelCase),source,executionTimeMs,searchColumns(toujours "artid,name1"),selectColumns,searchTerms. Structure différente de celle documentée initialement. - Page Articles modifiée : propriété
$results(int) supprimée, propriété$barcode(string) ajoutée. Le champ "Nombre de résultats" remplacé par "Code-barres (barcode)" dans le formulaire. - Documentation mise à jour :
WEB-A-1 (3).mdetdocumentation_api_logistics.mdcorrigés pour refléter les comportements réels deresultsetbarcodesurart_listetthird_list. Ajout des métadonnées spécifiques et d'un exemple de réponse complet. - 2 nouveaux tests Pest ajoutés dans
ArticlesPageTest.php: vérification quebarcodeest envoyé quand renseigné, et omis quand vide. - Total : 124 tests passent, 1 test pré-existant en échec (FilamentDashboardTest).
Décisions récentes
- Toggle Lecture/Ecriture (2026-02-21) : Toutes les pages entité (Articles, Documents, Journaux, Tiers, Divers) disposent d'un toggle en haut de page permettant de basculer entre le mode Lecture (endpoints de récupération de données) et le mode Ecriture (endpoints d'envoi de données). Les pages sans endpoint d'écriture (Articles, Journaux, Tiers) affichent un état vide en mode écriture. TablesExplorer ne reçoit pas ce toggle (page de structure).
- Endpoints Documents complétés (2026-02-21) : La page Documents couvre désormais les 9 endpoints documentés : 7 en lecture (document_list, document_detail, Document_GetStatusList, Document_GetUnitPriceAndVat, Document_GetDueDate, Document_GetAttachListThumbnail, Document_GetPDF) et 2 en écriture (document_add, document_mod). Les champs tableaux (Artid, Qty, Saleprice, etc.) sont saisis en texte séparé par virgules et convertis en arrays PHP côté serveur via
splitCsv(). - Page Divers créée (2026-02-21) : Nouvelle page Filament pour les endpoints divers : getserialnumber (lecture), codes_list (lecture), custom_geninv_updatestock (écriture, non fonctionnel).
- Endpoints non fonctionnels dans le service (2026-02-21) : Les méthodes
documentGetPdf()etcustomGeninvUpdatestock()ont été ajoutées au LogisticsService pour permettre le test de ces endpoints depuis l'interface, même s'ils sont non fonctionnels. Un bandeau d'avertissement ambre est affiché dans les formulaires correspondants. - Padding gauche sur les inputs (2026-02-21) : Ajout de
pl-3dans le composantform-field.blade.phppour un meilleur espacement visuel du texte dans les champs de saisie. - Convention d'écriture avec accents (2026-02-20) : Tous les contenus rédigés en français (documentation, memory bank, règles Cursor) doivent utiliser les accents appropriés.
- Page Documentation ajoutée (2026-02-20) : Nouvelle page Filament
Documentationqui affiche le fichier markdown converti en HTML viaStr::markdown(). Actions d'en-tête : télécharger en PDF et ouvrir dans un nouvel onglet. - Système de design unifié (2026-02-20) : 10 composants Blade réutilisables dans
resources/views/components/logistics/avec convention documentée dans.cursor/rules/design-system.mdc. - Filament v5 sans authentification : Le
AdminPanelProvidera été configuré sans->login()et sansauthMiddlewarepour permettre un accès libre au dashboard. - Pages personnalisées plutôt que Resources : L'application interroge une API externe, il n'y a pas de modèles Eloquent à gérer en CRUD.
- LogisticsService : Toutes les interactions avec l'API sont centralisées dans un seul service.
- LogisticsApiException : Exception dédiée créée pour distinguer les erreurs de connexion des erreurs de requête génériques.
Changements récents (2026-02-21, session endpoints manquants)
- 2 méthodes ajoutées à
LogisticsService:documentGetPdf(),customGeninvUpdatestock(). - Page
Documents.phpréécrite avec 9 endpoints (7 lecture + 2 écriture), toggle Lecture/Ecriture, méthodesplitCsv(). - Pages
Articles.php,Journaux.php,Tiers.php: ajout de la propriété$modeet du toggle Lecture/Ecriture. - Page
Divers.phpcréée avec 3 endpoints (getserialnumber, codes_list, custom_geninv_updatestock). - 7 vues Blade mises à jour ou créées : documents, articles, journaux, tiers, divers.
- Composant
form-field.blade.php: ajout depl-3. - 23 nouveaux tests Pest :
DocumentsPageTest.php(13 tests),DiversPageTest.php(8 tests), 2 tests ajoutés dansLogisticsServiceTest.php. - Documentation API mise à jour (références service pour les endpoints non fonctionnels).
- Total : 84 tests passent (205 assertions), 1 test pré-existant en échec (FilamentDashboardTest > it displays project statistics).
Historique
2026-02-20 (session documentation)
- Page Filament
Documentationcréée. - Documentation markdown réécrite intégralement avec accents français.
- Styles CSS
.documentation-proseajoutés danstheme.css. - Plugin
@tailwindcss/typographyactivé. - Route PDF + template PDF créés.
- 5 tests Pest pour la page Documentation.
- Règle Cursor
update-documentation.mdccréée. - Memory bank réécrit avec accents français.
2026-02-20 (session design)
- 10 composants Blade créés dans
resources/views/components/logistics/. - Convention de design documentée dans
.cursor/rules/design-system.mdc. - 5 pages Filament refactorisées pour utiliser les composants du système de design.
- TablesExplorer amélioré.
- Thème Filament personnalisé créé.
2026-02-20 (session robustesse)
- LogisticsService mis à jour : timeout, connectTimeout, retry, gestion d'erreur.
- LogisticsApiException créée.
- Tests passés de 8 à 12.
2026-02-19
- Installation de Filament v5.0.0.
- 5 pages Filament créées.
- LogisticsService créé avec 17 endpoints.
- Migration api_request_logs créée.
Changements récents (2026-02-23, session gestion erreurs et validation)
- Création de
app/Support/ApiErrorTranslator.php: normalisation du champerrorAPI (null/string/array), mapping de patterns d'erreurs connus vers des explications en français. - Composant
error-banner.blade.php: supporte désormais les sauts de ligne vianl2br(e($message))pour afficher les explications sur plusieurs lignes. - Composant
json-block.blade.php: nouvelle prop$searched(défautfalse). Affiche unempty-state"Aucune donnée n'a été trouvée" quand$searchedesttrueet$dataest vide. - Badge de comptage : remplacé
$metadata['rowcount'] ?? 0parcount($data)dans les 4 vues (articles, documents, journaux, tiers) pour un comptage fiable. - Toutes les 6 pages API (Articles, Documents, Divers, Journaux, Tiers, TablesExplorer) utilisent désormais
ApiErrorTranslator::translate()pour les messages d'erreur. - Ajout de propriétés de tracking (
$hasSearched,$hasCheckedStock, etc.) sur toutes les pages pour distinguer "jamais recherché" de "recherché sans résultat". - Ajout de validation des champs obligatoires avant chaque appel API avec messages en français (au lieu de
returnsilencieux). Règles basées surdocumentation/WEB-A-1 (3).md. - Validation ajoutée :
TYPEobligatoire pourjnl_list,searchobligatoire pourthird_list,ARTIDobligatoire pourart_getstk,codeobligatoire pourcodes_list, champs obligatoires pour tous les endpoints Documents. - 4 nouveaux fichiers de tests :
ArticlesPageTest.php,JournauxPageTest.php,TiersPageTest.php,ApiErrorTranslatorTest.php. - Tests existants mis à jour :
DiversPageTest.php,DocumentsPageTest.php(ajout tests de validation, mise à jour assertions pour les messages traduits). - Total : 122 tests passent (302 assertions), 1 test pré-existant en échec (FilamentDashboardTest).
2026-02-23 (session investigation art_list)
- Voir section "Changements récents" ci-dessus.
Prochaines étapes
- Corriger le test pré-existant
FilamentDashboardTest > it displays project statistics. - Tester toutes les pages avec de vraies données API et vérifier le rendu visuel.
- Éventuellement : ajouter de la pagination ou du tri côté client pour les grands tableaux.
- Éventuellement : ajouter une page de consultation des logs API.