session_routes.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # -*- coding: utf-8 -*-
  2. """
  3. 会话管理接口 —— 聊天历史查询、会话列表、删除会话
  4. """
  5. from fastapi import APIRouter
  6. from db.chat_store import get_messages, get_sessions, delete_session
  7. router = APIRouter()
  8. @router.get("/chat/history/{session_id}")
  9. async def get_chat_history(session_id: str, limit: int = 100, offset: int = 0):
  10. """查询指定会话的聊天历史
  11. Args:
  12. session_id: 会话ID
  13. limit: 返回条数上限,默认100
  14. offset: 偏移量,默认0
  15. Returns:
  16. { "session_id": "...", "messages": [...], "total": N }
  17. """
  18. messages = get_messages(session_id, limit=limit, offset=offset)
  19. # 计算总数
  20. all_msgs = get_messages(session_id, limit=10000)
  21. total = len(all_msgs)
  22. return {
  23. "session_id": session_id,
  24. "messages": messages,
  25. "total": total,
  26. }
  27. @router.get("/sessions")
  28. async def list_sessions(limit: int = 20, offset: int = 0):
  29. """查询会话列表
  30. Returns:
  31. [{ "session_id": "...", "title": "...", "message_count": N, ... }, ...]
  32. """
  33. sessions = get_sessions(limit=limit, offset=offset)
  34. return {"sessions": sessions, "total": len(sessions)}
  35. @router.delete("/sessions/{session_id}")
  36. async def remove_session(session_id: str):
  37. """删除指定会话及其所有消息"""
  38. delete_session(session_id)
  39. return {"status": "ok", "message": f"会话 {session_id} 已删除"}