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.
This commit is contained in:
2026-02-20 10:06:04 +01:00
parent 07a3b3a874
commit 4aef33f270
18 changed files with 820 additions and 64 deletions

View File

@@ -1,6 +1,6 @@
# Progress
Derniere mise a jour : 2026-02-19
Derniere mise a jour : 2026-02-20
## Ce qui fonctionne
@@ -9,33 +9,35 @@ Derniere mise a jour : 2026-02-19
- [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] 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] 8 tests Pest pour LogisticsService (tous passent)
- [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] CI GitHub Actions (lint + tests)
## 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`
- [ ] 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)
## 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.
- **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.
## Metriques
- Tests : 8 (tous passent)
- Tests : 12 (tous passent, 18 assertions)
- Pages Filament : 5
- Endpoints API couverts par LogisticsService : 17
- Migrations : 5 (users, cache, jobs, two_factor, api_request_logs)