Files
logisticsAPI/memory-bank/techContext.md
Marvin 4aef33f270 Implement robust error handling and configuration for Logistics API interactions
- Introduced `LogisticsApiException` to handle connection and request errors with user-friendly messages in French.
- Updated `LogisticsService` to include configurable timeout, connection timeout, retry attempts, and sleep duration for retries.
- Enhanced error handling in Filament pages to catch `LogisticsApiException` and provide clear feedback to users.
- Updated `.env` and `config/logistics.php` to support new configuration options.
- Added logging for failed API requests in `api_request_logs`.
- Created comprehensive API documentation for Logistics endpoints.
2026-02-20 10:06:04 +01:00

106 lines
3.7 KiB
Markdown

# Tech Context
Derniere mise a jour : 2026-02-20
## 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
LOGISTICS_API_TIMEOUT=30
LOGISTICS_API_CONNECT_TIMEOUT=10
LOGISTICS_API_RETRY_TIMES=3
LOGISTICS_API_RETRY_SLEEP_MS=500
```
Fichier de config : `config/logistics.php`
| Cle de config | Variable .env | Defaut | Description |
|---------------|---------------|--------|-------------|
| `logistics.base_url` | `LOGISTICS_API_BASE_URL` | - | URL de base de l'API |
| `logistics.api_key` | `LOGISTICS_API_KEY` | - | Cle d'authentification |
| `logistics.folder` | `LOGISTICS_API_FOLDER` | - | Dossier dans l'URL |
| `logistics.timeout` | `LOGISTICS_API_TIMEOUT` | 30 | Timeout total de la requete (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) |
### Base de donnees
- Connexion : MySQL
- Base : `logistics`
- Configuration dans `.env` : `DB_CONNECTION=mysql`
## API Logistics
### Connexion
- Serveur : TSE-10-TEST (reseau prive, accessible uniquement via Bureau a distance / RDP)
- 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