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:
@@ -1,10 +1,10 @@
|
||||
# Active Context
|
||||
|
||||
Derniere mise a jour : 2026-02-19
|
||||
Derniere mise a jour : 2026-02-20
|
||||
|
||||
## Travail en cours
|
||||
|
||||
Aucun travail en cours. Le setup initial du projet est termine.
|
||||
Aucun travail en cours. Les ameliorations de robustesse du service API sont terminees.
|
||||
|
||||
## Decisions recentes
|
||||
|
||||
@@ -14,20 +14,31 @@ Aucun travail en cours. Le setup initial du projet est termine.
|
||||
- **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.
|
||||
- **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.
|
||||
|
||||
## Changements importants
|
||||
## Changements importants (2026-02-20)
|
||||
|
||||
- `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).
|
||||
|
||||
## Historique (2026-02-19)
|
||||
|
||||
- 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.
|
||||
- `LogisticsService` cree avec 17 endpoints.
|
||||
- Migration `api_request_logs` creee.
|
||||
- 8 tests Pest ecrits et valides.
|
||||
|
||||
## 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.
|
||||
- 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).
|
||||
|
||||
Reference in New Issue
Block a user