feat: auto-stop enregistrement (1h) + packaging Léa collaborateurs
- Auto-stop : notification 10 min avant, arrêt automatique après MAX_SESSION_DURATION_S (1h) - Lea.bat : kill des anciens process (python, pythonw, rpa-agent) au démarrage - LISEZMOI : simplifié pour les collaborateurs (pas de replay, juste collecte) - Chat server (5004) vérifié fonctionnel Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,7 +16,7 @@ import logging
|
||||
import threading
|
||||
from .config import (
|
||||
SESSIONS_ROOT, AGENT_VERSION, SERVER_URL, MACHINE_ID, LOG_RETENTION_DAYS,
|
||||
SCREEN_RESOLUTION, DPI_SCALE, OS_THEME, API_TOKEN,
|
||||
SCREEN_RESOLUTION, DPI_SCALE, OS_THEME, API_TOKEN, MAX_SESSION_DURATION_S,
|
||||
)
|
||||
from .core.captor import EventCaptorV1
|
||||
from .core.executor import ActionExecutorV1
|
||||
@@ -136,6 +136,58 @@ class AgentV1:
|
||||
time.sleep(30)
|
||||
self.storage.run_auto_cleanup()
|
||||
|
||||
def _auto_stop_loop(self):
|
||||
"""Auto-stop de l'enregistrement après MAX_SESSION_DURATION_S.
|
||||
|
||||
L'utilisateur peut oublier d'arrêter. On notifie à 50 min,
|
||||
puis on arrête automatiquement à 60 min (configurable).
|
||||
"""
|
||||
warn_before = 600 # Prévenir 10 min avant la fin
|
||||
warned = False
|
||||
|
||||
while self.running and self.session_id:
|
||||
elapsed = time.time() - self._session_start_time
|
||||
remaining = MAX_SESSION_DURATION_S - elapsed
|
||||
|
||||
# Notification 10 min avant la fin
|
||||
if not warned and remaining <= warn_before:
|
||||
warned = True
|
||||
mins = int(remaining / 60)
|
||||
logger.info(f"Auto-stop dans {mins} min")
|
||||
try:
|
||||
from .ui.notifications import NotificationManager
|
||||
NotificationManager().notify(
|
||||
"Léa",
|
||||
f"L'enregistrement s'arrêtera automatiquement dans {mins} minutes.",
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Auto-stop
|
||||
if remaining <= 0:
|
||||
logger.info(
|
||||
f"Auto-stop : session {self.session_id} après "
|
||||
f"{int(elapsed)}s ({int(elapsed/60)} min)"
|
||||
)
|
||||
try:
|
||||
from .ui.notifications import NotificationManager
|
||||
NotificationManager().notify(
|
||||
"Léa",
|
||||
f"Enregistrement terminé automatiquement après "
|
||||
f"{int(elapsed/60)} minutes. Merci !",
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Arrêter via l'état partagé (synchronise systray + chat)
|
||||
if self._state is not None:
|
||||
self._state.stop_recording()
|
||||
else:
|
||||
self.stop_session()
|
||||
break
|
||||
|
||||
time.sleep(30) # Vérifier toutes les 30s
|
||||
|
||||
def start_session(self, workflow_name):
|
||||
self.session_id = f"sess_{time.strftime('%Y%m%dT%H%M%S')}_{uuid.uuid4().hex[:6]}"
|
||||
self.session_dir = self.storage.get_session_dir(self.session_id)
|
||||
@@ -157,6 +209,11 @@ class AgentV1:
|
||||
# Heartbeat Contextuel (Toutes les 5s par defaut)
|
||||
threading.Thread(target=self._heartbeat_loop, daemon=True).start()
|
||||
|
||||
# Auto-stop : arrêter l'enregistrement après MAX_SESSION_DURATION_S
|
||||
# L'utilisateur peut oublier d'arrêter — on le fait automatiquement
|
||||
self._session_start_time = time.time()
|
||||
threading.Thread(target=self._auto_stop_loop, daemon=True).start()
|
||||
|
||||
# Watchdog de Commandes (GHOST Replay — legacy fichier)
|
||||
threading.Thread(target=self._command_watchdog_loop, daemon=True).start()
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
============================================================
|
||||
|
||||
Bienvenue ! Lea est une assistante qui apprend vos taches
|
||||
repetitives sur l'ordinateur et peut les refaire a votre place.
|
||||
repetitives sur l'ordinateur pour pouvoir vous aider.
|
||||
|
||||
|
||||
PREMIERE INSTALLATION
|
||||
@@ -29,13 +29,15 @@ 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.
|
||||
et memorise les etapes. Travaillez normalement, Lea
|
||||
apprend en vous regardant.
|
||||
|
||||
- "Mes taches" : Liste des taches que Lea a apprises.
|
||||
Cliquez sur une tache pour que Lea la refasse.
|
||||
- "C'est termine" : Arrete l'enregistrement quand vous
|
||||
avez fini la tache. Si vous oubliez, Lea s'arrete
|
||||
automatiquement apres 1 heure.
|
||||
|
||||
- "Discuter avec Lea" : Ouvre une fenetre de discussion
|
||||
pour poser des questions ou donner des instructions.
|
||||
pour poser des questions.
|
||||
|
||||
- "ARRET D'URGENCE" : Arrete immediatement tout ce que
|
||||
Lea est en train de faire.
|
||||
@@ -43,6 +45,22 @@ Clic droit sur l'icone pour ouvrir le menu :
|
||||
- "Quitter Lea" : Ferme le programme.
|
||||
|
||||
|
||||
INFORMATIONS IMPORTANTES
|
||||
------------------------
|
||||
|
||||
Quand Lea enregistre vos actions, elle capture votre ecran,
|
||||
vos clics et vos frappes clavier.
|
||||
|
||||
- Lea vous previent AVANT chaque enregistrement
|
||||
- Les donnees sensibles (mots de passe, informations
|
||||
medicales) sont automatiquement floutees
|
||||
- L'enregistrement s'arrete automatiquement apres 1 heure
|
||||
- Vous pouvez arreter a tout moment via le menu
|
||||
|
||||
Lea est un systeme base sur l'intelligence artificielle
|
||||
(Article 50, Reglement europeen sur l'IA).
|
||||
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
|
||||
@@ -56,30 +74,15 @@ EN CAS DE PROBLEME
|
||||
-------------------
|
||||
|
||||
- "Python n'est pas installe" : Demandez a votre
|
||||
service informatique d'installer Python 3.10
|
||||
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.
|
||||
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".
|
||||
|
||||
============================================================
|
||||
|
||||
@@ -7,6 +7,14 @@ title Lea - Assistante IA
|
||||
:: ---------------------------------------------------------------
|
||||
cd /d "%~dp0"
|
||||
|
||||
:: ---------------------------------------------------------------
|
||||
:: Fermer les anciennes instances de Lea
|
||||
:: ---------------------------------------------------------------
|
||||
taskkill /F /IM pythonw.exe >nul 2>&1
|
||||
taskkill /F /IM python.exe >nul 2>&1
|
||||
taskkill /F /IM rpa-agent.exe >nul 2>&1
|
||||
timeout /t 2 >nul
|
||||
|
||||
:: ---------------------------------------------------------------
|
||||
:: Verifier que l'installation a ete faite
|
||||
:: ---------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user