models.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # -*- coding: utf-8 -*-
  2. """
  3. Datenklassen fuer Activity-Log-Eintraege.
  4. Jede Klasse entspricht einer JSON-Datei in data/activity/.
  5. """
  6. from __future__ import annotations
  7. from dataclasses import dataclass, field
  8. from typing import Any
  9. @dataclass
  10. class SatelliteConnectionEntry:
  11. """Eintrag fuer eine Satellite-Verbindung."""
  12. satellite_id: str = ""
  13. alias: str = ""
  14. room: str = ""
  15. connected_at: str = ""
  16. disconnected_at: str = ""
  17. ip_address: str = ""
  18. @dataclass
  19. class ConfigConnectionEntry:
  20. """Eintrag fuer eine Config-Tool-Verbindung."""
  21. peer_address: str = ""
  22. connected_at: str = ""
  23. disconnected_at: str = ""
  24. @dataclass
  25. class TrainingRunEntry:
  26. """Eintrag fuer einen Trainings-Lauf."""
  27. trainer_id: str = ""
  28. model_name: str = ""
  29. started_at: str = ""
  30. completed_at: str = ""
  31. duration_seconds: float = 0.0
  32. success: bool = False
  33. error: str = ""
  34. @dataclass
  35. class IntentLogEntry:
  36. """Eintrag fuer einen verarbeiteten Intent."""
  37. timestamp: str = ""
  38. intent: str = ""
  39. plugin: str = ""
  40. satellite_id: str = ""
  41. room_id: str = ""
  42. original_text: str = ""
  43. success: bool = True
  44. @dataclass
  45. class ErrorLogEntry:
  46. """Eintrag fuer einen Fehler."""
  47. timestamp: str = ""
  48. source: str = ""
  49. message: str = ""
  50. satellite_id: str = ""
  51. @dataclass
  52. class ConversationEntry:
  53. """Eintrag fuer eine Conversation-Session."""
  54. session_id: str = ""
  55. satellite_id: str = ""
  56. room_id: str = ""
  57. wakeword_type: str = ""
  58. started_at: str = ""
  59. completed_at: str = ""
  60. turns: list[dict[str, Any]] = field(default_factory=list)