ARGOS — GMAO pour PME industrielles
Logiciel de Gestion de Maintenance Assistée par Ordinateur (GMAO) pour Windows 10/11, destiné aux PME industrielles sans GMAO existante (maintenance électrotechnique et mécanique). Desktop WinUI 3, base SQLite locale, licence perpétuelle liée au poste, synchronisation future avec une app Android terrain via le réseau local (zéro cloud, zéro coût récurrent).
Nom de marque : ARGOS. "GMAO" reste le terme générique utilisé dans le code/les docs.
Stack technique
- C# / .NET 8 (LTS)
- WinUI 3 (Windows App SDK) + CommunityToolkit.Mvvm (MVVM)
- EF Core 8 + SQLite (
Microsoft.Data.Sqlite) - BouncyCastle.Cryptography (Ed25519 — .NET n'a pas de support natif)
- QuestPDF (génération PDF factures/devis — pas encore intégré)
- xUnit (tests unitaires sur
App.Core) - Packaging MSIX (Windows App SDK templates officiels)
Structure de la solution
GMAO.sln
├── src/
│ ├── App.Core # Domaine pur (entités, interfaces, logique métier). Zéro dépendance EF/UI.
│ ├── App.Infrastructure # EF Core (GmaoDbContext + migrations), WMI, DPAPI, fichiers licence
│ ├── App.UI # WinUI 3 — sidebar, pages, ViewModels, packaging MSIX
│ ├── App.SyncServer # Squelette de dossiers uniquement — API HTTP locale + mDNS (pas commencé)
│ └── LicenseGenerator # Console interne (keygen/issue) — jamais packagée dans le client
├── tests/
│ └── App.Core.Tests # xUnit — licence, calcul d'échéances, KPI
└── docs/
├── ARCHITECTURE.md # Décisions structurantes détaillées
└── DATABASE_SCHEMA.md # Schéma complet table par table
Démarrer
Prérequis : SDK .NET 8, Visual Studio 2022 (workloads .NET Desktop Development + Windows application development), Mode développeur Windows activé.
# Build de toute la solution
dotnet build
# Tests unitaires App.Core
dotnet test tests/App.Core.Tests
# Lancer l'app WinUI3 (packaging MSIX debug via winapp CLI)
cd src/App.UI
dotnet run
État d'avancement
Légende : ✅ fait et testé · 🚧 en cours / partiel · ⬜ pas commencé
Socle technique
- ✅ Solution scaffoldée, 5 projets, tout compile (0 erreur/warning)
- ✅
Directory.Build.props,.editorconfig,.gitignore - ✅ Environnement de build fonctionnel (SDK .NET 8, VS 2022, templates WinUI3, Mode développeur)
App.Core (domaine)
- ✅ Toutes les entités du schéma (Machines, Maintenance, Stock, Facturation, Équipe, Sync, pièces jointes, paramètres)
- ✅ Interfaces de repository (CRUD générique + requêtes métier spécifiques)
- ✅ Licence : essai 30 jours, anti-recul d'horloge, signature Ed25519, activation — logique complète et testée. Un bug de sécurité trouvé en cours de route (fichier
.liccorrompu → repli silencieux en essai gratuit) a été corrigé et couvert par un test. - ✅ Calendrier préventif :
FrequencyCalculator(9 types de fréquence dont compteur et règles type "1er lundi du mois"),MaintenanceSchedulingEngine(génération au fur et à mesure, dédoublonnage par clé d'occurrence unique),WorkOrderCompletionService - ✅ KPI : MTBF, MTTR, disponibilité, coût, taux de respect du planning
- ✅ DTOs de synchronisation Android (contrats prêts, app pas développée)
- ✅ 45 tests xUnit, tous verts
- ⬜ Clé publique Ed25519 réelle (placeholder tant que
LicenseGenerator keygenn'a pas été exécuté pour de vrai)
App.Infrastructure
- ✅
GmaoDbContext+ configurations EF Core (index unique filtré anti-doublon d'OT vérifié sur SQLite réel) - ✅ Migration initiale générée et appliquée avec succès
- ✅
WmiHardwareIdProvider,DpapiTrialStateStore,LicenseFileRepository - ⬜ Repositories EF Core concrets pour les autres entités (Machines, Stock, Équipe, Factures — seules les interfaces existent)
- ⬜
AttachmentStorageService,InvoicePdfGenerator(QuestPDF)
App.UI (WinUI 3)
- ✅ Scaffold officiel (template Windows App SDK), sidebar avec les 8 sections du cahier des charges
- ✅
Package.appxmanifestavec capabilities commentées (runFullTrust,privateNetworkClientServer) - ✅ Branding ARGOS (nom, identité MSIX, logo simple dans la sidebar)
- ✅ DI (
Microsoft.Extensions.DependencyInjection) + ViewModels MVVM pour les 7 pages - ✅ Tableau de bord avec pastilles KPI colorées (OT ouverts/en retard, stock sous seuil, respect planning)
- 🚧 Toutes les pages tournent sur des repositories factices en mémoire (
Services/MockData.cs) — à remplacer par les implémentations EF Core d'App.Infrastructure (interfaces Core déjà en place, donc zéro changement côté ViewModel prévu) - ⬜ Écran d'activation de licence + bandeau "essai : X jours restants"
- ⬜ Vraie vue calendrier (mensuelle/hebdomadaire, drag & drop) — actuellement une simple liste
- ⬜ Drag & drop fichiers (pièces jointes, factures), copier-coller façon tableur
- ⬜ Authentification locale (login/mot de passe)
LicenseGenerator
- ✅
keygen(génère la paire Ed25519 + fragments obfusqués à coller) etissue(émet un.licsigné) — compilent, jamais exécutés pour de vrai (clé placeholder encore en place dansEd25519PublicKeyProvider)
App.SyncServer
- ⬜ Pas commencé (dossiers vides). Décision ouverte : hébergé en process dans App.UI (Kestrel embarqué) vs. exécutable séparé — voir
docs/ARCHITECTURE.md.
Autres modules du cahier des charges (Machines, Stock, Équipe, Factures)
- ⬜ Logique métier et écrans réels — actuellement uniquement des ViewModels de démonstration sur données factices.
Packaging / Store
- ⬜ Build MSIX de production, checklist de soumission Microsoft Store
Prochaines étapes suggérées
- Repositories EF Core réels (remplacer les Mock* dans
App.UI/Services) - Écran d'activation de licence + bandeau d'essai
- Génération réelle de la paire de clés Ed25519 (
LicenseGenerator keygen) - Module Machines complet (fiches, pièces jointes, historique)
- Vraie vue calendrier préventif
Description
Languages
C#
100%