feat: journée 17 avril — tests E2E validés, dashboard fleet+audit, VWB bridge, cleaner C2
Some checks failed
security-audit / Bandit (scan statique) (push) Successful in 14s
security-audit / pip-audit (CVE dépendances) (push) Successful in 10s
security-audit / Scan secrets (grep) (push) Successful in 8s
tests / Lint (ruff + black) (push) Successful in 13s
tests / Tests unitaires (sans GPU) (push) Failing after 14s
tests / Tests sécurité (critique) (push) Has been skipped

Pipeline E2E complet validé :
  Capture VM → streaming → serveur → cleaner → replay → audit trail
  Mode apprentissage supervisé fonctionne (Léa échoue → humain → reprise)

Dashboard :
  - Cleanup 14→10 onglets (RCE supprimée)
  - Fleet : enregistrer/révoquer agents, tokens, ZIP pré-configuré téléchargeable
  - Audit trail MVP (/audit) : filtres, tableau, export CSV, conformité AI Act/RGPD
  - Formulaire Fleet simplifié (nom + email, machine_id auto)

VWB bridge Léa→VWB :
  - Compound décomposés en N steps (saisie + raccourci visibles)
  - Layout serpentin 3 colonnes (plus colonne verticale)
  - Badge OS 🪟/🐧, filtre OS retiré (admin Linux voit Windows)
  - Fix import SQLite readonly

Cleaner intelligent :
  - Descriptions lisibles (UIA/C2) + détection doublons
  - Logique C2 : UIElement identifié = jamais parasite
  - Patterns parasites resserrés
  - Message Léa : "Je n'y arrive pas, montrez-moi comment faire"

Config agent (INC-1 à INC-7) :
  - SERVER_URL + SERVER_BASE unifiés
  - RPA_OLLAMA_HOST séparé
  - allow_redirects=False sur POST
  - Middleware réécriture URL serveur

CI Gitea : fix token + Flask-SocketIO + ruff propre
Fleet endpoints : /agents/enroll|uninstall|fleet + agent_registry SQLite
Backup : script quotidien workflows.db + audit

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-04-17 17:46:40 +02:00
parent 2fa864b5c7
commit 4f61741420
27 changed files with 5088 additions and 1543 deletions

View File

