"""历史记录 API — /api/history""" from fastapi import APIRouter, Request, HTTPException, Query from app.services import history as hist_service router = APIRouter() @router.get("/history/search") async def list_search_history( request: Request, page: int = Query(1, ge=1), page_size: int = Query(20, ge=1, le=100), ): """获取检索历史列表(分页,最新在前)""" trace_id = getattr(request.state, "trace_id", "") data = hist_service.get_search_history(page, page_size) return {"code": 0, "message": "ok", "data": data, "trace_id": trace_id} @router.get("/history/chat") async def list_chat_history( request: Request, page: int = Query(1, ge=1), page_size: int = Query(20, ge=1, le=100), ): """获取对话历史列表(分页,最新在前)""" trace_id = getattr(request.state, "trace_id", "") data = hist_service.get_chat_history(page, page_size) return {"code": 0, "message": "ok", "data": data, "trace_id": trace_id} @router.get("/history/chat/{chat_id}") async def get_chat_detail(chat_id: int, request: Request): """获取单条对话历史详情""" trace_id = getattr(request.state, "trace_id", "") detail = hist_service.get_chat_detail(chat_id) if not detail: raise HTTPException(status_code=404, detail="对话记录不存在") return {"code": 0, "message": "ok", "data": detail, "trace_id": trace_id} @router.delete("/history/search/{history_id}") async def delete_search_history(history_id: int, request: Request): """删除单条检索历史""" trace_id = getattr(request.state, "trace_id", "") if hist_service.delete_search_history(history_id): return {"code": 0, "message": "ok", "trace_id": trace_id} raise HTTPException(status_code=500, detail="删除失败") @router.delete("/history/chat/{history_id}") async def delete_chat_history(history_id: int, request: Request): """删除单条对话历史""" trace_id = getattr(request.state, "trace_id", "") if hist_service.delete_chat_history(history_id): return {"code": 0, "message": "ok", "trace_id": trace_id} raise HTTPException(status_code=500, detail="删除失败") @router.delete("/history/search") async def clear_search_history(request: Request): """清空全部检索历史""" trace_id = getattr(request.state, "trace_id", "") if hist_service.clear_search_history(): return {"code": 0, "message": "ok", "trace_id": trace_id} raise HTTPException(status_code=500, detail="清空失败") @router.delete("/history/chat") async def clear_chat_history(request: Request): """清空全部对话历史""" trace_id = getattr(request.state, "trace_id", "") if hist_service.clear_chat_history(): return {"code": 0, "message": "ok", "trace_id": trace_id} raise HTTPException(status_code=500, detail="清空失败")