feat: Stats. Closes #6

This commit is contained in:
Artem Kokos
2026-03-28 23:06:40 +07:00
parent c793b73fa2
commit 732313a61c
5 changed files with 303 additions and 12 deletions

26
app/models/event_log.py Normal file
View File

@@ -0,0 +1,26 @@
from datetime import datetime
from sqlalchemy import String, Integer, DateTime, JSON
from sqlalchemy.orm import Mapped, mapped_column
from app.core.database import Base
class EventLog(Base):
"""Лог событий управления лампами."""
__tablename__ = "event_log"
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
timestamp: Mapped[str] = mapped_column(
String, default=lambda: datetime.now().isoformat()
)
key_name: Mapped[str] = mapped_column(
String, default="unknown"
) # кто: "master", "vasya", ...
action: Mapped[str] = mapped_column(
String
) # "control", "toggle_on", "toggle_off", "scene", ...
target_type: Mapped[str] = mapped_column(
String, default="group"
) # "group" или "device"
target_id: Mapped[str] = mapped_column(String) # id группы или устройства
params: Mapped[str] = mapped_column(String, nullable=True) # JSON строка параметров