41 lines
1.7 KiB
Python
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() |