feat(web): стабилизация UI, Gemini-скроллинг, роутеры контекста/снапшотов и актуализация роадмапа
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
"""
|
||||
===============================================================================
|
||||
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": "Контекст сессии полностью очищен"}
|
||||
Reference in New Issue
Block a user