first commit
This commit is contained in:
110
README.md
Normal file
110
README.md
Normal file
@@ -0,0 +1,110 @@
|
||||
# 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é.
|
||||
|
||||
```powershell
|
||||
# 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
|
||||
Reference in New Issue
Block a user