Architecture & ingénierie
M365 WATCH est une application WPF (.NET 10) en MVVM, habillée avec MahApps.Metro et adossée à une solution multi-projets : un noyau d'entités et de services purs, une couche d'accès et d'orchestration sur Entity Framework Core, des lecteurs de sources, un module d'export Excel (ClosedXML), l'application de bureau et le collecteur en ligne de commande. L'identité visuelle est celle de GUARD, pour que les outils livrés à l'équipe forment une famille cohérente.
Le cœur est le schéma SQL Server : neuf tables et seize index conçus pour l'historisation par intervalles. Il est piloté par des migrations SQL versionnées — lisibles et rejouables depuis le dépôt, appliquées sur la base de production — accompagnées de scripts de vérification post-déploiement qui contrôlent tables, index et invariants. La lecture des exports s'appuie sur un parseur délimité conforme à la RFC 4180 et sur la lecture d'archives ZIP en flux, sans décompression sur disque.
La livraison est industrialisée : deux paquets self-contained win-x64 — l'application et le collecteur — fabriqués par des scripts PowerShell, et un pipeline GitLab CI déclenché sur tag qui enchaîne tests, paquets, registre de paquets et release. 348 tests automatisés xUnit tiennent le filet, dont des tests d'intégration qui ingèrent réellement un export de 44 545 lignes contre une base SQL Server recréée à chaque exécution.
Ce que ce projet démontre
M365 WATCH réunit deux compétences rarement portées par la même personne : le développement .NET complet — architecture, modélisation relationnelle, tests, industrialisation — et l'expertise du domaine supervisé : canaux de mise à jour Microsoft 365 Apps, builds et servicing Windows, calendriers de fin de support, télémétrie du portail d'administration. Les six règles de détection ne sortent pas d'un cahier des charges : elles viennent du terrain.
Il montre surtout une capacité à livrer pour de vrai : migrations appliquées sur la base de production, collecte quotidienne en service, et une application utilisée chaque jour sur les données réelles du parc.
Technologies
.NET 10 C# WPF MVVM MahApps.Metro EF Core SQL Server ClosedXML CSV / RFC 4180 PowerShell xUnit GitLab CI/CD Python