Files
Geniusia_v2/geniusia2/gui/models.py
2026-03-05 00:20:25 +01:00

123 lines
3.9 KiB
Python

"""
Modèles de données pour la GUI
Définit les structures de données utilisées par l'interface
"""
from dataclasses import dataclass
from datetime import datetime
from typing import Optional
@dataclass
class GUIState:
"""
État de la GUI.
Attributes:
mode: Mode actuel ('shadow', 'assist', 'copilot', 'auto')
is_running: Indique si le système est en cours d'exécution
actions_count: Nombre d'actions observées
patterns_count: Nombre de patterns détectés
workflows_count: Nombre de workflows appris
finetuning_status: Statut du fine-tuning (None, 'collecting', 'training', 'completed')
finetuning_progress: Progression du fine-tuning (0-100 ou None)
"""
mode: str = "shadow"
is_running: bool = False
actions_count: int = 0
patterns_count: int = 0
workflows_count: int = 0
finetuning_status: Optional[str] = None
finetuning_progress: Optional[int] = None
def to_dict(self) -> dict:
"""
Convertit l'état en dictionnaire.
Returns:
Dictionnaire représentant l'état
"""
return {
'mode': self.mode,
'is_running': self.is_running,
'actions_count': self.actions_count,
'patterns_count': self.patterns_count,
'workflows_count': self.workflows_count,
'finetuning_status': self.finetuning_status,
'finetuning_progress': self.finetuning_progress
}
@classmethod
def from_dict(cls, data: dict) -> 'GUIState':
"""
Crée un GUIState à partir d'un dictionnaire.
Args:
data: Dictionnaire contenant les données
Returns:
Instance de GUIState
"""
return cls(
mode=data.get('mode', 'shadow'),
is_running=data.get('is_running', False),
actions_count=data.get('actions_count', 0),
patterns_count=data.get('patterns_count', 0),
workflows_count=data.get('workflows_count', 0),
finetuning_status=data.get('finetuning_status'),
finetuning_progress=data.get('finetuning_progress')
)
if __name__ == "__main__":
"""Tests des modèles de données"""
print("Test des modèles de données")
print("=" * 50)
# Test 1: Création d'un GUIState par défaut
print("\n1. Test GUIState par défaut:")
state = GUIState()
print(f" Mode: {state.mode}")
print(f" Running: {state.is_running}")
print(f" Actions: {state.actions_count}")
# Test 2: Création avec paramètres
print("\n2. Test GUIState avec paramètres:")
state2 = GUIState(
mode="assist",
is_running=True,
actions_count=12,
patterns_count=2,
workflows_count=1,
finetuning_status="collecting",
finetuning_progress=50
)
print(f" Mode: {state2.mode}")
print(f" Running: {state2.is_running}")
print(f" Actions: {state2.actions_count}")
print(f" Patterns: {state2.patterns_count}")
print(f" Workflows: {state2.workflows_count}")
print(f" Fine-tuning: {state2.finetuning_status} ({state2.finetuning_progress}%)")
# Test 3: Conversion en dictionnaire
print("\n3. Test to_dict:")
data = state2.to_dict()
print(f" {data}")
# Test 4: Création depuis dictionnaire
print("\n4. Test from_dict:")
state3 = GUIState.from_dict(data)
print(f" Mode: {state3.mode}")
print(f" Actions: {state3.actions_count}")
# Test 5: Modification de l'état
print("\n5. Test modification:")
state.mode = "auto"
state.is_running = True
state.actions_count = 25
print(f" Mode: {state.mode}")
print(f" Running: {state.is_running}")
print(f" Actions: {state.actions_count}")
print("\n✅ Tous les tests passent!")