Files
X-Financial/server/src/app/api/v1/endpoints/agent_feedback.py

48 lines
1.5 KiB
Python
Raw Normal View History

from __future__ import annotations
from typing import Annotated
from fastapi import APIRouter, Depends, Query, status
from sqlalchemy.orm import Session
from app.api.deps import get_db
from app.schemas.agent_feedback import (
AgentFeedbackCreate,
AgentFeedbackRead,
AgentFeedbackSummaryRead,
)
from app.services.agent_feedback import AgentFeedbackService
router = APIRouter(prefix="/agent-feedback")
DbSession = Annotated[Session, Depends(get_db)]
@router.post(
"",
response_model=AgentFeedbackRead,
status_code=status.HTTP_201_CREATED,
summary="记录 Agent 操作评价",
description="记录用户对一次智能体处理结果的 1-5 星评价和低分原因。",
)
def create_agent_feedback(payload: AgentFeedbackCreate, db: DbSession) -> AgentFeedbackRead:
return AgentFeedbackService(db).create_feedback(payload)
@router.get(
"/summary",
response_model=AgentFeedbackSummaryRead,
summary="查询 Agent 操作评价统计",
description="按最近反馈记录汇总评分分布、低分数量和低分原因。",
)
def summarize_agent_feedback(
db: DbSession,
agent: Annotated[str | None, Query(description="Agent 名称筛选。")] = None,
session_type: Annotated[str | None, Query(description="会话类型筛选。")] = None,
limit: Annotated[int, Query(ge=1, le=500, description="统计最近记录数。")] = 200,
) -> AgentFeedbackSummaryRead:
return AgentFeedbackService(db).summarize_feedback(
agent=agent,
session_type=session_type,
limit=limit,
)