feat: replay visuel VLM-first, worker séparé, package Léa, AZERTY, sécurité HTTPS

Pipeline replay visuel :
- VLM-first : l'agent appelle Ollama directement pour trouver les éléments
- Template matching en fallback (seuil strict 0.90)
- Stop immédiat si élément non trouvé (pas de clic blind)
- Replay depuis session brute (/replay-session) sans attendre le VLM
- Vérification post-action (screenshot hash avant/après)
- Gestion des popups (Enter/Escape/Tab+Enter)

Worker VLM séparé :
- run_worker.py : process distinct du serveur HTTP
- Communication par fichiers (_worker_queue.txt + _replay_active.lock)
- Le serveur HTTP ne fait plus jamais de VLM → toujours réactif
- Service systemd rpa-worker.service

Capture clavier :
- raw_keys (vk + press/release) pour replay exact indépendant du layout
- Fix AZERTY : ToUnicodeEx + AltGr detection
- Enter capturé comme \n, Tab comme \t
- Filtrage modificateurs seuls (Ctrl/Alt/Shift parasites)
- Fusion text_input consécutifs, dédup key_combo

Sécurité & Internet :
- HTTPS Let's Encrypt (lea.labs + vwb.labs.laurinebazin.design)
- Token API fixe dans .env.local
- HTTP Basic Auth sur VWB
- Security headers (HSTS, CSP, nosniff)
- CORS domaines publics, plus de wildcard

Infrastructure :
- DPI awareness (SetProcessDpiAwareness) Python + Rust
- Métadonnées système (dpi_scale, window_bounds, monitors, os_theme)
- Template matching multi-scale [0.5, 2.0]
- Résolution dynamique (plus de hardcode 1920x1080)
- VLM prefill fix (47x speedup, 3.5s au lieu de 180s)

Modules :
- core/auth/ : credential vault (Fernet AES), TOTP (RFC 6238), auth handler
- core/federation/ : LearningPack export/import anonymisé, FAISS global
- deploy/ : package Léa (config.txt, Lea.bat, install.bat, LISEZMOI.txt)

