Files
my_speaker_RPi3/app/core/history.py
T

41 lines
1.7 KiB
Python

# app/core/history.py
from datetime import datetime
from typing import List, Dict, Any
from pydantic import BaseModel
from app.core.config import get_settings
import collections
class RecognizedPhrase(BaseModel):
text: str
timestamp: str
action: str = None
# Хранилище распознанных фраз (в реальном приложении лучше использовать базу данных)
recognition_history: collections.deque = collections.deque(maxlen=100)
def add_recognized_phrase(text: str, action: str = None) -> None:
"""Добавление распознанной фразы в историю"""
global recognition_history
# Обновляем максимальный размер истории из настроек
settings = get_settings()
recognition_history = collections.deque(list(recognition_history),
maxlen=settings.system.history_maxlen)
# Добавляем только фразы с действиями (команды)
if action is not None:
phrase = RecognizedPhrase(
text=text,
timestamp=datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
action=action
)
recognition_history.append(phrase)
def get_recognition_history(limit: int = 10) -> List[RecognizedPhrase]:
"""Получение истории распознанных фраз"""
# Возвращаем последние N фраз (самые новые в начале списка)
return list(reversed(list(recognition_history)))[:limit]
def clear_recognition_history() -> None:
"""Очистка истории распознанных фраз"""
recognition_history.clear()