🎉 First commit
This commit is contained in:
24
memory-bank/README.md
Normal file
24
memory-bank/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Memory Bank
|
||||
|
||||
Derniere mise a jour : 2026-02-19
|
||||
|
||||
## Presentation
|
||||
|
||||
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.
|
||||
|
||||
## 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 |
|
||||
| `systemPatterns.md` | Architecture, patterns, structure des repertoires |
|
||||
| `activeContext.md` | Travail en cours, decisions recentes, prochaines etapes |
|
||||
| `progress.md` | Avancement, ce qui fonctionne, ce qui reste a faire |
|
||||
|
||||
## 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).
|
||||
33
memory-bank/activeContext.md
Normal file
33
memory-bank/activeContext.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Active Context
|
||||
|
||||
Derniere mise a jour : 2026-02-19
|
||||
|
||||
## Travail en cours
|
||||
|
||||
Aucun travail en cours. Le setup initial du projet est termine.
|
||||
|
||||
## Decisions recentes
|
||||
|
||||
- **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.
|
||||
- **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.
|
||||
|
||||
## Changements importants
|
||||
|
||||
- Installation de Filament v5.0.0 (31 packages ajoutes).
|
||||
- 5 pages Filament creees : TablesExplorer, Articles, Documents, Journaux, Tiers.
|
||||
- `LogisticsService` couvre 17 endpoints de l'API.
|
||||
- Migration `api_request_logs` creee pour le tracage des requetes.
|
||||
- 8 tests Pest ecrits et valides pour le service.
|
||||
|
||||
## Prochaines etapes
|
||||
|
||||
- L'utilisateur doit creer la base de donnees MySQL `api_logistics`.
|
||||
- L'utilisateur doit executer `php artisan migrate`.
|
||||
- L'utilisateur doit renseigner sa cle API dans `.env` (`LOGISTICS_API_KEY`).
|
||||
- L'utilisateur doit executer `npm run build`.
|
||||
- Tester le dashboard avec de vraies donnees API.
|
||||
- Eventuellement : ajouter des pages pour les endpoints d'ecriture (document_add, document_mod).
|
||||
29
memory-bank/productContext.md
Normal file
29
memory-bank/productContext.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Product Context
|
||||
|
||||
Derniere mise a jour : 2026-02-19
|
||||
|
||||
## 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 :
|
||||
|
||||
- Explorer les endpoints disponibles de maniere interactive.
|
||||
- Comprendre les parametres attendus et les formats de reponse.
|
||||
- Servir de base pour une documentation plus complete.
|
||||
|
||||
## Problemes resolus
|
||||
|
||||
- **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 est enregistree dans `api_request_logs` pour pouvoir analyser les echanges.
|
||||
|
||||
## Experience utilisateur
|
||||
|
||||
L'utilisateur accede au dashboard Filament sur `http://api-logistics.test/admin`. La navigation laterale propose 5 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.
|
||||
|
||||
Chaque page affiche les resultats sous forme de tableau dynamique et les metadonnees de la reponse (nombre de resultats, succes).
|
||||
41
memory-bank/progress.md
Normal file
41
memory-bank/progress.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Progress
|
||||
|
||||
Derniere mise a jour : 2026-02-19
|
||||
|
||||
## 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] Configuration API Logistics (`.env`, `config/logistics.php`)
|
||||
- [x] `LogisticsService` cree (`app/Services/LogisticsService.php`) avec 17 methodes
|
||||
- [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] 8 tests Pest pour LogisticsService (tous passent)
|
||||
- [x] `README.md` cree
|
||||
- [x] Formatage Pint valide
|
||||
|
||||
## Ce qui reste a faire
|
||||
|
||||
- [ ] Creer la base de donnees MySQL `api_logistics` (a faire par l'utilisateur)
|
||||
- [ ] Executer `php artisan migrate` (a faire par l'utilisateur)
|
||||
- [ ] Renseigner la cle API dans `.env` (`LOGISTICS_API_KEY`)
|
||||
- [ ] Executer `npm run build`
|
||||
- [ ] Tester le dashboard avec de vraies donnees API
|
||||
- [ ] Eventuellement : pages d'ecriture (document_add, document_mod)
|
||||
- [ ] Eventuellement : ameliorer l'affichage des resultats (pagination, formatage)
|
||||
|
||||
## Problemes connus
|
||||
|
||||
- L'erreur `SQLSTATE[HY000] [1049] Unknown database 'api_logistics'` apparait lors de `composer update` car le script `boost:update` tente d'acceder a la base de donnees qui n'existe pas encore. Sans impact sur le fonctionnement une fois la base creee.
|
||||
|
||||
## Metriques
|
||||
|
||||
- Tests : 8 (tous passent)
|
||||
- Pages Filament : 5
|
||||
- Endpoints API couverts par LogisticsService : 17
|
||||
- Migrations : 5 (users, cache, jobs, two_factor, api_request_logs)
|
||||
34
memory-bank/projectbrief.md
Normal file
34
memory-bank/projectbrief.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Project Brief
|
||||
|
||||
Derniere mise a jour : 2026-02-19
|
||||
|
||||
## 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.
|
||||
|
||||
## 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.
|
||||
|
||||
## Perimetre 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`.
|
||||
|
||||
## 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`).
|
||||
- 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.
|
||||
|
||||
## Ressources
|
||||
|
||||
- Documentation Postman : https://documenter.getpostman.com/view/40440561/2sB2qaj2Pz
|
||||
- Documentation interne : `documentation/WEB-A-1 (3).md` et `documentation/result.pdf`
|
||||
- Fichier projet : `project.md`
|
||||
92
memory-bank/systemPatterns.md
Normal file
92
memory-bank/systemPatterns.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# System Patterns
|
||||
|
||||
Derniere mise a jour : 2026-02-19
|
||||
|
||||
## Architecture applicative
|
||||
|
||||
```
|
||||
Utilisateur --> Filament Dashboard (/admin)
|
||||
|
|
||||
v
|
||||
Pages Filament (Livewire)
|
||||
|
|
||||
v
|
||||
LogisticsService (app/Services/)
|
||||
|
|
||||
+---> API Logistics (HTTP POST + X-API-KEY)
|
||||
|
|
||||
+---> api_request_logs (MySQL)
|
||||
```
|
||||
|
||||
## Patterns utilises
|
||||
|
||||
### Service centralise
|
||||
|
||||
`App\Services\LogisticsService` encapsule tous les appels HTTP vers l'API Logistics. Chaque methode publique correspond a un endpoint. Le service :
|
||||
|
||||
- Construit l'URL a partir de `config('logistics.base_url')`, `config('logistics.folder')` et le nom de l'endpoint.
|
||||
- Ajoute automatiquement le header `X-API-KEY`.
|
||||
- Enregistre chaque requete dans la table `api_request_logs`.
|
||||
- Retourne un tableau PHP avec les cles `data`, `metadata`, `error`.
|
||||
|
||||
### Pages Filament personnalisees (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()`).
|
||||
- Affiche les resultats dans des tableaux HTML dynamiques generes dans les vues Blade.
|
||||
|
||||
### Configuration externalisee
|
||||
|
||||
Les parametres de connexion a l'API sont dans `config/logistics.php` et lus depuis `.env`.
|
||||
|
||||
## Structure des repertoires
|
||||
|
||||
```
|
||||
app/
|
||||
Filament/
|
||||
Pages/
|
||||
Articles.php # Recherche articles + stock
|
||||
Documents.php # Recherche documents + detail
|
||||
Journaux.php # Recherche journaux
|
||||
TablesExplorer.php # Exploration tables + colonnes
|
||||
Tiers.php # Recherche tiers + historique
|
||||
Models/
|
||||
User.php # Modele utilisateur (Fortify)
|
||||
Providers/
|
||||
Filament/
|
||||
AdminPanelProvider.php # Configuration du panel (sans auth)
|
||||
Services/
|
||||
LogisticsService.php # Service centralise API Logistics
|
||||
|
||||
config/
|
||||
logistics.php # Configuration API Logistics
|
||||
|
||||
database/
|
||||
migrations/
|
||||
...create_users_table.php
|
||||
...create_cache_table.php
|
||||
...create_jobs_table.php
|
||||
...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 # 8 tests avec mocks HTTP
|
||||
```
|
||||
|
||||
## 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.
|
||||
- Les appels API passent toujours par `LogisticsService`, jamais directement par `Http::`.
|
||||
91
memory-bank/techContext.md
Normal file
91
memory-bank/techContext.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# Tech Context
|
||||
|
||||
Derniere mise a jour : 2026-02-19
|
||||
|
||||
## Stack technique
|
||||
|
||||
| Composant | Version | Role |
|
||||
|-----------|---------|------|
|
||||
| PHP | 8.4 | Langage serveur |
|
||||
| Laravel | 12 | Framework applicatif |
|
||||
| Filament | 5.0 | Panel admin / dashboard |
|
||||
| Livewire | 4 | Composants reactifs |
|
||||
| Flux UI Free | 2.9+ | Composants UI Livewire |
|
||||
| Fortify | 1.30+ | Authentification (existant, non utilise par Filament) |
|
||||
| Pest | 4.4+ | Framework de tests |
|
||||
| MySQL | - | Base de donnees |
|
||||
| Vite | - | Bundler frontend |
|
||||
| Tailwind CSS | 4 | Framework CSS |
|
||||
|
||||
## Dependances principales (composer.json)
|
||||
|
||||
- `filament/filament: ^5.0`
|
||||
- `laravel/framework: ^12.0`
|
||||
- `livewire/livewire: ^4.0`
|
||||
- `livewire/flux: ^2.9.0`
|
||||
- `laravel/fortify: ^1.30`
|
||||
|
||||
## Configuration
|
||||
|
||||
### Variables d'environnement specifiques
|
||||
|
||||
```
|
||||
LOGISTICS_API_BASE_URL=http://tse-10-test.esiweb.pro
|
||||
LOGISTICS_API_KEY=<cle API>
|
||||
LOGISTICS_API_FOLDER=esigescom
|
||||
```
|
||||
|
||||
Fichier de config : `config/logistics.php`
|
||||
|
||||
### Base de donnees
|
||||
|
||||
- Connexion : MySQL
|
||||
- Base : `api_logistics`
|
||||
- Configuration dans `.env` : `DB_CONNECTION=mysql`
|
||||
|
||||
## API Logistics
|
||||
|
||||
### Connexion
|
||||
|
||||
- Serveur : TSE-10-TEST
|
||||
- Base URL : `http://tse-10-test.esiweb.pro`
|
||||
- Dossier : `esigescom` (minuscules obligatoires)
|
||||
- Authentification : Header `X-API-KEY`
|
||||
- Methode : POST pour tous les endpoints
|
||||
- Port HTTP : 5186 / Port HTTPS : 7126
|
||||
|
||||
### Structure de reponse
|
||||
|
||||
```json
|
||||
{
|
||||
"data": "<resultat>",
|
||||
"metadata": { "rowcount": 0, "issuccess": true },
|
||||
"error": "<message d'erreur ou null>"
|
||||
}
|
||||
```
|
||||
|
||||
### Endpoints
|
||||
|
||||
| Endpoint | Description | Parametres principaux |
|
||||
|----------|-------------|-----------------------|
|
||||
| `tables_list` | Liste des tables | - |
|
||||
| `column_list/{table}` | Colonnes d'une table | table (URL) |
|
||||
| `art_list` | Liste d'articles | select, results, search, barcode |
|
||||
| `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_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_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 |
|
||||
|
||||
### Tables accessibles
|
||||
|
||||
art, attach, barcode, category, codes, cust, docdet, dochead, docpay, file, hist, incodes, jnl, pers, price, stk
|
||||
Reference in New Issue
Block a user