Files
Gmao-app-win11/README.md
2026-09-10 16:43:09 +02:00

6.1 KiB

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 .lic corrompu → 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 keygen n'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.appxmanifest avec 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) et issue (émet un .lic signé) — compilent, jamais exécutés pour de vrai (clé placeholder encore en place dans Ed25519PublicKeyProvider)

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

  1. Repositories EF Core réels (remplacer les Mock* dans App.UI/Services)
  2. Écran d'activation de licence + bandeau d'essai
  3. Génération réelle de la paire de clés Ed25519 (LicenseGenerator keygen)
  4. Module Machines complet (fiches, pièces jointes, historique)
  5. Vraie vue calendrier préventif