Initial commit
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# 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()
|
||||
Reference in New Issue
Block a user