Nous avons été sollicités par un client pour refondre et améliorer son outil de gestion de mutuelle santé pour expatrié.es.
Le projet, ambitieux et complexe, visait à couvrir l’ensemble du cycle de vie d’une mutuelle.
Deux ans de travail en étroite collaboration avec notre équipe dédiée et celle du client ont permis d’arriver au constat suivant :
Une mutuelle ce n’est pas si impressionnant !
Petit tour des fonctionnalités principales
- Gestion des contrats
- Remboursement des soins
- Espace assuré.es
- Suivi des cotisations
- Espace Comptabilité
- Rapport Excel
- Gestion des tarifs chaque année
Etc, la liste est longue !
Architecture Symfony
L’architecture utilise le Domain Driven Design (DDD). Attention cette phrase ne veut rien dire !
En effet, le DDD ce n’est pas une question d’architecture mais de langage commun ou en anglais: Ubiquitous Language.
Les équipes techniques et le client partagent ainsi un même vocabulaire, une même vision pour refléter au mieux la réalité métier.
En partant de cette idée, et fort de nos années de pratiques ainsi que de retours d’expérience, on a mis en place :
- une communication constante avec les experts du métier,
- une modélisation centrale sur le domaine,
- fortement couplé à Symfony, sauf pour la partie domaine
- couverture du code 100% sur la partie domaine (TDD encouragé + Infection)
- des tests unitaires et fonctionnels
- une automatisation CI/CD
- une notification asynchrone sur des canaux type slack, emails, sms
- un refactoring rapide et confiant
- une documentation vitepress à jour
- un docker pour la partie développement
- un TwigComponent de plus en plus utilisé
Deux ans de collaboration pour transformer un outil clé
Quand le projet legacy nous est arrivé entre les mains, développé en Node.js, le défi s’annonçait ambitieux.
Mais très vite, les premiers échanges avec le client lors d’ateliers organisés chez Spiriit ont permis de créer un vrai climat de confiance. Les discussions se sont structurées, les attentes se sont précisées, et ensemble, nous avons pu poser les bases d’une première estimation réaliste et motivante.
Notre savoir-faire Symfony, couplé à nos méthodes Scrum, nous ont permis de suivre le projet dans les meilleures conditions.
Le plus grand défi était la migration des données : un écosystème fragile où chaque contrat, cotisation et soin devait être préservé, sinon c’était la tempête assurée.
Nous sommes restés confiants dans nos tests, notre expérience, notre capacité à s’adapter et à réagir rapidement.
Alors oui deux ans ça peut paraître long mais c’était nécessaire au vu de l’application et des enjeux..
Un peu de technique
Le projet a démarré en version 6 et actuellement en version 7.2.
Qui dit données de santé, dit HDS (Hébergeur de Données de Santé). Les données sont sécurisées sur un serveur dit HDS. Accès limité, haute performance et redondance des serveurs et bases de données. Et Français !
L’utilisation de symfony/ux-turbo pour afficher des informations asynchrones un peu partout et une page complète en Turbo pour mettre à jour plusieurs formulaires sur la même page. Très agréable pour l’expérience utilisateur et pour l’écriture du code.
Petit clin d’oeil à notre bundle, SpiriitLabs/form-filter-bundle, pour générer les différents listings. On utilise un thème sur mesure et les filtres doctrine sont gérés via le bundle pour les listings.
Le projet nécessite une exportation des données en Excel. «Tous les soins remboursés sur Janvier», cela représente beaucoup de lignes et de colonnes.
Pour améliorer la génération de fichiers Excel à partir de fichiers HTML, une idée est venue, celle de voir ce que propose RUST. Il en est sorti la création d’un nouveau bundle Symfony et de sa librairie Rust pour générer des fichiers excels !
Les performances sont très bonnes et la librairie PHP peut être utilisée avec ou sans le bundle Symfony.
Conclusion
Il est difficile de reprendre en quelques lignes ce projet sur lequel nous avons travaillé pendant deux ans. Bien plus qu’une aventure dans les lignes de code, c’est avant tout une incroyable aventure humaine que nous avons eu la chance de vivre.
Je tiens à remercier chaleureusement Laurent, Thomas, Jonathan, Mathieu, Loïs, Angélique, Teddy, Matéo, et Ludovic du côté de Spiriit. Ainsi que l’équipe Aci-bil pour la confiance que vous nous avez accordé tout au long de ce parcours et qui continue encore.
Le mot de la fin
Ne négligez pas les tests et la coopération dans votre équipe. Pensez à l’architecture en pratiquant le TDD et le DDD. Une fonctionnalité égale une classe. Évitez de rendre le code générique et réutilisable quand on est dans la partie métier. Soyez professionnels, prenez le temps de lire le code des autres pour s’améliorer ensemble.