Enhance Documents page functionality and update API documentation
- Added a new `$results` property to the Documents page to allow users to specify the maximum number of results returned by the `document_list` endpoint, defaulting to ~108. - Updated the `searchDocuments` method to include the `results` parameter in API requests, ensuring it is sent as a string. - Modified the documents.blade.php view to include an input field for the `results` parameter, with appropriate placeholder text and guidance. - Improved the documentation for the `document_list` endpoint to clarify the behavior of the `results` parameter and its interaction with `thirdid`. - Updated the `Document_GetPDF` section to reflect its functionality and correct usage of the `LAYOUT` parameter. - Added a new test to verify that the `results` parameter is correctly sent to the API. - Overall, enhanced the user experience and API interaction for document management.
This commit is contained in:
@@ -6,98 +6,65 @@ Dernière mise à jour : 2026-02-23
|
||||
|
||||
Aucun travail en cours.
|
||||
|
||||
## Changements récents (2026-02-23, session investigation art_list)
|
||||
## Changements récents (2026-02-23, session investigation endpoints Documents)
|
||||
|
||||
- **Investigation du paramètre `results`** : tests systématiques via appels API directs. Le paramètre `results` n'a aucun effet observable sur `art_list` (toujours 5 résultats max) ni sur `third_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ètre `barcode` est accepté par l'API mais n'a aucun effet observable sur les résultats de `art_list`. Les données retournées sont strictement identiques avec ou sans `barcode`. De plus, le paramètre `search` reste obligatoire même quand `barcode` est 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).md` et `documentation_api_logistics.md` corrigés pour refléter les comportements réels de `results` et `barcode` sur `art_list` et `third_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 que `barcode` est envoyé quand renseigné, et omis quand vide.
|
||||
- Total : 124 tests passent, 1 test pré-existant en échec (FilamentDashboardTest).
|
||||
- **Investigation complète des 9 endpoints Documents** : tests systématiques via appels API réels pour documenter chaque endpoint de la page Documents.php. Résultats principaux :
|
||||
- `document_list` : le paramètre `results` fonctionne (contrairement à `art_list` et `third_list`). Défaut ~108 résultats. `select` par défaut retourne uniquement `thirdid`. Body vide = erreur 400.
|
||||
- `document_detail` : structure de réponse riche documentée (en-tête du document au premier niveau + tableaux `detail[]` et `attach[]`). Métadonnées spécifiques : `detailRowCount`, `attachRowCount`, `totalExecutionTimeMs`.
|
||||
- `Document_GetStatusList` : retourne `{code, desc}`. Statuts documentés pour 6 types de journaux (03VEN, 01COM, 02NEV, 04NCV, 11COMF, 09OFFRE).
|
||||
- `Document_GetUnitPriceAndVat` : `QTY` doit être string (int = HTTP 400). `DATE` doit être `YYYY-MM-DD` (autre format = HTTP 400). Réponse : `{unitprice, discount, vatid, vatpc}` en strings.
|
||||
- `Document_GetDueDate` : codes `paydelay` proviennent de `codes_list` avec `code=PAYDELAY` (10 codes documentés : 30, 30F, 45F, 50, 60, 60F, 75F, 90, 90F, 0F). `date` au format `YYYY-MM-DD`. Réponse : `{duedate: "YYYY-MM-DD"}`.
|
||||
- `Document_GetAttachListThumbnail` : codes d'erreur 003 (document non trouvé), 004 (pas d'image).
|
||||
- **Document_GetPDF est FONCTIONNEL** : le paramètre `LAYOUT` doit être une valeur numérique en string (ex: `"1"`). Les valeurs textuelles provoquent une erreur. Retourne le PDF en base64 dans `data.pdf`.
|
||||
- `document_add` / `document_mod` : pas de logs antérieurs, documentation existante cohérente.
|
||||
- **Documentation massivement mise à jour** : `documentation/documentation_api_logistics.md` enrichie avec exemples de réponses réelles, structures de données détaillées, codes paydelay, format de date YYYY-MM-DD, Document_GetPDF reclassé comme fonctionnel. Ajout de la section "8. Endpoints partiellement fonctionnels". Numérotation des sections mise à jour.
|
||||
- **Page Documents.php modifiée** : ajout de la propriété `$results` (int, défaut 108), transmission du paramètre `results` en string à l'API via `searchDocuments()`.
|
||||
- **Vue documents.blade.php modifiée** : ajout du champ `results` (input numérique) dans le formulaire `document_list`. Suppression du bandeau "non fonctionnel" de `Document_GetPDF`, mise à jour du placeholder LAYOUT ("Ex: 1"), mise à jour de la description.
|
||||
- **1 nouveau test Pest** ajouté dans `DocumentsPageTest.php` : vérification que `results` est envoyé en string à l'API.
|
||||
- **Modes de paiement documentés** : `codes_list` avec `code=PAYMODE` retourne CAS (Cash), VIR (Virement), BC (Bancontact), CBEF (Cash BEF).
|
||||
- Total : 125 tests passent, 2 tests pré-existants 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()` et `customGeninvUpdatestock()` 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-3` dans le composant `form-field.blade.php` pour 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 `Documentation` qui affiche le fichier markdown converti en HTML via `Str::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 `AdminPanelProvider` a été configuré sans `->login()` et sans `authMiddleware` pour 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.php` réécrite avec 9 endpoints (7 lecture + 2 écriture), toggle Lecture/Ecriture, méthode `splitCsv()`.
|
||||
- Pages `Articles.php`, `Journaux.php`, `Tiers.php` : ajout de la propriété `$mode` et du toggle Lecture/Ecriture.
|
||||
- Page `Divers.php` créé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 de `pl-3`.
|
||||
- 23 nouveaux tests Pest : `DocumentsPageTest.php` (13 tests), `DiversPageTest.php` (8 tests), 2 tests ajoutés dans `LogisticsServiceTest.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).
|
||||
- **Document_GetPDF fonctionnel** (2026-02-23) : L'endpoint a été reclassé de "non fonctionnel" à "partiellement fonctionnel". Le paramètre LAYOUT doit être une valeur numérique en string. Le bandeau d'avertissement a été retiré de la vue.
|
||||
- **Format de date YYYY-MM-DD** (2026-02-23) : Confirmé par tests que tous les endpoints acceptant une date exigent strictement le format `YYYY-MM-DD`. Documenté dans la section "Remarques et points d'attention".
|
||||
- **Paramètre results sur document_list** (2026-02-23) : Le paramètre `results` fonctionne réellement sur `document_list` (contrairement à `art_list` et `third_list`). Ajouté dans le formulaire et le code PHP.
|
||||
- **Toggle Lecture/Ecriture** (2026-02-21) : Toutes les pages entité disposent d'un toggle.
|
||||
- **Endpoints Documents complétés** (2026-02-21) : 9 endpoints couverts.
|
||||
- **Convention d'écriture avec accents** (2026-02-20) : Tous les contenus en français utilisent les accents.
|
||||
|
||||
## Historique
|
||||
|
||||
### 2026-02-20 (session documentation)
|
||||
### 2026-02-23 (session investigation art_list)
|
||||
|
||||
- Page Filament `Documentation` créée.
|
||||
- Documentation markdown réécrite intégralement avec accents français.
|
||||
- Styles CSS `.documentation-prose` ajoutés dans `theme.css`.
|
||||
- Plugin `@tailwindcss/typography` activé.
|
||||
- Route PDF + template PDF créés.
|
||||
- 5 tests Pest pour la page Documentation.
|
||||
- Règle Cursor `update-documentation.mdc` créée.
|
||||
- Memory bank réécrit avec accents français.
|
||||
- Investigation paramètre `results` : sans effet sur `art_list` (5 max) et `third_list` (10 max).
|
||||
- Investigation paramètre `barcode` : sans effet observable, `search` reste obligatoire.
|
||||
- Page Articles : `$results` supprimé, `$barcode` ajouté.
|
||||
- Documentation `art_list` et `third_list` corrigée.
|
||||
- 2 nouveaux tests barcode.
|
||||
|
||||
### 2026-02-20 (session design)
|
||||
### 2026-02-23 (session gestion erreurs et validation)
|
||||
|
||||
- 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éé.
|
||||
- Création de `ApiErrorTranslator`. Validation des champs obligatoires. Propriétés de tracking.
|
||||
- 4 nouveaux fichiers de tests. Total : 122 tests.
|
||||
|
||||
### 2026-02-20 (session robustesse)
|
||||
### 2026-02-21 (session endpoints manquants)
|
||||
|
||||
- LogisticsService mis à jour : timeout, connectTimeout, retry, gestion d'erreur.
|
||||
- LogisticsApiException créée.
|
||||
- Tests passés de 8 à 12.
|
||||
- 2 méthodes ajoutées à `LogisticsService`. Pages Documents, Divers, toggle sur toutes les pages.
|
||||
- 23 nouveaux tests.
|
||||
|
||||
### 2026-02-20
|
||||
|
||||
- Page Documentation, système de design, composants Blade, thème personnalisé, robustesse service.
|
||||
|
||||
### 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 champ `error` API (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 via `nl2br(e($message))` pour afficher les explications sur plusieurs lignes.
|
||||
- Composant `json-block.blade.php` : nouvelle prop `$searched` (défaut `false`). Affiche un `empty-state` "Aucune donnée n'a été trouvée" quand `$searched` est `true` et `$data` est vide.
|
||||
- Badge de comptage : remplacé `$metadata['rowcount'] ?? 0` par `count($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 `return` silencieux). Règles basées sur `documentation/WEB-A-1 (3).md`.
|
||||
- Validation ajoutée : `TYPE` obligatoire pour `jnl_list`, `search` obligatoire pour `third_list`, `ARTID` obligatoire pour `art_getstk`, `code` obligatoire pour `codes_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.
|
||||
- Installation Filament v5, 5 pages, LogisticsService, migration api_request_logs.
|
||||
|
||||
## Prochaines étapes
|
||||
|
||||
- Corriger le test pré-existant `FilamentDashboardTest > it displays project statistics`.
|
||||
- Corriger les 2 tests pré-existants `FilamentDashboardTest`.
|
||||
- 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.
|
||||
- Éventuellement : pagination / tri côté client pour les grands tableaux.
|
||||
- Éventuellement : page de consultation des logs API.
|
||||
- Éventuellement : investiguer `custom_geninv_updatestock` (clarifier STKID, TOCHECK, MODE auprès du fournisseur).
|
||||
|
||||
Reference in New Issue
Block a user