# 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()