Développement

Application de gestion des stocks connectée WaveSoft

Client PME industrielle
Durée 3 mois
Technos Laravel, Filament, MySQL, WaveSoft

Le Contexte

Notre client, une PME industrielle, s'appuie au quotidien sur l'ERP WaveSoft pour l'ensemble de sa gestion commerciale. Si l'outil est performant pour la facturation et les devis, le tableau de bord natif montrait ses limites sur la partie logistique.

Les équipes opérationnelles manquaient de visibilité en temps réel sur les niveaux de stock critiques, et aucune alerte n'existait pour prévenir les ruptures imminentes.

La Problématique

L'absence de monitoring automatisé entraînait des ruptures de stock fréquentes sur des composants essentiels, paralysant parfois la production pendant plusieurs jours.

Les gestionnaires de stock étaient contraints à des vérifications manuelles chronophages, basculant dans une logique de réaction plutôt que d'anticipation — avec un impact direct sur le chiffre d'affaires.

Notre Solution

Nous avons conçu et déployé une application sur-mesure basée sur Laravel 10 et Filament 3 comme panel d'administration, agissant comme une surcouche intelligente à WaveSoft. Le choix de Filament nous a permis de livrer un back-office riche et ergonomique (CRUD, widgets, tableaux de bord) dans un délai court, tout en gardant un code propre et maintenable.

Des Jobs Laravel asynchrones interrogent la base WaveSoft et synchronisent les articles, dispatchés par le Task Scheduler toutes les 6 heures. Les Notifications Laravel sont poussées en queue (database driver) : e-mail via SMTP et SMS, déclenchées sur seuils configurables.

L'ensemble repose sur le Scheduler de Laravel (php artisan schedule:run) piloté par un CRON système. Chaque cycle déclenche un Job de synchronisation qui compare l'état des stocks WaveSoft avec les seuils définis dans Filament, puis dispatch les notifications appropriées en file d'attente.

Architecture Technique

Le socle applicatif repose sur PHP / Laravel 10 avec Filament 3 comme panel d'administration. L'accès aux données s'appuie sur Eloquent ORM et le Query Builder pour les requêtes complexes sur la base WaveSoft. Les alertes transitent par le système de Notifications Laravel (Mail + SMS).

Côté infrastructure, l'application dispose de sa propre base MySQL 8 et se connecte en lecture seule à la base SQL Server de WaveSoft. Les notifications sont traitées via des Queues (database driver) pour ne pas bloquer les requêtes utilisateur. Le Task Scheduler de Laravel, piloté par un CRON système, orchestre les synchronisations toutes les 6 heures. Le tout est hébergé sur un VPS dédié sous Nginx + PHP-FPM.

Fonctionnalités Clés

Panel d'administration Filament 3 complet
Synchronisation WaveSoft via Jobs asynchrones
Dashboard temps réel avec widgets Filament
Seuils d'alerte configurables par article
Alertes multi-canal (e-mail + SMS)
Scheduler Laravel : sync toutes les 6 h
Historique des mouvements et audit trail
Rapports PDF et exports CSV

Qualité & CI/CD

La fiabilité de l'application repose sur une stratégie de tests rigoureuse et un pipeline de déploiement automatisé — deux piliers non négociables pour un outil critique en production.

L'ensemble du code métier est couvert par des tests unitaires PHPUnit : calcul des seuils d'alerte, logique de déclenchement des notifications, transformation et mapping des données WaveSoft vers les modèles Eloquent. Chaque Service et chaque Job dispose de ses propres tests isolés.

En complément, des tests fonctionnels (Feature Tests) valident les scénarios de bout en bout : synchronisation complète avec une base WaveSoft de test, vérification de l'envoi des notifications sur seuil critique, et tests des endpoints du panel Filament (accès, CRUD, widgets). Le taux de couverture dépasse les 80% sur les modules critiques.

Côté qualité de code, Laravel Pint assure le respect des conventions de style, et PHPStan niveau 6 effectue une analyse statique stricte pour détecter les erreurs potentielles avant l'exécution.

Le tout est orchestré par un pipeline GitHub Actions déclenché à chaque push sur la branche main : linting, analyse statique, exécution complète de la suite de tests, puis — en cas de succès — déploiement automatique en zero downtime via SSH sur le serveur de production.

Résultats

Les résultats ont été mesurés sur les 6 premiers mois d'utilisation en production.

-80%
De ruptures
15h
Gagnées / Sem.
100%
Visibilité
2 mois
ROI Positif