""" =============================================================================== FILE: modules/web_api/routers/context.py ROLE: REST API мониторинга состояния сессии и очистки памяти диалога. =============================================================================== """ from fastapi import APIRouter, Depends from pydantic import BaseModel from typing import Optional from routers.auth import get_current_user from modules.web_api.llm.db.db_prompts import db_get_session_state, db_clear_session_state from modules.web_api.llm.db.db_chat import db_get_chat_history, db_purge_ephemeral_messages, db_clear_chat_history router = APIRouter(prefix="/api/v1/context", tags=["Context"]) class SessionActionRequest(BaseModel): session_id: Optional[str] = "web_session_main" @router.get("/state") def api_get_context_state(session_id: str = "web_session_main", current_user = Depends(get_current_user)): state = db_get_session_state(session_id) or {} history = db_get_chat_history(session_id, limit=50) ephemeral_count = sum(1 for m in history if dict(m).get("is_ephemeral") == 1) total_messages = len(history) return { "session_id": session_id, "active_state": state.get("state_type", "IDLE"), "state_data": state.get("data_json", {}), "total_messages": total_messages, "ephemeral_messages": ephemeral_count } @router.post("/purge-ephemeral") def api_purge_ephemeral(req: SessionActionRequest, current_user = Depends(get_current_user)): purged = db_purge_ephemeral_messages(req.session_id) return {"status": "success", "purged_count": purged} @router.post("/clear-all") def api_clear_all_context(req: SessionActionRequest, current_user = Depends(get_current_user)): db_clear_session_state(req.session_id) db_clear_chat_history(req.session_id) return {"status": "success", "message": "Контекст сессии полностью очищен"}