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.
This commit is contained in:
2026-02-23 13:55:00 +01:00
parent c84e0c680a
commit bc82299aa6
20 changed files with 989 additions and 178 deletions

View File

@@ -6,44 +6,59 @@ Dernière mise à jour : 2026-02-23
Aucun travail en cours.
## Changements récents (2026-02-23, session investigation endpoints Tiers)
## Changements récents (2026-02-23, session tableaux de paramètres)
- **Investigation complète des 2 endpoints Tiers** : tests systématiques via appels API réels pour documenter `third_list` et `third_GetArtHistory`.
- `third_list` : la recherche s'effectue sur les colonnes `name`, `groupid`, `vat` (pas `custid`). La colonne `custname` n'est PAS valide ; le nom est dans `name`. Colonnes par défaut : `custid,name`. Limite fixe de 10 résultats (paramètre `results` sans effet). Métadonnées détaillées : `rowCount`, `source`, `executionTimeMs`, `searchColumns`, `selectColumns`, `searchTerms`. Colonnes valides testées : `custid`, `name`, `name2`, `vat`, `email`, `groupid`, `website`, `memo`, `paydelay`, `paymode`, `bankname`, `iban`, `bic`, `custtype`, `discount`. Colonnes invalides : `custname`, `name1`, `addr1`, `zip`, `city`, `country`, `phone1`, etc.
- `third_GetArtHistory` : seul paramètre `thirdid` (minuscules obligatoires, `THIRDID` ne fonctionne pas). Retourne l'historique complet sans pagination (4468 éléments pour le client de test). Structure : `artid`, `artname`, `jnl`, `unitprice`, `qty`, `vatid`, `vatpc`, `s_credate`. ID inexistant = tableau vide sans erreur.
- **Correction `Tiers.php`** : valeur par défaut de `$select` changée de `custid,custname` (invalide) à `custid,name` (valide).
- **Vue `tiers.blade.php`** : placeholder du champ select mis à jour.
- **Documentation enrichie** : sections `third_list` et `third_GetArtHistory` massivement enrichies (colonnes valides, métadonnées, exemples de réponse, structure `third_GetArtHistory`). 3 nouvelles remarques ajoutées (colonnes third_list vs column_list/cust, colonnes de recherche, casse du paramètre thirdid).
- **7 nouveaux tests Pest** ajoutés dans `TiersPageTest.php` (total : 15 tests) : valeur par défaut select, envoi des paramètres, stockage des métadonnées, clé thirdid en minuscules, erreur API third_GetArtHistory, ID inexistant, filtrage select vide.
- Total : 134 tests passent, 1 test pré-existant en échec (FilamentDashboardTest).
- **Nouveau composant Blade `<x-logistics.param-table>`** : composant réutilisable dans `resources/views/components/logistics/param-table.blade.php`. Accepte un tableau `$params` (chaque élément contient `name`, `type`, `required`, `description`) et génère un tableau de référence des paramètres API avec les colonnes PARAMETRE / TYPE / OBLIGATOIRE / DESCRIPTION. Style conforme au design system (mêmes classes CSS que le tableau brut qui existait dans la page Divers).
- **Tableaux de paramètres ajoutés sur toutes les pages** : chaque endpoint de chaque page Filament dispose désormais d'un tableau de référence des paramètres sous le formulaire. Les descriptions proviennent de la documentation API (`documentation/documentation_api_logistics.md`).
- **Divers** : `getserialnumber` (aucun paramètre, composant avec tableau vide = non affiché), `codes_list` (2 params), `custom_geninv_updatestock` (7 params, refactorisé depuis le HTML brut).
- **Articles** : `art_list` (3 params), `art_getstk` (1 param).
- **Journaux** : `jnl_list` (3 params).
- **Tiers** : `third_list` (3 params), `third_GetArtHistory` (1 param).
- **Documents** : `document_list` (3 params), `document_detail` (2 params), `Document_GetStatusList` (1 param), `Document_GetUnitPriceAndVat` (5 params), `Document_GetDueDate` (2 params), `Document_GetAttachListThumbnail` (2 params), `Document_GetPDF` (3 params), `document_add` (9 params), `document_mod` (6 params).
- **Total : 11 composants Blade** dans le design system (ajout de `param-table`).
- **Tests** : 147 passent, 2 en échec pré-existant (FilamentDashboardTest). Aucun nouveau test ajouté (les tests existants vérifient le rendu des pages et passent tous).
- **Pint** : formatage validé.
## Décisions récentes
- **Colonne `name` au lieu de `custname`** (2026-02-23) : La colonne `custname` n'existe pas dans l'endpoint `third_list`. Le nom du tiers est retourné dans la colonne `name`. La valeur par défaut de `$select` dans `Tiers.php` a été corrigée.
- **Colonnes de recherche `third_list`** (2026-02-23) : Confirmé par tests que `third_list` recherche dans `name`, `groupid`, `vat`. Il est impossible de rechercher par `custid`.
- **Casse du paramètre `thirdid`** (2026-02-23) : `third_GetArtHistory` exige `thirdid` en minuscules. `THIRDID` provoque une erreur HTTP 400.
- **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.
- **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`.
- **Composant `param-table` plutôt que HTML brut** (2026-02-23) : Le tableau de paramètres existant dans `divers.blade.php` (pour `custom_geninv_updatestock`) a été extrait dans un composant réutilisable `<x-logistics.param-table>` pour éviter la duplication de HTML/CSS sur toutes les pages.
- **Tableaux vides non affichés** (2026-02-23) : Le composant `param-table` ne rend rien si le tableau `$params` est vide. Les endpoints sans paramètres (comme `getserialnumber`) n'affichent donc pas de tableau inutile.
- **`custom_geninv_updatestock` fonctionnel** (2026-02-23) : L'endpoint a été reclassé de "non fonctionnel" à "fonctionnel" en MODE=1 (Restock). STKID = code de dépôt (obtenu via `codes_list` STOCK). MODE=1 nécessite THIRDID. MODE=0 dépend de la configuration des journaux KI.
- **`codes_list` correspondance exacte** (2026-02-23) : Le paramètre `code` fonctionne par correspondance exacte sur le nom du groupe, pas par préfixe. Sensible à la casse (MAJUSCULES).
- **`getserialnumber` structure réponse** (2026-02-23) : Le champ `data` est un objet `{ "getserialnumber": "..." }`, pas une chaîne directe.
- **Colonne `name` au lieu de `custname`** (2026-02-23) : La colonne `custname` n'existe pas dans `third_list`. Le nom est dans `name`.
- **Document_GetPDF fonctionnel** (2026-02-23) : LAYOUT doit être une valeur numérique en string.
- **Format de date YYYY-MM-DD** (2026-02-23) : Tous les endpoints date exigent ce format.
- **Toggle Lecture/Ecriture** (2026-02-21) : Toutes les pages entité disposent d'un toggle.
- **Convention d'écriture avec accents** (2026-02-20) : Tous les contenus en français utilisent les accents.
## Historique
### 2026-02-23 (session investigation endpoints Divers)
- Investigation complète des 3 endpoints Divers.
- `getserialnumber` : structure réponse documentée.
- `codes_list` : correspondance exacte, sensible à la casse, chaîne vide = liste maître.
- `custom_geninv_updatestock` : reclassé fonctionnel en MODE=1 Restock.
- 12 nouveaux tests. Total à la fin : 145 tests.
### 2026-02-23 (session investigation endpoints Tiers)
- Investigation complète des 2 endpoints Tiers.
- `third_list` : colonnes de recherche (name, groupid, vat), 15 colonnes valides, colonne `custname` invalide.
- `third_GetArtHistory` : thirdid minuscules, historique complet sans limite.
- 7 nouveaux tests. Total à la fin : 134 tests.
### 2026-02-23 (session investigation endpoints Documents)
- Investigation complète des 9 endpoints Documents.
- Document_GetPDF reclassé comme fonctionnel (LAYOUT numérique).
- Format de date YYYY-MM-DD confirmé et documenté.
- Codes paydelay et modes de paiement documentés.
- Paramètre `results` ajouté à document_list.
- 1 nouveau test Pest. Total à la fin de cette session : 125 tests.
- 1 nouveau test. Total à la fin : 125 tests.
### 2026-02-23 (session investigation art_list)
- 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.
- Investigation paramètre `results` et `barcode` sur art_list/third_list.
- 2 nouveaux tests barcode.
### 2026-02-23 (session gestion erreurs et validation)
@@ -66,8 +81,7 @@ Aucun travail en cours.
## Prochaines étapes
- Corriger le test pré-existant `FilamentDashboardTest`.
- Corriger les tests pré-existants `FilamentDashboardTest` (2 tests en échec).
- Tester toutes les pages avec de vraies données API et vérifier le rendu visuel.
- Éventuellement : pagination / tri côté client pour les grands tableaux (notamment `third_GetArtHistory` qui peut retourner des milliers d'éléments).
- É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).

View File

@@ -18,9 +18,10 @@ L'API Logistics (Flex/ESI Gescom) est un système de gestion commerciale accessi
- **Traçabilité** : Chaque requête effectuée (réussie ou échouée) est enregistrée dans `api_request_logs` pour pouvoir analyser les échanges.
- **Résilience** : Les erreurs de connexion sont gérées avec retry automatique et messages explicites en français. Les erreurs API sont traduites et enrichies d'explications via `ApiErrorTranslator`.
- **Validation** : Les champs obligatoires sont validés avant chaque appel API avec des messages en français. Les pages distinguent "jamais recherché" de "recherché sans résultat" grace aux propriétés de tracking.
- **Cohérence visuelle** : Un système de design unifié (composants `x-logistics.*`) garantit une présentation homogène sur toutes les pages.
- **Couverture complète des endpoints** : Les 19 endpoints disponibles dans le service sont tous accessibles depuis l'interface, dont 1 non fonctionnel (custom_geninv_updatestock, avec avertissement). L'endpoint Document_GetPDF, initialement considéré non fonctionnel, a été corrigé (LAYOUT doit être une valeur numérique).
- **Cohérence visuelle** : Un système de design unifié (11 composants `x-logistics.*`) garantit une présentation homogène sur toutes les pages.
- **Couverture complète des endpoints** : Les 19 endpoints disponibles dans le service sont tous accessibles depuis l'interface et tous fonctionnels. L'endpoint Document_GetPDF, initialement considéré non fonctionnel, a été corrigé (LAYOUT doit être une valeur numérique). L'endpoint custom_geninv_updatestock, initialement considéré non fonctionnel, est fonctionnel en MODE=1 (Restock) avec THIRDID obligatoire.
- **Investigation des paramètres** : Chaque endpoint a été testé systématiquement pour documenter les paramètres réels (obligatoires ou non, types, formats, colonnes valides, comportement des paramètres ignorés). Les résultats sont documentés dans `documentation/documentation_api_logistics.md`.
- **Référence rapide des paramètres** : Chaque endpoint dispose d'un tableau de référence des paramètres directement sous le formulaire, permettant à l'utilisateur de comprendre les paramètres attendus sans consulter la documentation.
## Expérience utilisateur
@@ -28,12 +29,16 @@ L'utilisateur accède au dashboard Filament sur `http://api-logistics.test/admin
1. **Documentation** : Affichage stylisé de la documentation API complète (markdown converti en HTML). Actions : télécharger en PDF, ouvrir dans un nouvel onglet.
2. **Tables** : Barre de statistiques (endpoint, type base, nombre de tables). Liste filtrable des tables avec compteur de colonnes. Clic sur une table pour voir ses colonnes avec badges de type colorés.
3. **Articles** : Toggle Lecture/Ecriture. En lecture : formulaire de recherche (search, select, barcode) + vérification du stock d'un article par son ARTID. L'API retourne un maximum fixe de 5 résultats (non configurable). Le paramètre `barcode` est présent dans le formulaire mais son effet côté API n'est pas observable. En écriture : état vide (aucun endpoint d'écriture disponible).
4. **Documents** : Toggle Lecture/Ecriture. En lecture : 7 formulaires (document_list avec results, document_detail, Document_GetStatusList, Document_GetUnitPriceAndVat, Document_GetDueDate, Document_GetAttachListThumbnail, Document_GetPDF). En écriture : 2 formulaires (document_add, document_mod). Le formulaire Document_GetPDF est fonctionnel (LAYOUT numérique obligatoire, ex: "1").
5. **Journaux** : Toggle Lecture/Ecriture. En lecture : recherche par type de journal (TYPE). En écriture : état vide.
6. **Tiers** : Toggle Lecture/Ecriture. En lecture : recherche de tiers (search obligatoire, recherche dans name/groupid/vat, colonnes par défaut custid/name, max 10 résultats) + historique des articles d'un tiers (thirdid en minuscules, retourne tout l'historique sans limite). En écriture : état vide.
7. **Divers** : Toggle Lecture/Ecriture. En lecture : getserialnumber (numéro de série), codes_list (données par code interne). En écriture : custom_geninv_updatestock (avec bandeau d'avertissement, endpoint non fonctionnel).
3. **Articles** : Toggle Lecture/Ecriture. En lecture : formulaire de recherche (search, select, barcode) avec tableau de paramètres + vérification du stock d'un article par son ARTID avec tableau de paramètres. L'API retourne un maximum fixe de 5 résultats (non configurable). Le paramètre `barcode` est présent dans le formulaire mais son effet côté API n'est pas observable. En écriture : état vide (aucun endpoint d'écriture disponible).
4. **Documents** : Toggle Lecture/Ecriture. En lecture : 7 formulaires avec tableaux de paramètres (document_list avec results, document_detail, Document_GetStatusList, Document_GetUnitPriceAndVat, Document_GetDueDate, Document_GetAttachListThumbnail, Document_GetPDF). En écriture : 2 formulaires avec tableaux de paramètres (document_add, document_mod). Le formulaire Document_GetPDF est fonctionnel (LAYOUT numérique obligatoire, ex: "1").
5. **Journaux** : Toggle Lecture/Ecriture. En lecture : recherche par type de journal (TYPE) avec tableau de paramètres. En écriture : état vide.
6. **Tiers** : Toggle Lecture/Ecriture. En lecture : recherche de tiers (search obligatoire, recherche dans name/groupid/vat, colonnes par défaut custid/name, max 10 résultats) avec tableau de paramètres + historique des articles d'un tiers (thirdid en minuscules, retourne tout l'historique sans limite) avec tableau de paramètres. En écriture : état vide.
7. **Divers** : Toggle Lecture/Ecriture. En lecture : getserialnumber (numéro de série, retourne un objet `{ "getserialnumber": "..." }`), codes_list (données par code interne, correspondance exacte sensible à la casse, chaîne vide = liste maître des 42 groupes) avec tableau de paramètres. En écriture : custom_geninv_updatestock (fonctionnel en MODE=1 Restock avec THIRDID obligatoire, bandeau d'information sur les modes) avec tableau de paramètres.
### Toggle Lecture / Ecriture
Toutes les pages entité disposent d'un sélecteur en haut de page avec deux boutons : "Lecture" et "Ecriture". Le bouton actif est mis en surbrillance. Le changement de mode affiche instantanément les formulaires correspondants sans rechargement de page.
### Tableaux de référence des paramètres
Sous chaque formulaire d'endpoint, un tableau de référence affiche les colonnes PARAMETRE, TYPE, OBLIGATOIRE et DESCRIPTION. Ce tableau fournit un aide-mémoire des paramètres attendus par l'API, avec les informations critiques (format obligatoire, limites connues, sensibilité à la casse). Les endpoints sans paramètres (comme `getserialnumber`) n'affichent pas de tableau.

View File

@@ -18,10 +18,10 @@ Dernière mise à jour : 2026-02-23
- [x] 7 vues Blade associées dans `resources/views/filament/pages/`
- [x] Toggle Lecture/Ecriture sur toutes les pages entité (Articles, Documents, Journaux, Tiers, Divers)
- [x] Page Documents : 9 endpoints couverts (7 lecture + 2 écriture)
- [x] Page Divers : 3 endpoints couverts (2 lecture + 1 écriture non fonctionnel)
- [x] Page Divers : 3 endpoints couverts (2 lecture + 1 écriture fonctionnel en MODE=1 Restock)
- [x] Gestion d'erreur dans toutes les pages Filament (LogisticsApiException + Throwable)
- [x] Logging des requêtes API réussies et échouées dans `api_request_logs`
- [x] Système de design unifié : 10 composants Blade dans `resources/views/components/logistics/`
- [x] Système de design unifié : 11 composants Blade dans `resources/views/components/logistics/`
- [x] Convention de design documentée dans `.cursor/rules/design-system.mdc`
- [x] Toutes les pages Filament utilisent les composants `x-logistics.*`
- [x] Thème Filament personnalisé (`resources/css/filament/admin/theme.css`)
@@ -66,32 +66,43 @@ Dernière mise à jour : 2026-02-23
- [x] Documentation `third_list` et `third_GetArtHistory` massivement enrichie (colonnes valides, métadonnées, exemples de réponse, structure de réponse)
- [x] 3 nouvelles remarques dans la documentation (colonnes third_list vs column_list/cust, colonnes de recherche, casse thirdid)
- [x] 7 nouveaux tests Pest dans TiersPageTest (total : 15 tests)
- [x] Investigation complète des 3 endpoints Divers (appels API réels)
- [x] `getserialnumber` : structure de réponse documentée (objet `{ "getserialnumber": "..." }`, pas une chaîne)
- [x] `codes_list` : correspondance exacte (pas préfixe), sensible à la casse, chaîne vide = liste maître (42 groupes), signification des champs documentée
- [x] `custom_geninv_updatestock` reclassé comme FONCTIONNEL (MODE=1 Restock). STKID = code de dépôt. THIRDID obligatoire en Restock. QTY négatif possible.
- [x] Divers.php : ajout THIRDID, valeur par défaut MODE=1, validation améliorée
- [x] divers.blade.php : bandeau mis à jour, champ THIRDID, labels corrigés
- [x] 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.
- [x] 12 nouveaux tests Pest dans DiversPageTest (total : 22 tests)
- [x] Composant `<x-logistics.param-table>` créé : tableau de référence des paramètres API réutilisable
- [x] Tableaux de paramètres ajoutés sous chaque endpoint de toutes les pages (17 endpoints au total)
- [x] Tableau brut HTML de `custom_geninv_updatestock` refactorisé vers le composant `param-table`
## Ce qui reste à faire
- [ ] Corriger le test pré-existant `FilamentDashboardTest`
- [ ] 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
- 1 test `FilamentDashboardTest` échoue car le dashboard ne contient pas les sections attendues. Test créé avant la refonte du dashboard.
- 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`.
- L'endpoint `custom_geninv_updatestock` reste non fonctionnel (paramètre STKID inconnu).
- 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 : 134 passent, 1 en échec pré-existant
- Tests : 147 passent, 2 en échec pré-existant
- Pages Filament : 7 (Documentation, TablesExplorer, Articles, Documents, Journaux, Tiers, Divers)
- Composants Blade design system : 10
- 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 (dont 1 non fonctionnel, 1 partiellement fonctionnel)
- 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)

View File

@@ -19,13 +19,14 @@ Application Laravel de test dont l'objectif est de comprendre le fonctionnement
- Toggle Lecture/Ecriture sur chaque page entité pour basculer entre les endpoints de récupération et d'envoi de données.
- Page de documentation intégrée avec rendu stylisé du markdown et export PDF.
- Formulaires de recherche et d'envoi paramétrables pour chaque endpoint (19 au total).
- Tableaux de référence des paramètres sous chaque endpoint (type, obligatoire, description).
- Affichage des résultats sous forme de tableaux structurés et de blocs JSON formatés.
- Système de design unifié avec composants Blade réutilisables (`x-logistics.*`).
- Système de design unifié avec 11 composants Blade réutilisables (`x-logistics.*`).
- Traçage des requêtes effectuées dans une table `api_request_logs`.
- Gestion robuste des erreurs API (timeout, retry, messages utilisateur en français, traduction avec explications via `ApiErrorTranslator`).
- Validation des champs obligatoires avant chaque appel API avec messages en français.
- Distinction "jamais recherché" / "recherché sans résultat" via propriétés de tracking.
- Avertissement visuel pour l'endpoint non fonctionnel (custom_geninv_updatestock). L'endpoint Document_GetPDF est désormais fonctionnel (LAYOUT numérique).
- L'endpoint Document_GetPDF est fonctionnel (LAYOUT numérique). L'endpoint custom_geninv_updatestock est fonctionnel en MODE=1 (Restock) avec bandeau d'information sur les modes.
## Contraintes

View File

@@ -87,13 +87,17 @@ Chaque page Filament implémente :
- **État vide** : Le composant `json-block` accepte une prop `$searched`. Quand `$searched` est `true` et `$data` est vide, un état vide est affiché. Pour les `data-table`, les vues vérifient `$hasSearched && count($data) === 0`.
- **Badge de comptage** : Les badges de résultats utilisent `count($data)` (comptage réel PHP) au lieu de `$metadata['rowcount']` (retourné par l'API, parfois incorrect).
### Tableaux de référence des paramètres API
Chaque endpoint sur chaque page Filament dispose d'un tableau de référence des paramètres sous le formulaire, implémenté via le composant `<x-logistics.param-table>`. Le composant accepte un tableau `$params` où chaque élément contient `name`, `type`, `required` et `description`. Si le tableau est vide (endpoint sans paramètres), le composant ne rend rien. Les descriptions proviennent de la documentation API et incluent les informations critiques (format obligatoire, limites, sensibilité à la casse).
### Endpoints partiellement fonctionnels
L'endpoint `Document_GetPDF` est fonctionnel : le paramètre `LAYOUT` doit être une valeur numérique sous forme de string (ex: `"1"`). Les valeurs textuelles provoquent une erreur. Le PDF est retourné encodé en base64 dans le champ `data.pdf`.
### Endpoints non fonctionnels
### Endpoint custom_geninv_updatestock
L'endpoint `custom_geninv_updatestock` est présent dans l'interface avec un bandeau d'avertissement ambre expliquant pourquoi il ne fonctionne pas. La méthode service existe dans LogisticsService pour permettre le test.
L'endpoint `custom_geninv_updatestock` est fonctionnel en MODE=1 (Restock). Un bandeau d'avertissement ambre dans l'interface explique les deux modes disponibles et leurs prérequis. Le formulaire inclut un champ THIRDID (obligatoire en mode Restock) et la validation côté client vérifie cette condition. MODE=0 (Inventaire) dépend de la configuration des journaux KI du dossier.
### Page Documentation
@@ -120,6 +124,7 @@ Convention documentée dans `.cursor/rules/design-system.mdc`. Tous les composan
| `<x-logistics.search-input>` | Champ de recherche avec icône loupe intégrée |
| `<x-logistics.form-field>` | Champ de formulaire (label + input + padding gauche) à espacement homogène |
| `<x-logistics.json-block>` | Bloc JSON formaté avec bordure et fond adapté |
| `<x-logistics.param-table>` | Tableau de référence des paramètres API (PARAMETRE / TYPE / OBLIGATOIRE / DESCRIPTION) |
Règles :
- Toujours utiliser les composants `x-logistics.*` au lieu de dupliquer les classes CSS.
@@ -183,7 +188,7 @@ resources/
filament/admin/
theme.css # Thème Filament personnalisé (Tailwind 4 + Typography + prose)
views/
components/logistics/ # 10 composants du système de design
components/logistics/ # 11 composants du système de design
filament/pages/ # 7 vues de pages Filament
pdf/
documentation.blade.php # Template PDF pour la documentation
@@ -197,15 +202,15 @@ database/
...create_api_request_logs_table.php
tests/Feature/
ArticlesPageTest.php # 8 tests page Articles (toggle, validation, tracking, erreurs)
ArticlesPageTest.php # 10 tests page Articles (toggle, validation, tracking, erreurs, barcode)
DocumentationTest.php # 5 tests page Documentation (Livewire + PDF)
DocumentsPageTest.php # 22 tests page Documents (toggle, 9 endpoints, validation, erreurs, results)
DiversPageTest.php # 8 tests page Divers (toggle, 3 endpoints, validation, erreurs)
JournauxPageTest.php # 6 tests page Journaux (toggle, validation, tracking, erreurs)
DiversPageTest.php # 22 tests page Divers (toggle, 3 endpoints, validation, erreurs, THIRDID conditionnel, modes)
JournauxPageTest.php # 7 tests page Journaux (toggle, validation, tracking, erreurs)
LogisticsServiceTest.php # 14 tests service API (mocks HTTP)
TablesExplorerTest.php # 6 tests page TablesExplorer (Livewire)
TiersPageTest.php # 15 tests page Tiers (toggle, validation, tracking, erreurs, métadonnées, casse thirdid)
FilamentDashboardTest.php # Tests dashboard Filament (1 test en échec pré-existant)
FilamentDashboardTest.php # Tests dashboard Filament (2 tests en échec pré-existant)
DashboardTest.php # Tests dashboard
ExampleTest.php # Test d'exemple Laravel
tests/Unit/
@@ -232,4 +237,5 @@ routes/
- Toutes les vues Filament utilisent les composants `x-logistics.*` du système de design.
- Après modification des vues ou composants, exécuter `npm run build` pour recompiler le thème.
- Tous les contenus rédigés en français doivent utiliser les accents appropriés.
- L'endpoint non fonctionnel (custom_geninv_updatestock) est présent dans l'interface avec un bandeau d'avertissement.
- L'endpoint custom_geninv_updatestock est fonctionnel en MODE=1 (Restock) avec un bandeau d'information décrivant les modes.
- Chaque endpoint sur chaque page dispose d'un tableau de référence des paramètres via `<x-logistics.param-table>`.

View File

@@ -114,11 +114,13 @@ Réponse `column_list` : chaque colonne a `name`, `dataType` (C/N/T/D/L/M), `len
| `codes_list` | `codesList(array)` | Lecture | Données par code | code |
| `document_add` | `documentAdd(array)` | Écriture | Ajout d'un document | ThirdId, Date, Artid[], Qty[], Saleprice[], JNL, ... |
| `document_mod` | `documentMod(array)` | Écriture | Modification d'un document | number, Thirdid, Artid[], Qty[], Saleprice[], JNL, ... |
| `custom_geninv_updatestock` | `customGeninvUpdatestock(array)` | Écriture | Mise à jour inventaire | ARTID, STKID, QTY, ... |
| `custom_geninv_updatestock` | `customGeninvUpdatestock(array)` | Écriture | Mise à jour stock (Restock/Inventaire) | ARTID, STKID, QTY, TOCHECK, TOCHECKDETAIL, MODE, THIRDID |
**Endpoints partiellement fonctionnels** : `Document_GetPDF` (LAYOUT doit être une valeur numérique en string, ex: `"1"`. Les valeurs textuelles provoquent une erreur. Retourne le PDF en base64).
**Endpoints partiellement fonctionnels** : `Document_GetPDF` (LAYOUT doit être une valeur numérique en string, ex: `"1"`. Les valeurs textuelles provoquent une erreur. Retourne le PDF en base64). `custom_geninv_updatestock` MODE=0 (Inventaire) dépend de la configuration des journaux KI du dossier.
**Endpoints non fonctionnels** : `custom_geninv_updatestock` (paramètre STKID inconnu, signification de TOCHECK/TOCHECKDETAIL/MODE à clarifier).
**`custom_geninv_updatestock` (fonctionnel en MODE=1 Restock)** : STKID = code de dépôt (obtenu via `codes_list` STOCK, ex: `"SG"`, `"A"`). MODE=1 (Restock) nécessite THIRDID (fournisseur). TOCHECK = prix de contrôle. TOCHECKDETAIL = remarques. QTY peut être négatif. Les 6 paramètres ARTID, STKID, QTY, TOCHECK, TOCHECKDETAIL, MODE sont tous obligatoires.
**`codes_list` (correspondance exacte)** : le paramètre `code` fonctionne par correspondance exacte (pas par préfixe), sensible à la casse (MAJUSCULES). Chaîne vide = liste maître des 42 groupes (structure `name`/`prompt1`). Nom exact = valeurs du groupe (structure `vala1`-`vala6`, `valn1`, `valn2`).
**Format de date** : Tous les endpoints acceptant une date (DATE, date) exigent le format `YYYY-MM-DD`. Tout autre format retourne HTTP 400.