Files
rpa_vision_v3/docs/PROCEDURE_DEPLOIEMENT_LEA_JULIEN.md
Dom 48b1fc2800
Some checks failed
tests / Lint (ruff + black) (push) Failing after 1m58s
tests / Tests unitaires (sans GPU) (push) Failing after 2m8s
tests / Tests sécurité (critique) (push) Has been skipped
feat(deploy): install silencieuse (dashboard) + MAJ GPO clients Léa + procédure Julien — 2026-07-06
Deux canaux de déploiement des clients Léa, en s'appuyant sur l'installeur EXE
v1.0.2 existant (per-user, upgrade-safe, mode /VERYSILENT /CONFIG=).

- Route dashboard `GET /api/fleet/installer` (web_dashboard/app.py, insertion pure,
  125 lignes, 0 suppression) : sert un ZIP {EXE + install_silencieux.bat + enroll.txt
  (SERVER_URL/token injectés via _resolve_public_server_url) + LISEZMOI} pour un poste
  NEUF. L'EXE génère lui-même le machine_id → pas de pré-enregistrement (distinct de
  la voie ZIP download_agent_package). Tri EXE en semver (1.0.10 > 1.0.2). Testée e2e.
- deploy/installer/silent/ : lanceur d'install silencieuse + gabarit enroll + notice.
- deploy/gpo/Deploy-LeaUpdate.ps1 : MAJ upgrade-safe via GPO **logon script user-context**
  (install per-user invisible au contexte SYSTEM). Détection version = **DisplayVersion
  du registre HKCU** (primaire pour install EXE ; le config.txt EXE ne porte PAS la
  version — vérifié sur poste réel), fallback RPA_AGENT_VERSION (installs ZIP).
  Comparaison semver, idempotent, journalisation best-effort silencieuse, non bloquant
  à l'ouverture de session. Options -DryRun / -TargetVersionOverride / -LogShareOverride.
  **Validé sur poste réel .11 (Windows PowerShell 5.1)** : branche « déjà à jour » et
  branche « MAJ requise » (DryRun, 0 install), détection = 1.0.2.
- docs/PROCEDURE_DEPLOIEMENT_LEA_JULIEN.md : procédure (poste neuf / MAJ manuelle / GPO / rollback).
- EXE binaire jamais versionné (deploy/installer/releases/.gitignore).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 10:35:22 +02:00

76 lines
4.3 KiB
Markdown

# Procédure de déploiement Léa — pour Julien (informaticien clinique)
> Version agent cible : **1.0.2** · Installeur : `Lea-Setup-v1.0.2.exe` (per-user, aucun droit admin requis).
> Rédigé le 2026-07-06. Poste pilote validé : **Émilie**.
Trois cas. Le n°1 pour un poste **neuf**, le n°2/3 pour **mettre à jour** un poste déjà installé.
---
## 1. Installer Léa sur un NOUVEAU poste (install silencieuse)
1. Depuis un navigateur (dashboard Léa), télécharger le paquet :
**`GET /api/fleet/installer`** → `Lea-Install-Silencieux-vX.Y.Z.zip`.
*(Le ZIP contient l'EXE + `install_silencieux.bat` + `enroll.txt` déjà pré-rempli avec l'URL serveur et le token.)*
2. Sur le poste cible : dézipper le paquet dans un dossier.
3. Ouvrir **`enroll.txt`** (Bloc-notes), compléter **`USER_NAME`** et **`USER_EMAIL`** (l'URL et le token sont déjà remplis). Enregistrer.
4. Double-cliquer **`install_silencieux.bat`**. Attendre le message **« Installation terminée - OK »**.
5. Vérifier : icône Léa près de l'horloge (barre des tâches).
> L'installeur génère un **`machine_id` unique** pour ce poste : rien à pré-enregistrer.
---
## 2. Mettre à jour un poste déjà installé — voie MANUELLE (immédiate)
C'est la voie utilisée pour Émilie, à rejouer poste par poste **en attendant l'autorisation AD/GPO**.
1. Récupérer **`Lea-Setup-v1.0.2.exe`** (le même EXE, aucune régénération).
2. Sur le poste, le lancer par **double-clic** (mode interactif).
3. Le wizard doit s'afficher **pré-rempli** avec la config du poste (serveur/token/utilisateur).
⚠️ **S'il est vide** → l'installeur n'a pas détecté l'install existante : **ne pas continuer**, prévenir AIVANOV (risque de créer un nouveau poste au lieu de mettre à jour).
4. Valider. L'installeur **arrête Léa**, sauvegarde l'ancienne version (`<dossier>_backup`), met à jour en **préservant l'identité** du poste, purge les captures accumulées.
5. Vérifier après MAJ (mêmes points qu'Émilie) : Léa relancée en **v1.0.2**, icône présente, capture d'écran OK, comportement RDP OK.
> **Rollback** si besoin : restaurer le dossier `<install>_backup` (le dossier d'install est `%LOCALAPPDATA%\Programs\Lea`).
---
## 3. Mettre à jour la flotte via AD/GPO (quand l'autorisation est en place)
Script fourni : **`deploy/gpo/Deploy-LeaUpdate.ps1`**.
### ⚠️ Point crucial : script d'OUVERTURE DE SESSION (contexte utilisateur)
Léa est installée **par utilisateur** (`%LOCALAPPDATA%`). Un script de **démarrage machine** (contexte SYSTEM) **ne verrait pas** l'installation et ne mettrait rien à jour. Le script doit donc être en :
**`User Configuration → Policies → Windows Settings → Scripts (Logon/Logoff) → Logon`.**
### Étapes
1. Déposer `Lea-Setup-v1.0.2.exe` sur un partage du domaine accessible aux postes (ex. `\\SRV-FICHIERS\Deploiement$\Lea\`).
2. Éditer les **3 lignes de paramètres** en tête de `Deploy-LeaUpdate.ps1` :
- `$ExeSource` = chemin UNC (ou URL) de l'EXE ;
- `$TargetVersion` = `1.0.2` (doit correspondre à l'EXE) ;
- `$LogShare` = dossier partagé pour les journaux d'audit (ou vide → journal local).
3. Ajouter le script en **Logon script** (commande : `powershell.exe -NoProfile -ExecutionPolicy Bypass -File Deploy-LeaUpdate.ps1`).
4. À l'ouverture de session, le script : détecte la version installée, compare à la cible, met à jour **seulement si plus ancienne** (idempotent, silencieux, upgrade-safe), puis journalise.
### Comportement (garanti par le script)
- Poste **déjà à jour** → ne fait rien.
- Poste **sans Léa** → ignoré (les postes neufs passent par le cas 1).
- Erreur (partage indisponible, etc.) → journalisée, **n'empêche jamais l'ouverture de session**.
### Audit
Un journal par poste/utilisateur dans `$LogShare` : `<POSTE>_<UTILISATEUR>.log` (ligne datée : version installée → version après MAJ, ou motif d'échec).
---
## Aide-mémoire
| Besoin | Voie | Artefact |
|---|---|---|
| Poste neuf | Install silencieuse | Dashboard `GET /api/fleet/installer` |
| MAJ immédiate d'un poste | Manuelle (double-clic) | `Lea-Setup-v1.0.2.exe` |
| MAJ de toute la flotte | AD/GPO (logon script) | `deploy/gpo/Deploy-LeaUpdate.ps1` |
| Revenir en arrière | Rollback | dossier `<install>_backup` |
En cas de doute ou de wizard **non** pré-rempli lors d'une MAJ : **s'arrêter et contacter AIVANOV**.