OAM est un système d'agent Windows déployé sur les postes des agents de terrain. Il permet à un serveur central d'envoyer des commandes en temps réel aux postes (ex. : ouvrir une URL dans le navigateur) via SignalR, sans intervention manuelle de l'utilisateur.
graph TD
subgraph Poste agent
SVC[Agent.Service<br>Windows Service]
TRAY[Agent.TrayClient<br>Icone tray]
UPD[Agent.Updater<br>Mise à jour]
end
subgraph Serveur
HUB_A[Hub /hub/agent]
HUB_U[Hub /hub/user]
API[API /updates/*]
end
PORTAIL[Portail web]
SVC -- SignalR Windows auth --> HUB_A
SVC -- lance au démarrage session --> TRAY
TRAY -- SignalR Windows auth --> HUB_U
PORTAIL -- SignalR --> HUB_U
HUB_U -- commande OpenUrl --> HUB_A
HUB_A -- OpenUrl --> SVC
SVC -- vérif. nightly --> API
SVC -- lance en détaché --> UPD
UPD -- télécharge ZIP --> API
| Projet | Type | Rôle |
|---|---|---|
| Agent.Service | Windows Service | Tourne en arrière-plan sur le poste, maintient la connexion SignalR vers le serveur, exécute les commandes reçues (ex. ouvrir une URL) |
| Agent.TrayClient | WinForms (tray) | Icône dans la barre des tâches — indique visuellement l'état de connexion. Lance au démarrage de session utilisateur via le service |
| Agent.Server | ASP.NET Core | Serveur central — gère les hubs SignalR et expose l'API de mise à jour |
| Agent.Updater | Console | Exécutable autonome lancé par le service pour appliquer une mise à jour (remplace les fichiers, redémarre le service) |
Le service vérifie une fois au démarrage puis chaque nuit (entre 1h et 6h, heure aléatoire pour étaler la charge) si une nouvelle version est disponible sur le serveur.
GET /updates/check— retourne le hash SHA-256 du ZIP disponible- Si le hash diffère du ZIP local, téléchargement et vérification d'intégrité
Agent.Updater.exeest copié dans%TEMP%\OAM-updater\puis lancé en processus détaché- L'updater arrête le service, remplace les fichiers, met à jour le DisplayName/Description Windows si nécessaire, redémarre
Le Agent.TrayClient peut être compilé en configuration Test (--configuration Test) pour les agents de QA ou les développeurs qui travaillent sur un environnement séparé.
| Caractéristique | Version PROD | Version DEV |
|---|---|---|
| Mode de lancement | Automatique (Au démarrage de la session / Service Windows) | Manuel (Distribué via GET /updates/test/download : génère un ZIP à la volée avec l'exe et l'appsettings.json pré-configuré pour l'environnement) |
| Privilèges | Exécution avec les droits système standards | "Run as" (pour simuler différents utilisateurs) |
| Persistance | Verrouillé (Impossible à fermer par l'utilisateur) | Fermeture autorisée (Option "Quitter" disponible) |
| Mises à jour | Automatiques et transparentes | Manuelles - Vérification de version au démarrage — bloque l'utilisation si le build n'est plus à jour |
| Couleur de l'icône | Bleu | Rouge |
| Menu contextuel (Clic droit) | Aucune information affichée dans le menu | Nom de l'environnement et utilisateur affichés dans le menu |
src/
Agent.Service/ Windows Service (.NET Worker)
Agent.TrayClient/ Tray app WinForms
Agent.Server/ ASP.NET Core (Minimal API + SignalR)
Agent.Updater/ Outil de mise à jour (single-file exe)
Documentation/ Docs techniques (sécurité, déploiement, réseau)
Manage-AgentService.ps1 Script PowerShell de gestion locale (build, install, update)
# Build + installation + démarrage du service Windows
.\Manage-AgentService.ps1 -Action install
# Créer un package de mise à jour (agent.zip)
.\Manage-AgentService.ps1 -Action make-update
# Créer un build Test pour QA
.\Manage-AgentService.ps1 -Action make-testRequiert PowerShell en mode administrateur.