UX :
- Filtrage OS (VWB + Chat montrent que les workflows de l'OS courant)
- Bibliothèque persistante (cache local + SQLite)
- Clustering hybride (titre fenêtre + DBSCAN)
- EdgeConstraints + PostConditions peuplés
- GraphBuilder compound actions (toutes les frappes)

Agent Rust :
- Token Bearer auth (network.rs)
- sysinfo.rs (DPI, résolution, window bounds via Win32 API)
- config.txt lu automatiquement
- Support Chrome/Brave/Firefox (pas que Edge)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-03-26 10:19:18 +01:00
parent fe5e0ba83d
commit d5deac3029
162 changed files with 25669 additions and 557 deletions

275
deploy/build_lea_exe.sh Executable file
View File

@@ -0,0 +1,275 @@
#!/bin/bash
# ============================================================
# build_lea_exe.sh — Cree un executable Windows autonome via PyInstaller
#
# IMPORTANT : Ce script doit tourner SUR WINDOWS (ou dans Wine/WSL
# avec acces a un Python Windows). PyInstaller ne peut pas produire
# un .exe Windows depuis Linux natif.
#
# Procedure recommandee :
# 1. Sur le PC Windows (192.168.1.11 ou autre) :
# - Installer Python 3.12 (https://python.org)
# - pip install pyinstaller
# 2. Copier ce script et le dossier agent_v0/ sur le PC Windows
# 3. Executer depuis PowerShell/cmd :
# python -m PyInstaller --onefile --windowed ^
# --name "Lea" ^
# --add-data "agent_v1;agent_v1" ^
# --add-data "lea_ui;lea_ui" ^
# --add-data "config.txt;." ^
# --hidden-import "pynput.keyboard._win32" ^
# --hidden-import "pynput.mouse._win32" ^
# --hidden-import "pystray._win32" ^
# --hidden-import "plyer.platforms.win.notification" ^
# --hidden-import "win32api" ^
# --hidden-import "win32con" ^
# --hidden-import "win32gui" ^
# run_agent_v1.py
#
# Le .exe resultant sera dans dist/Lea.exe (~50-100 MB)
#
# ============================================================
#
# OPTION ALTERNATIVE : Python Embedded (recommandee)
#
# Python Embedded est un Python portable officiel (pas d'installation).
# Combine avec le code source, c'est la methode la plus fiable
# pour les non-informaticiens.
#
# Sur une machine Windows :
# 1. Telecharger Python Embedded 3.12 :
# https://www.python.org/ftp/python/3.12.9/python-3.12.9-embed-amd64.zip
#
# 2. Dezipper dans un dossier temporaire
#
# 3. Activer pip dans Python Embedded :
# - Editer python312._pth, decommenter "import site"
# - Telecharger get-pip.py : https://bootstrap.pypa.io/get-pip.py
# - Executer : python.exe get-pip.py
#
# 4. Installer les dependances :
# python.exe -m pip install -r requirements_agent.txt
#
# 5. Copier le code source (agent_v1/, lea_ui/, run_agent_v1.py)
#
# 6. Zipper le tout → Lea_Portable.zip (~40-60 MB)
#
# Le Lea.bat dans ce cas utiliserait :
# python\python.exe run_agent_v1.py
# au lieu de .venv\Scripts\python.exe
#
# ============================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
echo "============================================================"
echo " Build Lea.exe (PyInstaller)"
echo "============================================================"
echo ""
echo " Ce script ne peut pas produire un .exe Windows depuis Linux."
echo ""
echo " OPTIONS DISPONIBLES :"
echo ""
echo " 1. OPTION VIA PC WINDOWS (recommandee pour .exe) :"
echo " Copiez le dossier deploy/ sur le PC Windows"
echo " puis lancez la commande PyInstaller ci-dessous."
echo ""
echo " 2. OPTION ZIP + VENV (recommandee pour deploiement rapide) :"
echo " Lancez ./deploy/build_package.sh"
echo " Le zip resultant contient install.bat + Lea.bat"
echo ""
echo " 3. OPTION PYTHON EMBEDDED (recommandee pour zero install) :"
echo " Suivez les instructions dans ce script (section ALTERNATIVE)"
echo ""
echo "============================================================"
echo ""
# Generer le .spec PyInstaller pour reference
SPEC_FILE="$SCRIPT_DIR/Lea.spec"
cat > "$SPEC_FILE" << 'PYINSTALLER_SPEC'
# -*- mode: python ; coding: utf-8 -*-
# Lea.spec — Configuration PyInstaller pour l'agent Lea
#
# Usage sur Windows :
# pip install pyinstaller
# pyinstaller Lea.spec
#
# Le .exe resultant sera dans dist/Lea.exe
import os
import sys
block_cipher = None
# Repertoire de travail (ou se trouve ce .spec)
SPEC_DIR = os.path.dirname(os.path.abspath(SPEC())) if 'SPEC' in dir() else '.'
a = Analysis(
['run_agent_v1.py'],
pathex=['.'],
binaries=[],
datas=[
('agent_v1', 'agent_v1'),
('lea_ui', 'lea_ui'),
('config.txt', '.'),
('LISEZMOI.txt', '.'),
],
hiddenimports=[
# pynput backends Windows
'pynput.keyboard._win32',
'pynput.mouse._win32',
# pystray backend Windows
'pystray._win32',
# plyer notification Windows
'plyer.platforms.win',
'plyer.platforms.win.notification',
# pywin32
'win32api',
'win32con',
'win32gui',
'win32com',
'pythoncom',
# tkinter (stdlib, parfois manquant dans PyInstaller)
'tkinter',
'tkinter.simpledialog',
'tkinter.messagebox',
'tkinter.filedialog',
],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[
# Exclure les modules lourds non necessaires cote client
'torch',
'torchvision',
'transformers',
'clip',
'open_clip',
'faiss',
'cv2', # opencv pas obligatoire (blur_sensitive a un fallback)
'numpy', # requis par PIL mais pas directement
'scipy',
'sklearn',
'matplotlib',
'pandas',
'tensorflow',
],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='Lea',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False, # --windowed : pas de console visible
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
# icon='assets/lea_icon.ico', # Decommenter quand l'icone sera creee
)
PYINSTALLER_SPEC
echo " Fichier Lea.spec genere dans : $SPEC_FILE"
echo ""
echo " Pour builder sur Windows :"
echo " 1. Copier le dossier Lea/ (apres build_package.sh) sur le PC Windows"
echo " 2. pip install pyinstaller"
echo " 3. cd Lea"
echo " 4. pyinstaller ../Lea.spec"
echo " 5. Le .exe sera dans dist/Lea.exe"
echo ""
# Generer aussi un script batch pour builder sur Windows
WIN_BUILD="$SCRIPT_DIR/build_exe_windows.bat"
cat > "$WIN_BUILD" << 'WIN_BATCH'
@echo off
chcp 65001 >nul 2>&1
title Build Lea.exe
echo ============================================================
echo Build Lea.exe (PyInstaller)
echo ============================================================
echo.
:: Verifier PyInstaller
pip show pyinstaller >nul 2>&1
if errorlevel 1 (
echo Installation de PyInstaller...
pip install pyinstaller
)
:: Builder
echo Build en cours (cela prend 2-5 minutes)...
echo.
pyinstaller --onefile --windowed ^
--name "Lea" ^
--add-data "agent_v1;agent_v1" ^
--add-data "lea_ui;lea_ui" ^
--add-data "config.txt;." ^
--add-data "LISEZMOI.txt;." ^
--hidden-import "pynput.keyboard._win32" ^
--hidden-import "pynput.mouse._win32" ^
--hidden-import "pystray._win32" ^
--hidden-import "plyer.platforms.win.notification" ^
--hidden-import "win32api" ^
--hidden-import "win32con" ^
--hidden-import "win32gui" ^
--hidden-import "tkinter" ^
--hidden-import "tkinter.simpledialog" ^
--hidden-import "tkinter.messagebox" ^
--exclude-module "torch" ^
--exclude-module "torchvision" ^
--exclude-module "transformers" ^
--exclude-module "clip" ^
--exclude-module "faiss" ^
--exclude-module "scipy" ^
--exclude-module "sklearn" ^
--exclude-module "matplotlib" ^
--exclude-module "pandas" ^
--exclude-module "tensorflow" ^
run_agent_v1.py
if errorlevel 1 (
echo.
echo ERREUR : Le build a echoue.
pause
exit /b 1
)
echo.
echo ============================================================
echo Build termine !
echo.
echo Lea.exe est dans le dossier dist\
echo Taille :
dir dist\Lea.exe | findstr "Lea.exe"
echo.
echo Pour deployer : copiez dist\Lea.exe + config.txt + LISEZMOI.txt
echo ============================================================
pause
WIN_BATCH
echo " Script Windows genere : $WIN_BUILD"
echo ""
echo "============================================================"

166
deploy/build_package.sh Executable file
View File

@@ -0,0 +1,166 @@
#!/bin/bash
# ============================================================
# build_package.sh — Assemble le package Lea pour deploiement Windows
#
# Produit : Lea_v<version>.zip (< 5 MB sans venv)
#
# Usage :
# ./deploy/build_package.sh # Package standard
# ./deploy/build_package.sh --clean # Nettoyer avant de builder
#
# Le zip contient tout ce qu'il faut pour un deploiement :
# - install.bat (premiere installation)
# - Lea.bat (lancement quotidien)
# - config.txt (parametres serveur)
# - LISEZMOI.txt (documentation utilisateur)
# - Code Python de l'agent
# ============================================================
set -euo pipefail
# Couleurs pour les messages
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# Repertoire racine du projet
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
# Version (lue depuis config.py de l'agent)
VERSION=$(grep -oP 'AGENT_VERSION\s*=\s*"([^"]+)"' "$PROJECT_ROOT/agent_v0/agent_v1/config.py" | grep -oP '"[^"]+"' | tr -d '"' || echo "1.0.0")
# Dossier de sortie
BUILD_DIR="$SCRIPT_DIR/build"
PACKAGE_DIR="$BUILD_DIR/Lea"
OUTPUT_ZIP="$SCRIPT_DIR/Lea_v${VERSION}.zip"
echo -e "${GREEN}============================================================${NC}"
echo -e "${GREEN} Build du package Lea v${VERSION}${NC}"
echo -e "${GREEN}============================================================${NC}"
echo ""
# ---------------------------------------------------------------
# Option --clean
# ---------------------------------------------------------------
if [[ "${1:-}" == "--clean" ]]; then
echo -e "${YELLOW}Nettoyage du build precedent...${NC}"
rm -rf "$BUILD_DIR"
rm -f "$SCRIPT_DIR"/Lea_v*.zip
echo " OK"
echo ""
fi
# ---------------------------------------------------------------
# 1. Creer le dossier de build
# ---------------------------------------------------------------
echo "[1/7] Preparation du dossier de build..."
rm -rf "$PACKAGE_DIR"
mkdir -p "$PACKAGE_DIR"
echo " $PACKAGE_DIR cree"
echo ""
# ---------------------------------------------------------------
# 2. Copier les fichiers de deploiement (bat, config, readme)
# ---------------------------------------------------------------
echo "[2/7] Copie des fichiers de deploiement..."
cp "$SCRIPT_DIR/lea_package/Lea.bat" "$PACKAGE_DIR/"
cp "$SCRIPT_DIR/lea_package/install.bat" "$PACKAGE_DIR/"
cp "$SCRIPT_DIR/lea_package/config.txt" "$PACKAGE_DIR/"
cp "$SCRIPT_DIR/lea_package/LISEZMOI.txt" "$PACKAGE_DIR/"
cp "$SCRIPT_DIR/lea_package/requirements_agent.txt" "$PACKAGE_DIR/"
echo " 5 fichiers copies"
echo ""
# ---------------------------------------------------------------
# 3. Copier le point d'entree
# ---------------------------------------------------------------
echo "[3/7] Copie du point d'entree..."
cp "$PROJECT_ROOT/agent_v0/run_agent_v1.py" "$PACKAGE_DIR/"
echo " run_agent_v1.py copie"
echo ""
# ---------------------------------------------------------------
# 4. Copier le package agent_v1 (code Python)
# ---------------------------------------------------------------
echo "[4/7] Copie du code agent_v1..."
# Copier tout le dossier en excluant les fichiers inutiles
rsync -a \
--exclude='__pycache__' \
--exclude='*.pyc' \
--exclude='.pytest_cache' \
--exclude='sessions/' \
--exclude='logs/*.log' \
--exclude='.hypothesis' \
"$PROJECT_ROOT/agent_v0/agent_v1/" \
"$PACKAGE_DIR/agent_v1/"
# Creer les dossiers necessaires (vides)
mkdir -p "$PACKAGE_DIR/agent_v1/sessions"
mkdir -p "$PACKAGE_DIR/agent_v1/logs"
echo " agent_v1/ copie ($(find "$PACKAGE_DIR/agent_v1" -name "*.py" | wc -l) fichiers Python)"
echo ""
# ---------------------------------------------------------------
# 5. Copier le module lea_ui (client serveur pour le chat)
# ---------------------------------------------------------------
echo "[5/7] Copie du module lea_ui..."
mkdir -p "$PACKAGE_DIR/lea_ui"
cp "$PROJECT_ROOT/agent_v0/lea_ui/"*.py "$PACKAGE_DIR/lea_ui/"
echo " lea_ui/ copie ($(ls "$PACKAGE_DIR/lea_ui/"*.py | wc -l) fichiers)"
echo ""
# ---------------------------------------------------------------
# 6. Copier le __init__.py racine (pour les imports relatifs)
# ---------------------------------------------------------------
echo "[6/7] Configuration des packages Python..."
# Le __init__.py au niveau racine du package (agent_v0 level)
# n'est PAS necessaire car run_agent_v1.py est au meme niveau que agent_v1/
# Mais lea_ui est importe avec un import relatif depuis agent_v1/main.py
# via `from ..lea_ui.server_client import LeaServerClient`
# Cet import fonctionne uniquement si l'arborescence est un package.
# Or, dans le deploiement, lea_ui est au meme niveau que agent_v1,
# et le fallback dans main.py fait `from lea_ui.server_client import LeaServerClient`
# qui fonctionne car run_agent_v1.py ajoute current_dir au sys.path.
echo " Structure d'imports verifiee"
echo ""
# ---------------------------------------------------------------
# 7. Creer le zip
# ---------------------------------------------------------------
echo "[7/7] Creation du zip..."
cd "$BUILD_DIR"
rm -f "$OUTPUT_ZIP"
zip -r "$OUTPUT_ZIP" "Lea/" -x "Lea/.venv/*" "Lea/__pycache__/*" "Lea/*/__pycache__/*"
cd "$PROJECT_ROOT"
# Taille du zip
ZIP_SIZE=$(du -h "$OUTPUT_ZIP" | cut -f1)
echo ""
echo -e "${GREEN}============================================================${NC}"
echo -e "${GREEN} Build termine !${NC}"
echo -e "${GREEN}============================================================${NC}"
echo ""
echo " Package : $OUTPUT_ZIP"
echo " Taille : $ZIP_SIZE"
echo " Version : $VERSION"
echo ""
echo " Contenu du package :"
echo " --------------------"
echo ""
# Lister le contenu du zip (structure lisible)
unzip -l "$OUTPUT_ZIP" | tail -n +4 | head -n -2 | awk '{print " " $4}'
echo ""
echo -e "${YELLOW} Deploiement :${NC}"
echo " 1. Copier le zip sur le PC Windows du collaborateur"
echo " 2. Dezipper dans un dossier (ex: C:\\Lea)"
echo " 3. Editer config.txt si besoin (adresse serveur, token)"
echo " 4. Double-cliquer install.bat (une seule fois)"
echo " 5. Double-cliquer Lea.bat pour lancer"
echo ""
echo -e "${GREEN}============================================================${NC}"

View File

@@ -0,0 +1,85 @@
============================================================
Lea - Votre assistante intelligente
============================================================
Bienvenue ! Lea est une assistante qui apprend vos taches
repetitives sur l'ordinateur et peut les refaire a votre place.
PREMIERE INSTALLATION
---------------------
1. Double-cliquez sur "install.bat"
(cela prend 2-3 minutes, une seule fois)
2. Si une fenetre vous demande d'autoriser Python,
cliquez "Oui" ou "Autoriser".
3. A la fin, vous verrez "Installation terminee !"
LANCER LEA
----------
Double-cliquez sur "Lea.bat"
Lea apparait en bas a droite de votre ecran, dans la barre
des taches (petite icone ronde, a cote de l'horloge).
Clic droit sur l'icone pour ouvrir le menu :
- "Apprenez-moi une tache" : Lea observe ce que vous faites
et memorise les etapes.
- "Mes taches" : Liste des taches que Lea a apprises.
Cliquez sur une tache pour que Lea la refasse.
- "Discuter avec Lea" : Ouvre une fenetre de discussion
pour poser des questions ou donner des instructions.
- "ARRET D'URGENCE" : Arrete immediatement tout ce que
Lea est en train de faire.
- "Quitter Lea" : Ferme le programme.
CONFIGURATION
-------------
Si vous devez modifier l'adresse du serveur, ouvrez le fichier
"config.txt" avec le Bloc-notes et changez les valeurs.
Ne modifiez rien d'autre sans l'accord de votre administrateur.
EN CAS DE PROBLEME
-------------------
- "Python n'est pas installe" : Demandez a votre
service informatique d'installer Python 3.10
depuis https://python.org
- Lea ne demarre pas : Relancez "install.bat" puis
relancez "Lea.bat"
- Lea est deconnectee : Verifiez votre connexion
internet/reseau. Le serveur est peut-etre en
maintenance.
- En cas de doute, contactez votre administrateur.
INFORMATIONS
------------
Lea est un systeme base sur l'intelligence artificielle.
Quand Lea enregistre vos actions, elle capture votre ecran,
vos clics et vos frappes clavier. Les donnees sensibles
(mots de passe, informations medicales) sont automatiquement
floutees avant envoi.
Vous pouvez arreter l'enregistrement ou le replay a tout
moment via le menu ou le bouton "ARRET D'URGENCE".
============================================================

View File

@@ -0,0 +1,54 @@
@echo off
chcp 65001 >nul 2>&1
title Lea - Assistante IA
:: ---------------------------------------------------------------
:: Se placer dans le dossier du script (important pour les chemins)
:: ---------------------------------------------------------------
cd /d "%~dp0"
:: ---------------------------------------------------------------
:: Verifier que l'installation a ete faite
:: ---------------------------------------------------------------
if not exist ".venv\Scripts\python.exe" (
echo.
echo Lea n'est pas encore installee.
echo Lancez d'abord "install.bat" puis revenez ici.
echo.
pause
exit /b 1
)
:: ---------------------------------------------------------------
:: Charger la configuration depuis config.txt
:: Les lignes commencant par # sont ignorees (commentaires)
:: Format attendu : NOM_VARIABLE=valeur
:: ---------------------------------------------------------------
if exist "config.txt" (
for /f "usebackq eol=# tokens=1,* delims==" %%a in ("config.txt") do (
if not "%%a"=="" if not "%%b"=="" set "%%a=%%b"
)
) else (
echo ATTENTION : config.txt introuvable, utilisation des valeurs par defaut.
)
:: ---------------------------------------------------------------
:: Lancer Lea
:: ---------------------------------------------------------------
echo.
echo Demarrage de Lea...
echo (Lea apparait dans la barre des taches, en bas a droite)
echo.
echo Pour arreter Lea : clic droit sur l'icone ^> "Quitter Lea"
echo Vous pouvez fermer cette fenetre.
echo.
.venv\Scripts\pythonw.exe run_agent_v1.py
if errorlevel 1 (
echo.
echo Lea a rencontre un probleme au demarrage.
echo Tentative avec affichage des erreurs...
echo.
.venv\Scripts\python.exe run_agent_v1.py
pause
)

View File

@@ -0,0 +1,31 @@
# ============================================================
# Configuration Lea
# ============================================================
#
# Ce fichier contient les parametres de connexion au serveur.
# Modifiez uniquement les valeurs apres le signe =
# Ne touchez pas aux noms des parametres (a gauche du =).
#
# Les lignes commencant par # sont des commentaires (ignorees).
#
# ============================================================
# Adresse du serveur Lea (URL complete avec /api/v1)
RPA_SERVER_URL=https://lea.labs.laurinebazin.design/api/v1
# Cle d'authentification (fournie par l'administrateur)
RPA_API_TOKEN=86031addb338e449fccdb1a983f61807aec15d42d482b9c7748ad607dc23caab
# Nom du serveur (sans https://, sans /api/v1)
RPA_SERVER_HOST=lea.labs.laurinebazin.design
# ============================================================
# Parametres avances (ne pas modifier sauf indication)
# ============================================================
# Flouter les zones de texte dans les captures (securite donnees)
# Mettre false uniquement pour le developpement/tests
RPA_BLUR_SENSITIVE=true
# Duree de conservation des logs en jours (minimum 180 pour conformite)
RPA_LOG_RETENTION_DAYS=180

View File

@@ -0,0 +1,127 @@
@echo off
chcp 65001 >nul 2>&1
title Lea - Installation
echo.
echo ============================================================
echo Lea - Installation
echo ============================================================
echo.
echo Cette installation prend 2-3 minutes.
echo Ne fermez pas cette fenetre.
echo.
echo ============================================================
echo.
:: ---------------------------------------------------------------
:: 0. Verifier que Python est installe
:: ---------------------------------------------------------------
echo [1/5] Verification de Python...
python --version >nul 2>&1
if errorlevel 1 (
echo.
echo ERREUR : Python n'est pas installe sur cet ordinateur.
echo.
echo Pour installer Python :
echo 1. Allez sur https://python.org
echo 2. Cliquez "Download Python 3.12"
echo 3. IMPORTANT : cochez "Add Python to PATH" pendant l'installation
echo 4. Relancez install.bat apres l'installation de Python
echo.
pause
exit /b 1
)
:: Afficher la version Python detectee
for /f "tokens=*" %%v in ('python --version 2^>^&1') do echo %%v detecte - OK
echo.
:: ---------------------------------------------------------------
:: 1. Creer l'environnement virtuel
:: ---------------------------------------------------------------
if not exist ".venv" (
echo [2/5] Creation de l'environnement isole...
python -m venv .venv
if errorlevel 1 (
echo ERREUR : Impossible de creer l'environnement virtuel.
echo Verifiez que Python est correctement installe.
pause
exit /b 1
)
echo Environnement cree - OK
) else (
echo [2/5] Environnement existant detecte - OK
)
echo.
:: ---------------------------------------------------------------
:: 2. Activer l'environnement
:: ---------------------------------------------------------------
echo [3/5] Activation de l'environnement...
call .venv\Scripts\activate.bat
echo Active - OK
echo.
:: ---------------------------------------------------------------
:: 3. Installer les dependances
:: ---------------------------------------------------------------
echo [4/5] Installation des composants (cela peut prendre 1-2 min)...
python -m pip install --upgrade pip --quiet 2>nul
pip install -r requirements_agent.txt --quiet 2>nul
if errorlevel 1 (
echo.
echo ATTENTION : Certains composants n'ont pas pu etre installes.
echo Nouvelle tentative avec affichage des details...
echo.
pip install -r requirements_agent.txt
if errorlevel 1 (
echo.
echo ERREUR : L'installation a echoue.
echo Verifiez votre connexion internet et reessayez.
pause
exit /b 1
)
)
echo Composants installes - OK
echo.
:: ---------------------------------------------------------------
:: 4. Post-installation Windows (pywin32)
:: ---------------------------------------------------------------
echo [5/5] Configuration Windows...
python -c "import win32api" >nul 2>&1
if errorlevel 1 (
python .venv\Scripts\pywin32_postinstall.py -install >nul 2>&1
)
echo Configuration terminee - OK
echo.
:: ---------------------------------------------------------------
:: 5. Verification finale
:: ---------------------------------------------------------------
echo ============================================================
echo Verification finale...
echo ============================================================
echo.
python -c "import mss; import pynput; import pystray; import plyer; import requests; import PIL; print(' Tous les composants sont OK !')"
if errorlevel 1 (
echo.
echo ATTENTION : Certains composants manquent.
echo Essayez de relancer install.bat.
echo Si le probleme persiste, contactez votre administrateur.
pause
exit /b 1
)
echo.
echo ============================================================
echo.
echo Installation terminee !
echo.
echo Pour lancer Lea, double-cliquez sur "Lea.bat"
echo.
echo ============================================================
echo.
pause

View File

@@ -0,0 +1,13 @@
# Dependances Lea Agent (client leger)
# Pas de CLIP, PyTorch, ou modele lourd - tout le calcul est sur le serveur
mss>=9.0.1 # Capture d'ecran haute performance
pynput>=1.7.7 # Clavier/Souris
Pillow>=10.0.0 # Traitement image (crops, compression)
requests>=2.31.0 # Communication serveur
psutil>=5.9.0 # Monitoring CPU/RAM
pystray>=0.19.5 # Icone systray
plyer>=2.1.0 # Notifications toast natives
# Windows specifique
pywin32>=306 ; sys_platform == 'win32'