Initial commit
This commit is contained in:
122
geniusia2/gui/models.py
Normal file
122
geniusia2/gui/models.py
Normal file
@@ -0,0 +1,122 @@
|
||||
"""
|
||||
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!")
|
||||
Reference in New Issue
Block a user