Initial commit
This commit is contained in:
94
user_config.py
Normal file
94
user_config.py
Normal file
@@ -0,0 +1,94 @@
|
||||
# user_config.py
|
||||
"""
|
||||
Gestion du fichier de configuration utilisateur pour agent_v0.
|
||||
|
||||
Format : JSON (agent_config.json) à la racine du projet.
|
||||
|
||||
Exemple de config générée par défaut :
|
||||
{
|
||||
"user_id": "demo_user",
|
||||
"user_label": "Démo agent_v0",
|
||||
"customer": "Clinique Demo",
|
||||
"training_label": "Facturation_T2A_demo",
|
||||
"notes": "Session réelle avec clics + screenshots + key combos.",
|
||||
"mode": "enriched",
|
||||
"screenshot_mode": "crop",
|
||||
"screenshot_crop_width": 900,
|
||||
"screenshot_crop_height": 700,
|
||||
"capture_hover": true,
|
||||
"hover_min_idle_ms": 700,
|
||||
"capture_scroll": true,
|
||||
"network_save_path": ""
|
||||
}
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from copy import deepcopy
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict
|
||||
|
||||
from config import BASE_DIR
|
||||
|
||||
CONFIG_FILENAME = "agent_config.json"
|
||||
CONFIG_PATH = BASE_DIR / CONFIG_FILENAME
|
||||
|
||||
DEFAULT_CONFIG: Dict[str, Any] = {
|
||||
"user_id": "demo_user",
|
||||
"user_label": "Démo agent_v0",
|
||||
"customer": "Clinique Demo",
|
||||
"training_label": "Facturation_T2A_demo",
|
||||
"notes": "Session réelle avec clics + screenshots + key combos.",
|
||||
|
||||
# Mode logique de capture : "light" | "enriched" | "complete"
|
||||
"mode": "enriched",
|
||||
|
||||
# Screenshot : "full" ou "crop"
|
||||
"screenshot_mode": "crop",
|
||||
"screenshot_crop_width": 900,
|
||||
"screenshot_crop_height": 700,
|
||||
|
||||
# Infobulles (hover)
|
||||
"capture_hover": True,
|
||||
"hover_min_idle_ms": 700,
|
||||
|
||||
# Molette / scroll
|
||||
"capture_scroll": True,
|
||||
|
||||
# Chemin réseau où recopier les sessions (JSON + ZIP)
|
||||
# Exemple : "/mnt/rpa_sessions"
|
||||
"network_save_path": "",
|
||||
}
|
||||
|
||||
|
||||
def load_user_config(path: Path | None = None) -> Dict[str, Any]:
|
||||
"""
|
||||
Charge la configuration utilisateur depuis agent_config.json.
|
||||
- Si le fichier n'existe pas, on le crée avec DEFAULT_CONFIG.
|
||||
- Si le fichier existe, on fait un merge avec DEFAULT_CONFIG
|
||||
(les champs manquants prennent la valeur par défaut).
|
||||
"""
|
||||
cfg_path = path or CONFIG_PATH
|
||||
|
||||
config = deepcopy(DEFAULT_CONFIG)
|
||||
|
||||
if cfg_path.exists():
|
||||
try:
|
||||
with cfg_path.open("r", encoding="utf-8") as f:
|
||||
data = json.load(f)
|
||||
if isinstance(data, dict):
|
||||
config.update(data)
|
||||
except Exception as e:
|
||||
# En cas de problème de parse, on garde les defaults
|
||||
print(f"[agent_v0] Erreur de lecture de {cfg_path}, utilisation des valeurs par défaut : {e}")
|
||||
else:
|
||||
# Créer le fichier de config par défaut
|
||||
try:
|
||||
with cfg_path.open("w", encoding="utf-8") as f:
|
||||
json.dump(config, f, ensure_ascii=False, indent=2)
|
||||
print(f"[agent_v0] Fichier de config créé : {cfg_path}")
|
||||
except Exception as e:
|
||||
print(f"[agent_v0] Impossible d'écrire {cfg_path} : {e}")
|
||||
|
||||
return config
|
||||
Reference in New Issue
Block a user