123 lines
3.9 KiB
Python
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!")
|