Update project dependencies and enhance documentation
- Added `barryvdh/laravel-dompdf` to `composer.json` for PDF generation capabilities. - Updated `boost.json` to include `tailwindcss-development` in skills. - Modified `package.json` and `package-lock.json` to upgrade Tailwind CSS and related packages. - Improved README.md for clarity and corrected French language errors. - Created design system documentation for Filament components. - Added new Filament pages for Dashboard and Documentation with dynamic content loading. - Enhanced TablesExplorer functionality with improved table and column management.
This commit is contained in:
@@ -1,24 +1,28 @@
|
||||
# Memory Bank
|
||||
|
||||
Derniere mise a jour : 2026-02-20
|
||||
Dernière mise à jour : 2026-02-20
|
||||
|
||||
## Presentation
|
||||
## Présentation
|
||||
|
||||
Ce dossier contient le Memory Bank du projet API Logistics. Il sert de source de verite pour que l'IA (Cursor) conserve le contexte du projet entre les sessions.
|
||||
Ce dossier contient le Memory Bank du projet API Logistics. Il sert de source de vérité pour que l'IA (Cursor) conserve le contexte du projet entre les sessions.
|
||||
|
||||
## Structure
|
||||
|
||||
| Fichier | Description |
|
||||
|---------|-------------|
|
||||
| `projectbrief.md` | Vision, objectifs et perimetre du projet |
|
||||
| `productContext.md` | Contexte produit, problemes resolus, experience utilisateur |
|
||||
| `techContext.md` | Stack technique, API Logistics, dependances, configuration |
|
||||
| `systemPatterns.md` | Architecture, patterns, structure des repertoires, conventions |
|
||||
| `activeContext.md` | Travail en cours, decisions recentes, prochaines etapes |
|
||||
| `progress.md` | Avancement, ce qui fonctionne, ce qui reste a faire, metriques |
|
||||
| `projectbrief.md` | Vision, objectifs et périmètre du projet |
|
||||
| `productContext.md` | Contexte produit, problèmes résolus, expérience utilisateur |
|
||||
| `techContext.md` | Stack technique, API Logistics, dépendances, configuration |
|
||||
| `systemPatterns.md` | Architecture, patterns, structure des répertoires, conventions, système de design |
|
||||
| `activeContext.md` | Travail en cours, décisions récentes, prochaines étapes |
|
||||
| `progress.md` | Avancement, ce qui fonctionne, ce qui reste à faire, métriques |
|
||||
|
||||
## Utilisation
|
||||
|
||||
- **Lecture automatique** : La regle Cursor `.cursor/rules/memory-bank.mdc` est configuree avec `alwaysApply: true`. L'IA lit ces fichiers a chaque session.
|
||||
- **Mise a jour** : Dire **"update memory bank"** dans le chat pour que l'IA relise le code source et mette a jour tous les fichiers.
|
||||
- **Quand mettre a jour** : Apres chaque changement significatif (nouvelle fonctionnalite, changement d'architecture, correction de bug, nouvelle dependance).
|
||||
- **Lecture automatique** : La règle Cursor `.cursor/rules/memory-bank.mdc` est configurée avec `alwaysApply: true`. L'IA lit ces fichiers à chaque session.
|
||||
- **Mise à jour** : Dire **"update memory bank"** dans le chat pour que l'IA relise le code source et mette à jour tous les fichiers.
|
||||
- **Quand mettre à jour** : Après chaque changement significatif (nouvelle fonctionnalité, changement d'architecture, correction de bug, nouvelle dépendance).
|
||||
|
||||
## Convention d'écriture
|
||||
|
||||
Tous les fichiers du projet (documentation, memory bank, règles Cursor) doivent être rédigés en français avec les accents appropriés.
|
||||
|
||||
@@ -1,44 +1,79 @@
|
||||
# Active Context
|
||||
|
||||
Derniere mise a jour : 2026-02-20
|
||||
Dernière mise à jour : 2026-02-20
|
||||
|
||||
## Travail en cours
|
||||
|
||||
Aucun travail en cours. Les ameliorations de robustesse du service API sont terminees.
|
||||
Aucun travail en cours.
|
||||
|
||||
## Decisions recentes
|
||||
## Décisions récentes
|
||||
|
||||
- **Filament v5 sans authentification** : Le `AdminPanelProvider` a ete configure sans `->login()` et sans `authMiddleware` pour permettre un acces libre au dashboard.
|
||||
- **Pages personnalisees plutot que Resources** : L'application interroge une API externe, il n'y a pas de modeles Eloquent a gerer en CRUD. Les pages Filament utilisent des vues Blade avec des formulaires Livewire.
|
||||
- **MySQL au lieu de SQLite** : Choix de l'utilisateur pour la base de donnees.
|
||||
- **LogisticsService** : Toutes les interactions avec l'API sont centralisees dans un seul service pour faciliter la maintenance et le tracage.
|
||||
- **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. La documentation API et le memory bank ont été entièrement réécrits avec les accents.
|
||||
- **Page Documentation ajoutée** (2026-02-20) : Nouvelle page Filament `Documentation` qui affiche le fichier markdown `documentation/documentation_api_logistics.md` converti en HTML via `Str::markdown()`. Actions d'en-tête : télécharger en PDF et ouvrir dans un nouvel onglet.
|
||||
- **Styles prose personnalisés** (2026-02-20) : Le thème CSS Filament (`theme.css`) a été enrichi avec des styles `.documentation-prose` dédiés au rendu du markdown en dark mode : hiérarchie de titres avec bordures, tableaux avec bordures et en-têtes stylisés, blocs de code avec fond sombre, code inline coloré, liens bleus, listes à marqueurs, séparateurs visibles.
|
||||
- **Plugin @tailwindcss/typography** (2026-02-20) : Ajout du plugin via `@plugin "@tailwindcss/typography"` dans le thème Filament pour activer les classes `prose`.
|
||||
- **Export PDF de la documentation** (2026-02-20) : Route `documentation.download-pdf` dans `routes/web.php` utilisant `barryvdh/laravel-dompdf` pour générer un PDF téléchargeable de la documentation.
|
||||
- **Règle update-documentation** (2026-02-20) : Nouvelle règle Cursor `.cursor/rules/update-documentation.mdc` définissant la procédure de mise à jour de la documentation quand l'utilisateur dit "update documentation".
|
||||
- **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.
|
||||
- **MySQL au lieu de SQLite** : Choix de l'utilisateur pour la base de données.
|
||||
- **LogisticsService** : Toutes les interactions avec l'API sont centralisées dans un seul service.
|
||||
- **Heroicon enum** : Filament v5 impose l'utilisation de `BackedEnum` pour `$navigationIcon` au lieu de strings.
|
||||
- **$view non-static** : Filament v5 a change `$view` de static a instance property.
|
||||
- **Timeout et retry configurables** (2026-02-20) : Les parametres `timeout`, `connect_timeout`, `retry.times` et `retry.sleep_ms` sont desormais dans `config/logistics.php` et pilotes par des variables `.env`. Le retry ne se declenche que sur les `ConnectionException`.
|
||||
- **LogisticsApiException** (2026-02-20) : Exception dediee creee pour distinguer les erreurs de connexion (API injoignable) des erreurs de requete generiques. Messages en francais.
|
||||
- **Logging des echecs** (2026-02-20) : Les requetes echouees sont desormais aussi enregistrees dans `api_request_logs` avec `response_status = 0`.
|
||||
- **Contrainte reseau** (2026-02-20) : Le serveur API `tse-10-test.esiweb.pro` est sur un reseau prive, accessible uniquement via Bureau a distance (RDP). L'application locale ne peut pas joindre l'API sans tunnel ou deploiement sur le reseau distant.
|
||||
- **$view non-static** : Filament v5 a changé `$view` de static à instance property.
|
||||
- **Timeout et retry configurables** : Les paramètres sont dans `config/logistics.php` et pilotés par `.env`.
|
||||
- **LogisticsApiException** : Exception dédiée créée pour distinguer les erreurs de connexion des erreurs de requête génériques.
|
||||
- **Logging des échecs** : Les requêtes échouées sont aussi enregistrées dans `api_request_logs` avec `response_status = 0`.
|
||||
- **Système de design unifié** (2026-02-20) : Création de 10 composants Blade réutilisables dans `resources/views/components/logistics/` et d'une convention documentée dans `.cursor/rules/design-system.mdc`.
|
||||
- **Thème Filament personnalisé** (2026-02-20) : Création de `resources/css/filament/admin/theme.css` enregistré dans `AdminPanelProvider` via `->viteTheme()`.
|
||||
- **TablesExplorer amélioré** (2026-02-20) : Remplacement de `wire:then` (invalide) par une méthode `selectTable()`. Ajout de la déduplication des colonnes, d'un filtre de tables, de la propriété computed `filteredTables`, des labels de type (`getDataTypeLabel`), et du stockage des métadonnées.
|
||||
- **Connectivité API résolue** (2026-02-20) : Le serveur API est accessible via `http://tse-10-test.esi.local` (réseau interne). Le timeout a été augmenté à 300s dans `.env`.
|
||||
|
||||
## Changements importants (2026-02-20)
|
||||
## Changements récents (2026-02-20, session documentation)
|
||||
|
||||
- `LogisticsService` mis a jour : timeout, connectTimeout, retry, gestion d'erreur avec `LogisticsApiException`.
|
||||
- `LogisticsApiException` creee dans `app/Exceptions/`.
|
||||
- `config/logistics.php` etendu avec timeout et retry.
|
||||
- `.env` et `.env.example` completes avec les nouvelles variables.
|
||||
- Les 5 pages Filament mises a jour pour attraper `LogisticsApiException`.
|
||||
- Tests passes de 8 a 12 (4 nouveaux tests pour timeout, exception, logging, contexte).
|
||||
- Page Filament `Documentation` créée (`app/Filament/Pages/Documentation.php`).
|
||||
- Vue Blade `resources/views/filament/pages/documentation.blade.php` créée.
|
||||
- Documentation markdown réécrite intégralement avec accents français.
|
||||
- Styles CSS `.documentation-prose` ajoutés dans `theme.css` (titres, tableaux, code, liens, listes).
|
||||
- Plugin `@tailwindcss/typography` activé dans le thème Filament.
|
||||
- Route PDF (`documentation.download-pdf`) ajoutée dans `routes/web.php`.
|
||||
- Template PDF (`resources/views/pdf/documentation.blade.php`) créé.
|
||||
- 5 tests Pest créés pour la page Documentation (`tests/Feature/DocumentationTest.php`).
|
||||
- Règle Cursor `update-documentation.mdc` créée.
|
||||
- Memory bank entièrement réécrit avec accents français.
|
||||
- Total : 61 tests passent (165 assertions).
|
||||
|
||||
## Historique (2026-02-19)
|
||||
## Historique
|
||||
|
||||
- Installation de Filament v5.0.0 (31 packages ajoutes).
|
||||
- 5 pages Filament creees : TablesExplorer, Articles, Documents, Journaux, Tiers.
|
||||
- `LogisticsService` cree avec 17 endpoints.
|
||||
- Migration `api_request_logs` creee.
|
||||
- 8 tests Pest ecrits et valides.
|
||||
### 2026-02-20 (session design)
|
||||
|
||||
## Prochaines etapes
|
||||
- 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.php` amélioré : `selectTable()`, déduplication, filtre, computed property, métadonnées, labels de types.
|
||||
- Thème Filament personnalisé créé (`resources/css/filament/admin/theme.css`).
|
||||
- `AdminPanelProvider.php` mis à jour avec `->viteTheme()`.
|
||||
- 6 tests Pest créés pour `TablesExplorer` (Livewire).
|
||||
|
||||
- Deployer l'application sur le reseau distant (serveur accessible via RDP) ou mettre en place un tunnel SSH/VPN pour que l'application puisse joindre l'API.
|
||||
- Tester le dashboard avec de vraies donnees API une fois la connectivite reseau resolue.
|
||||
- Eventuellement : ajouter des pages pour les endpoints d'ecriture (document_add, document_mod).
|
||||
- Eventuellement : ameliorer l'affichage des resultats (pagination, formatage).
|
||||
### 2026-02-20 (session robustesse)
|
||||
|
||||
- `LogisticsService` mis à jour : timeout, connectTimeout, retry, gestion d'erreur avec `LogisticsApiException`.
|
||||
- `LogisticsApiException` créée dans `app/Exceptions/`.
|
||||
- `config/logistics.php` étendu avec timeout et retry.
|
||||
- `.env` et `.env.example` complétés avec les nouvelles variables.
|
||||
- Les 5 pages Filament mises à jour pour attraper `LogisticsApiException`.
|
||||
- Tests passés de 8 à 12.
|
||||
|
||||
### 2026-02-19
|
||||
|
||||
- Installation de Filament v5.0.0 (31 packages ajoutés).
|
||||
- 5 pages Filament créées : TablesExplorer, Articles, Documents, Journaux, Tiers.
|
||||
- `LogisticsService` créé avec 17 endpoints.
|
||||
- Migration `api_request_logs` créée.
|
||||
- 8 tests Pest écrits et validés.
|
||||
|
||||
## Prochaines étapes
|
||||
|
||||
- Tester toutes les pages avec de vraies données API et vérifier le rendu visuel.
|
||||
- Éventuellement : ajouter des pages pour les endpoints d'écriture (document_add, document_mod).
|
||||
- Éventuellement : ajouter de la pagination ou du tri côté client pour les grands tableaux.
|
||||
- Éventuellement : ajouter une page de consultation des logs API.
|
||||
|
||||
@@ -1,30 +1,33 @@
|
||||
# Product Context
|
||||
|
||||
Derniere mise a jour : 2026-02-20
|
||||
Dernière mise à jour : 2026-02-20
|
||||
|
||||
## Pourquoi ce projet existe
|
||||
|
||||
L'API Logistics (Flex/ESI Gescom) est un systeme de gestion commerciale accessible via une API REST. La documentation officielle est limitee. Ce projet a ete cree pour :
|
||||
L'API Logistics (Flex/ESI Gescom) est un système de gestion commerciale accessible via une API REST. La documentation officielle est limitée. Ce projet a été créé pour :
|
||||
|
||||
- Explorer les endpoints disponibles de maniere interactive.
|
||||
- Comprendre les parametres attendus et les formats de reponse.
|
||||
- Servir de base pour une documentation plus complete.
|
||||
- Explorer les endpoints disponibles de manière interactive.
|
||||
- Comprendre les paramètres attendus et les formats de réponse.
|
||||
- Servir de base pour une documentation plus complète.
|
||||
|
||||
## Problemes resolus
|
||||
## Problèmes résolus
|
||||
|
||||
- **Exploration de l'API** : Le dashboard permet de tester chaque endpoint avec des parametres personnalisables, sans avoir besoin de Postman.
|
||||
- **Comprehension de la structure** : La page "Tables" permet de decouvrir les tables et colonnes disponibles dans l'API.
|
||||
- **Tracabilite** : Chaque requete effectuee (reussie ou echouee) est enregistree dans `api_request_logs` pour pouvoir analyser les echanges.
|
||||
- **Resilience** : Les erreurs de connexion sont gerees avec retry automatique et messages explicites en francais.
|
||||
- **Exploration de l'API** : Le dashboard permet de tester chaque endpoint avec des paramètres personnalisables, sans avoir besoin de Postman.
|
||||
- **Compréhension de la structure** : La page "Tables" permet de découvrir les tables et colonnes disponibles dans l'API, avec déduplication automatique des colonnes retournées en double par l'API.
|
||||
- **Documentation intégrée** : La page "Documentation" affiche le markdown de la documentation API avec un rendu stylisé (typographie, tableaux, blocs de code) et propose un export PDF.
|
||||
- **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.
|
||||
- **Cohérence visuelle** : Un système de design unifié (composants `x-logistics.*`) garantit une présentation homogène sur toutes les pages.
|
||||
|
||||
## Experience utilisateur
|
||||
## Expérience utilisateur
|
||||
|
||||
L'utilisateur accede au dashboard Filament sur `http://api-logistics.test/admin`. La navigation laterale propose 5 pages :
|
||||
L'utilisateur accède au dashboard Filament sur `http://api-logistics.test/admin`. La navigation latérale propose 6 pages :
|
||||
|
||||
1. **Tables** : Cliquer sur une table pour voir ses colonnes. Utile pour connaitre les champs disponibles dans les parametres `select`.
|
||||
2. **Articles** : Formulaire de recherche (search, select, results) + verification du stock d'un article par son ARTID.
|
||||
3. **Documents** : Recherche par tiers (thirdid) + consultation du detail d'un document (jnl + number).
|
||||
4. **Journaux** : Recherche par type de journal (TYPE).
|
||||
5. **Tiers** : Recherche de tiers (search obligatoire) + historique des articles d'un tiers.
|
||||
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. Rendu avec typographie soignée (titres hiérarchisés, tableaux bordés, blocs de code colorés, liens bleus).
|
||||
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 (Caractère, Numérique, Date/Heure, Logique, Mémo).
|
||||
3. **Articles** : Formulaire de recherche (search, select, results) + vérification du stock d'un article par son ARTID. Résultats en tableau structuré, stock en JSON formaté.
|
||||
4. **Documents** : Recherche par tiers (thirdid) + consultation du détail d'un document (jnl + number). Détail en JSON formaté.
|
||||
5. **Journaux** : Recherche par type de journal (TYPE). Résultats en tableau structuré.
|
||||
6. **Tiers** : Recherche de tiers (search obligatoire) + historique des articles d'un tiers. Historique en JSON formaté.
|
||||
|
||||
Chaque page affiche les resultats sous forme de tableau dynamique et les metadonnees de la reponse (nombre de resultats, succes). En cas d'erreur de connexion a l'API, un message clair en francais est affiche a l'utilisateur.
|
||||
Toutes les pages utilisent le même système de design : cartes à en-tête séparé, badges de compteur, indicateurs de chargement sur les actions réseau, et états vides avec icônes explicatives. En cas d'erreur API, un bandeau rouge s'affiche avec le message en français.
|
||||
|
||||
@@ -1,43 +1,55 @@
|
||||
# Progress
|
||||
|
||||
Derniere mise a jour : 2026-02-20
|
||||
Dernière mise à jour : 2026-02-20
|
||||
|
||||
## Ce qui fonctionne
|
||||
|
||||
- [x] Projet Laravel 12 initialise (livewire-starter-kit)
|
||||
- [x] Livewire 4 + Flux UI Free v2 installes
|
||||
- [x] Fortify installe (authentification existante, non utilisee par Filament)
|
||||
- [x] Documentation API redigee (`documentation/WEB-A-1 (3).md`, `documentation/result.pdf`)
|
||||
- [x] Memory bank cree et structure (`memory-bank/`, `.cursor/rules/memory-bank.mdc`)
|
||||
- [x] Projet Laravel 12 initialisé (livewire-starter-kit)
|
||||
- [x] Livewire 4 + Flux UI Free v2 installés
|
||||
- [x] Fortify installé (authentification existante, non utilisée par Filament)
|
||||
- [x] Documentation API rédigée avec accents (`documentation/documentation_api_logistics.md`)
|
||||
- [x] Memory bank créé et structuré (`memory-bank/`, `.cursor/rules/memory-bank.mdc`)
|
||||
- [x] Configuration API Logistics (`.env`, `config/logistics.php`) avec timeout et retry
|
||||
- [x] `LogisticsService` cree (`app/Services/LogisticsService.php`) avec 17 methodes, timeout, retry, gestion d'erreur
|
||||
- [x] `LogisticsApiException` creee (`app/Exceptions/LogisticsApiException.php`) avec messages francais
|
||||
- [x] Migration `api_request_logs` creee
|
||||
- [x] Filament v5.0.0 installe et configure sans authentification
|
||||
- [x] 5 pages Filament creees : TablesExplorer, Articles, Documents, Journaux, Tiers
|
||||
- [x] 5 vues Blade associees dans `resources/views/filament/pages/`
|
||||
- [x] `LogisticsService` créé (`app/Services/LogisticsService.php`) avec 17 méthodes, timeout, retry, gestion d'erreur
|
||||
- [x] `LogisticsApiException` créée (`app/Exceptions/LogisticsApiException.php`) avec messages français
|
||||
- [x] Migration `api_request_logs` créée
|
||||
- [x] Filament v5.0.0 installé et configuré sans authentification
|
||||
- [x] 6 pages Filament créées : Documentation, TablesExplorer, Articles, Documents, Journaux, Tiers
|
||||
- [x] 6 vues Blade associées dans `resources/views/filament/pages/`
|
||||
- [x] Gestion d'erreur dans toutes les pages Filament (LogisticsApiException + Throwable)
|
||||
- [x] Logging des requetes API reussies et echouees dans `api_request_logs`
|
||||
- [x] 12 tests Pest pour LogisticsService (tous passent)
|
||||
- [x] `README.md` cree
|
||||
- [x] Formatage Pint valide
|
||||
- [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] Convention de design documentée dans `.cursor/rules/design-system.mdc`
|
||||
- [x] Toutes les pages Filament refactorisées avec les composants `x-logistics.*`
|
||||
- [x] Thème Filament personnalisé (`resources/css/filament/admin/theme.css`)
|
||||
- [x] Plugin `@tailwindcss/typography` activé pour le rendu prose
|
||||
- [x] Styles `.documentation-prose` personnalisés pour le dark mode (titres, tableaux, code, liens)
|
||||
- [x] TablesExplorer amélioré : selectTable, déduplication colonnes, filtre, badges de types
|
||||
- [x] Page Documentation avec rendu markdown stylisé et export PDF
|
||||
- [x] Connectivité API fonctionnelle (serveur `tse-10-test.esi.local`)
|
||||
- [x] Convention d'écriture avec accents français appliquée
|
||||
- [x] 61 tests Pest (tous passent)
|
||||
- [x] `README.md` créé
|
||||
- [x] Formatage Pint validé
|
||||
- [x] CI GitHub Actions (lint + tests)
|
||||
|
||||
## Ce qui reste a faire
|
||||
## Ce qui reste à faire
|
||||
|
||||
- [ ] Resoudre la connectivite reseau : deployer sur le reseau distant ou mettre en place un tunnel
|
||||
- [ ] Tester le dashboard avec de vraies donnees API
|
||||
- [ ] Eventuellement : pages d'ecriture (document_add, document_mod)
|
||||
- [ ] Eventuellement : ameliorer l'affichage des resultats (pagination, formatage)
|
||||
- [ ] Vérifier le rendu visuel de toutes les pages avec de vraies données API
|
||||
- [ ] Éventuellement : pages d'écriture (document_add, document_mod)
|
||||
- [ ] Éventuellement : pagination / tri côté client pour les grands tableaux
|
||||
- [ ] Éventuellement : page de consultation des logs API
|
||||
|
||||
## Problemes connus
|
||||
## Problèmes connus
|
||||
|
||||
- **API injoignable depuis la machine locale** : Le serveur `tse-10-test.esiweb.pro` est sur un reseau prive accessible uniquement via Bureau a distance (RDP). L'application locale recoit `cURL error 28: Connection timed out`. Solution : deployer sur le reseau distant ou creer un tunnel SSH/VPN.
|
||||
- L'erreur `SQLSTATE[HY000] [1049] Unknown database` peut apparaitre lors de `composer update` si la base n'est pas encore creee (script `boost:update`). Sans impact une fois la base creee.
|
||||
- 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.
|
||||
|
||||
## Metriques
|
||||
## Métriques
|
||||
|
||||
- Tests : 12 (tous passent, 18 assertions)
|
||||
- Pages Filament : 5
|
||||
- Tests : 61 (tous passent, 165 assertions)
|
||||
- Pages Filament : 6 (Documentation, TablesExplorer, Articles, Documents, Journaux, Tiers)
|
||||
- Composants Blade design system : 10
|
||||
- Endpoints API couverts par LogisticsService : 17
|
||||
- Migrations : 5 (users, cache, jobs, two_factor, api_request_logs)
|
||||
- Règles Cursor : 4 (laravel-boost, memory-bank, design-system, update-documentation)
|
||||
|
||||
@@ -1,36 +1,42 @@
|
||||
# Project Brief
|
||||
|
||||
Derniere mise a jour : 2026-02-20
|
||||
Dernière mise à jour : 2026-02-20
|
||||
|
||||
## Vision
|
||||
|
||||
Application Laravel de test dont l'objectif est de comprendre le fonctionnement de l'API Logistics (Flex/ESI Gescom) et d'en produire une documentation complete et comprehensible.
|
||||
Application Laravel de test dont l'objectif est de comprendre le fonctionnement de l'API Logistics (Flex/ESI Gescom) et d'en produire une documentation complète et compréhensible.
|
||||
|
||||
## Objectifs
|
||||
|
||||
1. Comprendre le fonctionnement de l'API Logistics.
|
||||
2. Creer une application simple permettant d'envoyer et de recuperer des donnees vers/depuis l'API.
|
||||
3. Produire une documentation complete et comprehensible de l'API.
|
||||
2. Créer une application simple permettant d'envoyer et de récupérer des données vers/depuis l'API.
|
||||
3. Produire une documentation complète et compréhensible de l'API.
|
||||
|
||||
## Perimetre fonctionnel
|
||||
## Périmètre fonctionnel
|
||||
|
||||
- Dashboard Filament v5 accessible sans authentification sur `/admin`.
|
||||
- Pages de consultation pour les principales entites de l'API : tables, articles, documents, journaux, tiers.
|
||||
- Formulaires de recherche parametrables pour chaque endpoint.
|
||||
- Affichage des resultats bruts retournes par l'API.
|
||||
- Tracage des requetes effectuees dans une table `api_request_logs`.
|
||||
- Gestion robuste des erreurs API (timeout, retry, messages utilisateur en francais).
|
||||
- Pages de consultation pour les principales entités de l'API : tables, articles, documents, journaux, tiers.
|
||||
- Page de documentation intégrée avec rendu stylisé du markdown et export PDF.
|
||||
- Formulaires de recherche paramétrables pour chaque endpoint.
|
||||
- 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.*`).
|
||||
- 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).
|
||||
|
||||
## Contraintes
|
||||
|
||||
- Pas d'authentification sur le dashboard (projet de test interne).
|
||||
- L'API Logistics est hebergee sur le serveur TSE-10-TEST (`http://tse-10-test.esiweb.pro`).
|
||||
- Le serveur API est accessible uniquement via le reseau interne (connexion Bureau a distance / RDP requise). L'application doit etre deployee sur ce reseau ou un tunnel doit etre mis en place.
|
||||
- Toutes les requetes API sont en POST et necessitent un header `X-API-KEY`.
|
||||
- Le nom du dossier dans les URLs de l'API doit etre en minuscules.
|
||||
- L'API Logistics est hébergée sur le serveur TSE-10-TEST (`http://tse-10-test.esi.local`).
|
||||
- Le serveur API est accessible via le réseau interne.
|
||||
- Toutes les requêtes API sont en POST et nécessitent un header `X-API-KEY`.
|
||||
- Le nom du dossier dans les URLs de l'API doit être en minuscules.
|
||||
|
||||
## Convention d'écriture
|
||||
|
||||
Tous les contenus rédigés en français (documentation, memory bank, règles Cursor, commentaires) doivent utiliser les accents appropriés.
|
||||
|
||||
## Ressources
|
||||
|
||||
- Documentation Postman : https://documenter.getpostman.com/view/40440561/2sB2qaj2Pz
|
||||
- Documentation interne : `documentation/WEB-A-1 (3).md` et `documentation/result.pdf`
|
||||
- Documentation interne : `documentation/documentation_api_logistics.md`
|
||||
- Fichier projet : `project.md`
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# System Patterns
|
||||
|
||||
Derniere mise a jour : 2026-02-20
|
||||
Dernière mise à jour : 2026-02-20
|
||||
|
||||
## Architecture applicative
|
||||
|
||||
@@ -17,72 +17,131 @@ Utilisateur --> Filament Dashboard (/admin)
|
||||
| (retry automatique sur ConnectionException)
|
||||
|
|
||||
+---> api_request_logs (MySQL)
|
||||
| (succes ET echecs)
|
||||
| (succès ET échecs)
|
||||
|
|
||||
+---> LogisticsApiException (en cas d'erreur)
|
||||
```
|
||||
|
||||
## Patterns utilises
|
||||
## Patterns utilisés
|
||||
|
||||
### Service centralise
|
||||
### Service centralisé
|
||||
|
||||
`App\Services\LogisticsService` encapsule tous les appels HTTP vers l'API Logistics. Chaque methode publique correspond a un endpoint. Le service :
|
||||
`App\Services\LogisticsService` encapsule tous les appels HTTP vers l'API Logistics. Chaque méthode publique correspond à un endpoint. Le service :
|
||||
|
||||
- Construit l'URL a partir de `config('logistics.base_url')`, `config('logistics.folder')` et le nom de l'endpoint.
|
||||
- Construit l'URL à partir de `config('logistics.base_url')`, `config('logistics.folder')` et le nom de l'endpoint.
|
||||
- Ajoute automatiquement le header `X-API-KEY`.
|
||||
- Configure `timeout()` et `connectTimeout()` depuis la config.
|
||||
- Effectue un retry automatique (nombre et delai configurables) uniquement sur les `ConnectionException`.
|
||||
- Enregistre chaque requete dans la table `api_request_logs` (succes et echecs).
|
||||
- Retourne un tableau PHP avec les cles `data`, `metadata`, `error`.
|
||||
- Lance une `LogisticsApiException` en cas d'erreur de connexion ou de requete.
|
||||
- Effectue un retry automatique (nombre et délai configurables) uniquement sur les `ConnectionException`.
|
||||
- Enregistre chaque requête dans la table `api_request_logs` (succès et échecs).
|
||||
- Retourne un tableau PHP avec les clés `data`, `metadata`, `error`.
|
||||
- Lance une `LogisticsApiException` en cas d'erreur de connexion ou de requête.
|
||||
|
||||
### Exception dediee
|
||||
### Exception dédiée
|
||||
|
||||
`App\Exceptions\LogisticsApiException` (etend `RuntimeException`) fournit :
|
||||
`App\Exceptions\LogisticsApiException` (étend `RuntimeException`) fournit :
|
||||
|
||||
- Des messages d'erreur en francais lisibles par l'utilisateur.
|
||||
- Des proprietes `endpoint` et `params` pour le contexte de l'erreur.
|
||||
- Deux methodes statiques : `connectionTimeout()` (API injoignable) et `requestFailed()` (erreur de requete).
|
||||
- Des messages d'erreur en français lisibles par l'utilisateur.
|
||||
- Des propriétés `endpoint` et `params` pour le contexte de l'erreur.
|
||||
- Deux méthodes statiques : `connectionTimeout()` (API injoignable) et `requestFailed()` (erreur de requête).
|
||||
|
||||
### Pages Filament personnalisees (pas de Resources)
|
||||
### Pages Filament personnalisées (pas de Resources)
|
||||
|
||||
L'application n'utilise pas de Resources Filament (pas de CRUD local). Chaque page Filament :
|
||||
|
||||
- Etend `Filament\Pages\Page`.
|
||||
- Utilise des proprietes Livewire publiques pour les champs de formulaire.
|
||||
- Appelle `LogisticsService` via `app(LogisticsService::class)` dans des methodes d'action (ex: `searchArticles()`).
|
||||
- Attrape `LogisticsApiException` pour afficher un message clair, et `\Throwable` en fallback.
|
||||
- Affiche les resultats dans des tableaux HTML dynamiques generes dans les vues Blade.
|
||||
- Étend `Filament\Pages\Page`.
|
||||
- Utilise des propriétés Livewire publiques pour les champs de formulaire.
|
||||
- Appelle `LogisticsService` via `app(LogisticsService::class)` dans des méthodes d'action (ex: `searchArticles()`).
|
||||
- Attrape `LogisticsApiException` en premier, puis `\Throwable` en fallback.
|
||||
- Affiche les résultats via les composants du système de design `x-logistics.*`.
|
||||
|
||||
### Configuration externalisee
|
||||
### Page Documentation
|
||||
|
||||
Les parametres de connexion a l'API (URL, cle, dossier, timeout, retry) sont dans `config/logistics.php` et lus depuis `.env`.
|
||||
`App\Filament\Pages\Documentation` est une page spéciale qui :
|
||||
|
||||
## Structure des repertoires
|
||||
- Lit le fichier `documentation/documentation_api_logistics.md` au montage.
|
||||
- Convertit le markdown en HTML via `Str::markdown()`.
|
||||
- Affiche le contenu dans une vue avec la classe CSS `.documentation-prose` pour un rendu stylisé.
|
||||
- Propose deux actions d'en-tête : télécharger en PDF (via `barryvdh/laravel-dompdf`) et ouvrir dans un nouvel onglet.
|
||||
|
||||
### Système de design (composants Blade)
|
||||
|
||||
Convention documentée dans `.cursor/rules/design-system.mdc`. Tous les composants visuels réutilisables sont dans `resources/views/components/logistics/` :
|
||||
|
||||
| Composant | Rôle |
|
||||
|-----------|------|
|
||||
| `<x-logistics.card>` | Conteneur blanc arrondi avec ombre et anneau |
|
||||
| `<x-logistics.section-header>` | En-tête de section (titre, description, slot `actions`) |
|
||||
| `<x-logistics.error-banner>` | Bandeau d'erreur API conditionnel |
|
||||
| `<x-logistics.stat-bar>` | Barre horizontale de métadonnées |
|
||||
| `<x-logistics.stat-item>` | Élément individuel (icône + label + valeur) |
|
||||
| `<x-logistics.data-table>` | Tableau dynamique avec en-têtes auto-détectés et état vide |
|
||||
| `<x-logistics.empty-state>` | État vide centré (icône + titre + description) |
|
||||
| `<x-logistics.search-input>` | Champ de recherche avec icône loupe intégrée |
|
||||
| `<x-logistics.form-field>` | Champ de formulaire (label + input) à espacement homogène |
|
||||
| `<x-logistics.json-block>` | Bloc JSON formaté avec bordure et fond adapté |
|
||||
|
||||
Règles :
|
||||
- Toujours utiliser les composants `x-logistics.*` au lieu de dupliquer les classes CSS.
|
||||
- Un `<x-logistics.card>` n'a pas de padding interne. Le padding est géré par les enfants (`<div class="p-6">`).
|
||||
- Le `<x-logistics.section-header>` est le premier enfant d'une carte et crée une bordure de séparation.
|
||||
- Toutes les actions réseau doivent avoir un indicateur de chargement (`wire:loading`).
|
||||
|
||||
### Thème Filament personnalisé
|
||||
|
||||
Le panel Filament utilise un thème CSS personnalisé (`resources/css/filament/admin/theme.css`) enregistré via `->viteTheme()` dans `AdminPanelProvider`. Ce thème :
|
||||
|
||||
- Importe le CSS de base Filament.
|
||||
- Active le plugin `@tailwindcss/typography` pour les classes `prose`.
|
||||
- Scanne les fichiers `app/Filament/**/*`, `resources/views/filament/**/*`, et `resources/views/components/logistics/**/*` pour inclure les classes Tailwind utilisées dans les composants.
|
||||
- Contient des styles CSS personnalisés pour la classe `.documentation-prose` : hiérarchie de titres (h1-h4 avec bordures), tableaux avec bordures et en-têtes stylisés, blocs de code avec fond sombre, code inline avec fond distinct, liens colorés, listes avec marqueurs, séparateurs horizontaux visibles.
|
||||
|
||||
Après tout ajout de nouvelles classes Tailwind dans ces fichiers, il faut exécuter `npm run build`.
|
||||
|
||||
### Configuration externalisée
|
||||
|
||||
Les paramètres de connexion à l'API (URL, clé, dossier, timeout, retry) sont dans `config/logistics.php` et lus depuis `.env`.
|
||||
|
||||
## Structure des répertoires
|
||||
|
||||
```
|
||||
app/
|
||||
Exceptions/
|
||||
LogisticsApiException.php # Exception dediee API
|
||||
LogisticsApiException.php # Exception dédiée API
|
||||
Filament/
|
||||
Pages/
|
||||
Articles.php # Recherche articles + stock
|
||||
Documents.php # Recherche documents + detail
|
||||
Dashboard.php # Page d'accueil
|
||||
Documentation.php # Documentation API (markdown -> HTML)
|
||||
Documents.php # Recherche documents + détail
|
||||
Journaux.php # Recherche journaux
|
||||
TablesExplorer.php # Exploration tables + colonnes
|
||||
TablesExplorer.php # Exploration tables + colonnes (filtre, déduplication, types)
|
||||
Tiers.php # Recherche tiers + historique
|
||||
Models/
|
||||
User.php # Modele utilisateur (Fortify)
|
||||
User.php # Modèle utilisateur (Fortify)
|
||||
Providers/
|
||||
Filament/
|
||||
AdminPanelProvider.php # Configuration du panel (sans auth)
|
||||
AdminPanelProvider.php # Configuration du panel (sans auth, viteTheme)
|
||||
FortifyServiceProvider.php # Authentification Fortify
|
||||
AppServiceProvider.php # Config globale (CarbonImmutable, DB safety)
|
||||
Services/
|
||||
LogisticsService.php # Service centralise API Logistics
|
||||
LogisticsService.php # Service centralisé API Logistics
|
||||
|
||||
config/
|
||||
logistics.php # Configuration API Logistics (URL, cle, timeout, retry)
|
||||
logistics.php # Configuration API Logistics (URL, clé, timeout, retry)
|
||||
|
||||
documentation/
|
||||
documentation_api_logistics.md # Documentation complète de l'API (avec accents)
|
||||
|
||||
resources/
|
||||
css/
|
||||
app.css # CSS principal (Tailwind 4, Flux UI)
|
||||
filament/admin/
|
||||
theme.css # Thème Filament personnalisé (Tailwind 4 + Typography + prose)
|
||||
views/
|
||||
components/logistics/ # 10 composants du système de design
|
||||
filament/pages/ # 6 vues de pages Filament
|
||||
pdf/
|
||||
documentation.blade.php # Template PDF pour la documentation
|
||||
|
||||
database/
|
||||
migrations/
|
||||
@@ -92,23 +151,32 @@ database/
|
||||
...add_two_factor_columns_to_users_table.php
|
||||
...create_api_request_logs_table.php
|
||||
|
||||
resources/views/
|
||||
filament/pages/
|
||||
articles.blade.php
|
||||
documents.blade.php
|
||||
journaux.blade.php
|
||||
tables-explorer.blade.php
|
||||
tiers.blade.php
|
||||
|
||||
tests/Feature/
|
||||
LogisticsServiceTest.php # 12 tests avec mocks HTTP
|
||||
DocumentationTest.php # 5 tests page Documentation (Livewire + PDF)
|
||||
LogisticsServiceTest.php # 12 tests service API (mocks HTTP)
|
||||
TablesExplorerTest.php # 6 tests page TablesExplorer (Livewire)
|
||||
FilamentDashboardTest.php # Tests dashboard Filament
|
||||
DashboardTest.php # Tests dashboard
|
||||
ExampleTest.php # Test d'exemple Laravel
|
||||
|
||||
routes/
|
||||
web.php # Routes web (home, dashboard, documentation PDF)
|
||||
|
||||
.cursor/rules/
|
||||
design-system.mdc # Convention de design (composants, CSS, structure)
|
||||
memory-bank.mdc # Gestion du memory bank
|
||||
update-documentation.mdc # Procédure de mise à jour de la documentation
|
||||
laravel-boost.mdc # Règles Laravel Boost
|
||||
```
|
||||
|
||||
## Conventions
|
||||
|
||||
- Filament v5 : les icones de navigation utilisent l'enum `Filament\Support\Icons\Heroicon` (pas de strings).
|
||||
- Filament v5 : la propriete `$view` est non-static (`protected string $view`).
|
||||
- Les proprietes statiques (`$navigationIcon`, `$navigationLabel`, `$title`, `$navigationSort`) restent static.
|
||||
- Filament v5 : les icônes de navigation utilisent l'enum `Filament\Support\Icons\Heroicon` (pas de strings).
|
||||
- Filament v5 : la propriété `$view` est non-static (`protected string $view`).
|
||||
- Les propriétés statiques (`$navigationIcon`, `$navigationLabel`, `$title`, `$navigationSort`) restent static.
|
||||
- Les appels API passent toujours par `LogisticsService`, jamais directement par `Http::`.
|
||||
- Les pages Filament attrapent `LogisticsApiException` en premier, puis `\Throwable` en fallback.
|
||||
- Les messages d'erreur affiches a l'utilisateur sont en francais.
|
||||
- Les messages d'erreur affichés à l'utilisateur sont en français.
|
||||
- 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.
|
||||
|
||||
@@ -1,39 +1,51 @@
|
||||
# Tech Context
|
||||
|
||||
Derniere mise a jour : 2026-02-20
|
||||
Dernière mise à jour : 2026-02-20
|
||||
|
||||
## Stack technique
|
||||
|
||||
| Composant | Version | Role |
|
||||
| Composant | Version | Rôle |
|
||||
|-----------|---------|------|
|
||||
| PHP | 8.4 | Langage serveur |
|
||||
| Laravel | 12 | Framework applicatif |
|
||||
| Filament | 5.0 | Panel admin / dashboard |
|
||||
| Livewire | 4 | Composants reactifs |
|
||||
| Livewire | 4 | Composants réactifs |
|
||||
| Flux UI Free | 2.9+ | Composants UI Livewire |
|
||||
| Fortify | 1.30+ | Authentification (existant, non utilise par Filament) |
|
||||
| Fortify | 1.30+ | Authentification (existant, non utilisé par Filament) |
|
||||
| Pest | 4.4+ | Framework de tests |
|
||||
| MySQL | - | Base de donnees |
|
||||
| Vite | - | Bundler frontend |
|
||||
| Tailwind CSS | 4 | Framework CSS |
|
||||
| MySQL | - | Base de données |
|
||||
| Vite | 7.3 | Bundler frontend |
|
||||
| Tailwind CSS | 4 | Framework CSS (via @tailwindcss/vite) |
|
||||
| @tailwindcss/typography | 0.5.19 | Plugin prose pour le rendu markdown |
|
||||
| barryvdh/laravel-dompdf | - | Génération PDF |
|
||||
|
||||
## Dependances principales (composer.json)
|
||||
## Dépendances principales (composer.json)
|
||||
|
||||
- `filament/filament: ^5.0`
|
||||
- `laravel/framework: ^12.0`
|
||||
- `livewire/livewire: ^4.0`
|
||||
- `livewire/flux: ^2.9.0`
|
||||
- `laravel/fortify: ^1.30`
|
||||
- `barryvdh/laravel-dompdf` (export PDF de la documentation)
|
||||
|
||||
## Frontend
|
||||
|
||||
- Tailwind CSS 4 avec le plugin Vite `@tailwindcss/vite`
|
||||
- Plugin `@tailwindcss/typography` (v0.5.19) pour le rendu prose du markdown
|
||||
- Thème Filament personnalisé : `resources/css/filament/admin/theme.css`
|
||||
- Le thème Filament scanne les sources : `app/Filament/**/*`, `resources/views/filament/**/*`, `resources/views/components/logistics/**/*`
|
||||
- Le thème inclut des styles CSS personnalisés pour la classe `.documentation-prose` (titres, tableaux, blocs de code, liens, listes) optimisés pour le dark mode Filament
|
||||
- Build : `npm run build` (recompile `app.css` et `theme.css`)
|
||||
|
||||
## Configuration
|
||||
|
||||
### Variables d'environnement specifiques
|
||||
### Variables d'environnement spécifiques
|
||||
|
||||
```
|
||||
LOGISTICS_API_BASE_URL=http://tse-10-test.esiweb.pro
|
||||
LOGISTICS_API_KEY=<cle API>
|
||||
LOGISTICS_API_BASE_URL=http://tse-10-test.esi.local
|
||||
LOGISTICS_API_KEY=<clé API>
|
||||
LOGISTICS_API_FOLDER=esigescom
|
||||
LOGISTICS_API_TIMEOUT=30
|
||||
LOGISTICS_API_TIMEOUT=300
|
||||
LOGISTICS_API_CONNECT_TIMEOUT=10
|
||||
LOGISTICS_API_RETRY_TIMES=3
|
||||
LOGISTICS_API_RETRY_SLEEP_MS=500
|
||||
@@ -41,17 +53,17 @@ LOGISTICS_API_RETRY_SLEEP_MS=500
|
||||
|
||||
Fichier de config : `config/logistics.php`
|
||||
|
||||
| Cle de config | Variable .env | Defaut | Description |
|
||||
| Clé de config | Variable .env | Défaut | Description |
|
||||
|---------------|---------------|--------|-------------|
|
||||
| `logistics.base_url` | `LOGISTICS_API_BASE_URL` | - | URL de base de l'API |
|
||||
| `logistics.api_key` | `LOGISTICS_API_KEY` | - | Cle d'authentification |
|
||||
| `logistics.api_key` | `LOGISTICS_API_KEY` | - | Clé d'authentification |
|
||||
| `logistics.folder` | `LOGISTICS_API_FOLDER` | - | Dossier dans l'URL |
|
||||
| `logistics.timeout` | `LOGISTICS_API_TIMEOUT` | 30 | Timeout total de la requete (secondes) |
|
||||
| `logistics.timeout` | `LOGISTICS_API_TIMEOUT` | 30 | Timeout total de la requête (secondes) |
|
||||
| `logistics.connect_timeout` | `LOGISTICS_API_CONNECT_TIMEOUT` | 10 | Timeout de connexion (secondes) |
|
||||
| `logistics.retry.times` | `LOGISTICS_API_RETRY_TIMES` | 3 | Nombre de tentatives en cas d'echec de connexion |
|
||||
| `logistics.retry.sleep_ms` | `LOGISTICS_API_RETRY_SLEEP_MS` | 500 | Delai entre les tentatives (ms) |
|
||||
| `logistics.retry.times` | `LOGISTICS_API_RETRY_TIMES` | 3 | Nombre de tentatives en cas d'échec de connexion |
|
||||
| `logistics.retry.sleep_ms` | `LOGISTICS_API_RETRY_SLEEP_MS` | 500 | Délai entre les tentatives (ms) |
|
||||
|
||||
### Base de donnees
|
||||
### Base de données
|
||||
|
||||
- Connexion : MySQL
|
||||
- Base : `logistics`
|
||||
@@ -61,26 +73,28 @@ Fichier de config : `config/logistics.php`
|
||||
|
||||
### Connexion
|
||||
|
||||
- Serveur : TSE-10-TEST (reseau prive, accessible uniquement via Bureau a distance / RDP)
|
||||
- Base URL : `http://tse-10-test.esiweb.pro`
|
||||
- Serveur : TSE-10-TEST (réseau privé)
|
||||
- Base URL : `http://tse-10-test.esi.local`
|
||||
- Dossier : `esigescom` (minuscules obligatoires)
|
||||
- Authentification : Header `X-API-KEY`
|
||||
- Methode : POST pour tous les endpoints
|
||||
- Port HTTP : 5186 / Port HTTPS : 7126
|
||||
- Méthode : POST pour tous les endpoints
|
||||
|
||||
### Structure de reponse
|
||||
### Structure de réponse
|
||||
|
||||
```json
|
||||
{
|
||||
"data": "<resultat>",
|
||||
"data": "<résultat>",
|
||||
"metadata": { "rowcount": 0, "issuccess": true },
|
||||
"error": "<message d'erreur ou null>"
|
||||
}
|
||||
```
|
||||
|
||||
Réponse `tables_list` : chaque table a `name` et `columnCount`.
|
||||
Réponse `column_list` : chaque colonne a `name`, `dataType` (C/N/T/D/L/M), `length`, `precision`. Les colonnes sont retournées en double par l'API (dédupliquées côté client).
|
||||
|
||||
### Endpoints
|
||||
|
||||
| Endpoint | Description | Parametres principaux |
|
||||
| Endpoint | Description | Paramètres principaux |
|
||||
|----------|-------------|-----------------------|
|
||||
| `tables_list` | Liste des tables | - |
|
||||
| `column_list/{table}` | Colonnes d'une table | table (URL) |
|
||||
@@ -88,18 +102,29 @@ Fichier de config : `config/logistics.php`
|
||||
| `art_getstk` | Stock d'un article | ARTID |
|
||||
| `jnl_list` | Liste des journaux | select, results, TYPE |
|
||||
| `document_list` | Liste des documents | select, thirdid |
|
||||
| `document_detail` | Detail d'un document | jnl, number |
|
||||
| `document_detail` | Détail d'un document | jnl, number |
|
||||
| `document_add` | Ajout d'un document | ThirdId, Date, Artid[], Qty[], Saleprice[], JNL, ... |
|
||||
| `document_mod` | Modification d'un document | number, Thirdid, Artid[], Qty[], Saleprice[], JNL, ... |
|
||||
| `Document_GetStatusList` | Statuts d'un journal | jnl |
|
||||
| `Document_GetUnitPriceAndVat` | Prix et TVA | ARTID, QTY, JNL, THIRDID, DATE |
|
||||
| `Document_GetDueDate` | Echeance | paydelay, date |
|
||||
| `Document_GetDueDate` | Échéance | paydelay, date |
|
||||
| `Document_GetAttachListThumbnail` | Miniatures annexes | JNL, NUMBER |
|
||||
| `third_list` | Liste des tiers | select, results, search |
|
||||
| `third_GetArtHistory` | Historique articles tiers | thirdid |
|
||||
| `getserialnumber` | Numero de serie | - |
|
||||
| `codes_list` | Donnees par code | code |
|
||||
| `getserialnumber` | Numéro de série | - |
|
||||
| `codes_list` | Données par code | code |
|
||||
|
||||
### Tables accessibles
|
||||
|
||||
art, attach, barcode, category, codes, cust, docdet, dochead, docpay, file, hist, incodes, jnl, pers, price, stk
|
||||
art (160 col.), attach (13), barcode (12), category (10), codes (50), cust (216), docdet (82), dochead (212), docpay (22), file (17), hist (50), incodes (24), jnl (155), pers (78), price (28), stk (20)
|
||||
|
||||
### Types de colonnes (dataType)
|
||||
|
||||
| Code | Label | Couleur badge |
|
||||
|------|-------|---------------|
|
||||
| C | Caractère | Bleu |
|
||||
| N | Numérique | Vert (emerald) |
|
||||
| T | Date/Heure | Violet |
|
||||
| D | Date | Violet |
|
||||
| L | Logique | Ambre |
|
||||
| M | Mémo | Gris |
|
||||
|
||||
Reference in New Issue
Block a user