@@ -0,0 +1,259 @@
# GUIDE D'INSTALLATION — Agent Léa sur poste TIM
**Public** : TIM (Technicienne Information Médicale) ou son service informatique.
**Durée cible** : **10 minutes** (hors téléchargement).
**Prérequis** : Windows 10/11, compte avec droits utilisateur standard (pas besoin d'admin sauf étape Python), accès Internet, **DPI urgences fonctionnel** sur le poste.
> **Avant de commencer** : vérifier que la TIM peut ouvrir son DPI urgences
> habituel (Resurgences, Urqual, DxCare, CristalNet, Hôpital Manager…) et y
> naviguer normalement. Si le DPI passe par Citrix/VDI, le vérifier avant
> d'installer Léa. **Si le DPI ne marche pas, l'agent ne servira à rien.**
---
## Pourquoi pas un installeur `.exe` ?
On livre un **ZIP + scripts**, pas un installeur Inno Setup. Raison : un `.exe`
non signé (code-signing EV à 500 €/an) déclenche le SmartScreen rouge Windows
("Windows a protégé votre PC") + l'antivirus corporate. Sur le poste d'une TIM
en clinique, **c'est la pire première impression possible**.
L'approche ZIP + `.bat` passe sous le radar du SmartScreen et s'installe dans
le dossier utilisateur (pas besoin d'admin pour le copier).
---
## Étape 1 — Récupérer le package (1 min)
1. Télécharger `Lea_v1.0.0.zip` depuis l'URL fournie par Dom
(lien Owncloud interne ou clé USB si réseau isolé).
2. Fichier attendu : environ **5 Mo**.
3. **Vérifier l'intégrité** : clic droit sur le ZIP → Propriétés → si un bouton
"Débloquer" est visible en bas, le cocher puis OK (sinon Windows peut
bloquer l'exécution des `.bat`).
---
## Étape 2 — Extraire dans `C:\rpa_vision\Lea\` (1 min)
1. Créer le dossier **`C:\rpa_vision\Lea\`** (ou `C:\Lea\` si l'admin préfère).
2. Clic droit sur `Lea_v1.0.0.zip`**Extraire tout…** → choisir
`C:\rpa_vision\Lea\` → Extraire.
3. Vérifier que le dossier contient :
```
C:\rpa_vision\Lea\
├── install.bat
├── Lea.bat
├── config.txt
├── LISEZMOI.txt
├── requirements_agent.txt
└── run_agent_v1.py
```
> **Piège** : si Windows extrait un dossier intermédiaire
> (`Lea_v1.0.0\Lea_v1.0.0\...`), **déplacer le contenu d'un cran** pour que
> `install.bat` soit à la racine `C:\rpa_vision\Lea\`.
---
## Étape 3 — Vérifier Python (1 min)
Ouvrir une invite de commandes (`Démarrer` → taper `cmd` → Entrée) et taper :
```
python --version
```
- **Si ça affiche** `Python 3.10.x` à `3.12.x` → OK, passer à l'étape 4.
- **Si erreur** `'python' n'est pas reconnu` → installer Python :
1. Aller sur https://www.python.org/downloads/
2. Télécharger Python 3.12.x
3. **Important** : pendant l'installation, **cocher
"Add Python to PATH"** (case du bas, souvent décochée).
4. Terminer, fermer/rouvrir l'invite de commandes, re-tester
`python --version`.
> Python installé en "Microsoft Store" fonctionne aussi mais peut poser des
> soucis de PATH. Si ça bloque, désinstaller la version Store et installer
> celle de python.org.
---
## Étape 4 — Configurer `config.txt` (2 min)
Ouvrir `C:\rpa_vision\Lea\config.txt` **avec le Bloc-notes**
(clic droit → "Ouvrir avec" → Bloc-notes).
Vérifier/modifier ces 3 lignes :
```
RPA_SERVER_URL=https://lea.labs.laurinebazin.design/api/v1
RPA_API_TOKEN=<TOKEN_FOURNI_PAR_DOM>
RPA_SERVER_HOST=lea.labs.laurinebazin.design
```
- **URL du serveur** : celle de prod publique OU une URL interne si on bascule
sur un serveur clinique pendant la démo.
- **Token** : Dom fournit un token **dédié à la TIM** (révocable). Ne pas
réutiliser le token de dev.
- **Sauvegarder** (Ctrl+S), fermer.
> Ne **pas** toucher aux autres lignes (`RPA_BLUR_SENSITIVE`, etc.).
---
## Étape 5 — Lancer `install.bat` (3-4 min)
1. Double-cliquer sur `install.bat`.
2. Une fenêtre noire s'ouvre avec le titre "Lea - Installation".
3. Écrans attendus dans l'ordre :
```
[1/5] Verification de Python...
Python 3.12.2 detecte - OK
[2/5] Creation de l'environnement isole...
Environnement cree - OK
[3/5] Activation de l'environnement...
Active - OK
[4/5] Installation des composants (cela peut prendre 1-2 min)...
Composants installes - OK
[5/5] Configuration Windows...
Configuration terminee - OK
Tous les composants sont OK !
Installation terminee !
```
4. Appuyer sur une touche pour fermer.
> **Durée typique** : 2-3 minutes (dépend de la bande passante — `pip install`
> télécharge ~50 Mo).
---
## Étape 6 — Lancer Léa (30 s)
1. Double-cliquer sur `Lea.bat`.
2. Une fenêtre noire affiche :
```
Demarrage de Lea...
(Lea apparait dans la barre des taches, en bas a droite)
```
3. **Au bout de 3-5 secondes**, une **icône ronde** apparaît dans la barre
des tâches (en bas à droite de l'écran, à côté de l'horloge, parfois
cachée sous la flèche `^`).
4. **Clic droit sur l'icône** → menu :
- Apprenez-moi une tâche
- C'est terminé
- Discuter avec Léa
- ARRÊT D'URGENCE
- Quitter Léa
Si l'icône apparaît et que le menu s'ouvre → **installation réussie**.
> La fenêtre noire peut être fermée. L'agent tourne en arrière-plan via
> `pythonw.exe`.
---
## Étape 7 — Vérifier côté dashboard (1 min)
Côté Dom, depuis un navigateur :
```
GET https://lea.labs.laurinebazin.design/api/v1/agents/fleet
Header: Authorization: Bearer <TOKEN_ADMIN>
```
La réponse doit contenir une entrée avec :
```json
{
"agent_id": "<nom_du_poste_TIM>",
"status": "online",
"last_seen": "2026-04-...",
"version": "1.0.0"
}
```
Si le poste n'apparaît pas après 30 s, voir la section "Si ça plante" ci-dessous.
Alternative : ouvrir le dashboard web (`http://<serveur>:5001`) → onglet
"Flotte" → le poste de la TIM doit s'afficher en vert.
---
## Si ça plante (5 cas les plus probables)
### 1. "Token invalide" / erreur 401 dans les logs
- Vérifier que `RPA_API_TOKEN` dans `config.txt` **ne contient pas d'espace**
en début/fin, **pas de guillemets**, pas de retour à la ligne.
- Le format attendu : `RPA_API_TOKEN=abc123def...` (sans espace autour du `=`).
- Si le token a été copié-collé depuis un mail, il peut contenir un caractère
invisible. **Retaper à la main** ou recopier depuis un éditeur brut.
### 2. "Python n'est pas installé" alors qu'il l'est
- `python --version` marche dans un cmd "normal" mais `install.bat` le trouve
pas → Python est installé **pour l'utilisateur** mais la TIM lance le `.bat`
en mode admin (session différente).
- **Solution** : double-cliquer sur `install.bat` en user normal, PAS en
"Exécuter en tant qu'administrateur".
### 3. Firewall bloque la connexion au serveur
- Au premier lancement, Windows Defender peut demander
"Autoriser pythonw.exe à communiquer sur le réseau ?" → **Autoriser**.
- Si firewall corporate plus strict : demander au service IT d'autoriser
les connexions sortantes vers `lea.labs.laurinebazin.design:443` (HTTPS).
- Test rapide depuis le poste : ouvrir un navigateur sur
`https://lea.labs.laurinebazin.design/health` → doit répondre `{"status":"ok"}`.
### 4. Antivirus bloque `pythonw.exe`
- Certains AV corporate (Kaspersky, Sophos, Cortex XDR) mettent `pythonw.exe`
en quarantaine dès qu'il capture l'écran.
- Symptôme : `Lea.bat` affiche "Lea n'a pas demarre correctement" et le mode
verbeux montre un `pythonw.exe n'a pas pu se lancer` ou rien du tout.
- **Solution** : demander au service IT d'ajouter **une exception pour le
dossier** `C:\rpa_vision\Lea\.venv\Scripts\` (et pas juste pour `pythonw.exe`
globalement — ce serait une faille de sécurité).
### 5. Double-clic sur `Lea.bat` ouvre le Notepad
- Cause classique : la TIM a fait clic droit → "Ouvrir avec…" → "Toujours
utiliser Notepad" une fois par erreur. Windows a associé `.bat` à Notepad.
- **Solution** :
1. Clic droit sur `Lea.bat` → "Ouvrir avec" → "Choisir une autre application"
→ "Plus d'applications" → "Rechercher une autre app sur ce PC"
`C:\Windows\System32\cmd.exe`**ne PAS cocher** "Toujours utiliser".
2. Ou alternative rapide : ouvrir un cmd, taper
`cd C:\rpa_vision\Lea` puis `Lea.bat`.
---
## Désinstaller Léa (si besoin)
1. Clic droit sur l'icône Léa → "Quitter Léa".
2. Supprimer le dossier `C:\rpa_vision\Lea\`.
3. (Optionnel) Supprimer les logs dans `%LOCALAPPDATA%\Lea\` si existant.
Pas de désinstalleur, pas de clé registre, pas de service : Léa est un **binaire
portable**. C'est voulu : aucune trace système, facile à auditer.
---
## Check final avant la démo (à faire ensemble avec la TIM)
- [ ] Icône Léa visible dans la tray.
- [ ] Clic droit → menu s'ouvre.
- [ ] Dashboard côté serveur affiche le poste en "online".
- [ ] Le DPI urgences de la TIM s'ouvre et répond normalement (pas de lenteur).
- [ ] Démo d'enregistrement de 30 s : clic droit → "Apprenez-moi une tâche"
→ faire 2-3 clics → clic droit → "C'est terminé". Vérifier côté serveur
que la session arrive.
**Si tout est vert → on est prêts pour le 26 avril.**