QA反馈模块提供了完整的用户反馈管理功能,支持用户对问答结果进行点赞/点踩反馈,并将反馈数据转化为训练数据。本模块包含6个主要API端点,支持反馈记录的创建、查询、修改、删除以及训练数据集成。
http://localhost:8084/api/v0/qa_feedback/| API端点 | 方法 | 功能描述 | 
|---|---|---|
| /api/v0/qa_feedback/query | POST | 查询反馈记录(支持分页、筛选、排序) | 
| /api/v0/qa_feedback/delete/{feedback_id} | DELETE | 删除指定反馈记录 | 
| /api/v0/qa_feedback/update/{feedback_id} | PUT | 修改指定反馈记录 | 
| /api/v0/qa_feedback/add_to_training | POST | 核心功能:批量添加到训练集 | 
| /api/v0/qa_feedback/add | POST | 创建新的反馈记录 | 
| /api/v0/qa_feedback/stats | GET | 获取反馈统计信息 | 
端点: POST /api/v0/qa_feedback/query
功能: 查询反馈记录,支持分页、筛选和排序功能,主要用于审核页面展示反馈数据。
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 
|---|---|---|---|---|
| page | int | 否 | 1 | 页码(从1开始) | 
| page_size | int | 否 | 20 | 每页记录数(范围:1-100) | 
| is_thumb_up | boolean | 否 | null | 筛选点赞状态(true=点赞,false=点踩) | 
| create_time_start | string | 否 | null | 创建时间开始(格式:YYYY-MM-DD) | 
| create_time_end | string | 否 | null | 创建时间结束(格式:YYYY-MM-DD) | 
| is_in_training_data | boolean | 否 | null | 是否已加入训练数据 | 
| sort_by | string | 否 | "create_time" | 排序字段(id/create_time/update_time/user_id) | 
| sort_order | string | 否 | "desc" | 排序方向(asc/desc) | 
基础查询:
{
  "page": 1,
  "page_size": 10
}
完整筛选查询:
{
  "page": 1,
  "page_size": 20,
  "is_thumb_up": true,
  "create_time_start": "2024-01-01",
  "create_time_end": "2024-12-31",
  "is_in_training_data": false,
  "sort_by": "create_time",
  "sort_order": "desc"
}
查询未训练的负向反馈:
{
  "is_thumb_up": false,
  "is_in_training_data": false,
  "sort_by": "create_time",
  "sort_order": "asc"
}
{
    "code": 200,
    "data": {
        "pagination": {
            "has_next": false,
            "has_prev": false,
            "page": 1,
            "page_size": 5,
            "total": 4,
            "total_pages": 1
        },
        "records": [
            {
                "create_time": "2024-01-18T11:40:00",
                "id": 8,
                "is_in_training_data": false,
                "is_thumb_up": true,
                "question": "按月统计订单趋势",
                "sql": "SELECT DATE_TRUNC('month', create_time) as month, COUNT(*) as order_count FROM orders GROUP BY month ORDER BY month;",
                "update_time": null,
                "user_id": "user007"
            },
            {
                "create_time": "2024-01-17T13:25:00",
                "id": 7,
                "is_in_training_data": false,
                "is_thumb_up": true,
                "question": "查询用户余额",
                "sql": "SELECT user_id, account_balance FROM user_accounts WHERE user_id = '12345';",
                "update_time": null,
                "user_id": "user006"
            },
            {
                "create_time": "2024-01-16T16:30:00",
                "id": 5,
                "is_in_training_data": false,
                "is_thumb_up": true,
                "question": "查询今日新增用户",
                "sql": "SELECT COUNT(*) as new_users FROM users WHERE DATE(create_time) = CURRENT_DATE;",
                "update_time": null,
                "user_id": "user005"
            },
            {
                "create_time": "2024-01-16T09:45:00",
                "id": 4,
                "is_in_training_data": false,
                "is_thumb_up": true,
                "question": "按服务区统计营收",
                "sql": "SELECT service_name, SUM(pay_sum) as total_revenue FROM bss_business_day_data WHERE delete_ts IS NULL GROUP BY service_name ORDER BY total_revenue DESC;",
                "update_time": null,
                "user_id": "user004"
            }
        ],
        "response": "查询成功,共找到 4 条记录"
    },
    "message": "操作成功",
    "success": true
}
端点: DELETE /api/v0/qa_feedback/delete/{feedback_id}
功能: 根据记录ID删除指定的反馈记录。
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| feedback_id | int | 是 | 反馈记录的ID | 
DELETE /api/v0/qa_feedback/delete/123
{
  "code": 200,
  "success": true,
  "message": "操作成功",
  "data": {
    "response": "反馈记录删除成功",
    "deleted_id": 123
  }
}
{
  "code": 404,
  "success": false,
  "message": "资源未找到",
  "data": {
    "response": "反馈记录不存在 (ID: 123)",
    "timestamp": "2024-06-24T10:30:00"
  }
}
端点: PUT /api/v0/qa_feedback/update/{feedback_id}
功能: 修改指定反馈记录的内容。
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| feedback_id | int | 是 | 反馈记录的ID | 
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| question | string | 否 | 问题内容 | 
| sql | string | 否 | SQL内容 | 
| is_thumb_up | boolean | 否 | 是否点赞 | 
| user_id | string | 否 | 用户ID | 
| is_in_training_data | boolean | 否 | 是否已加入训练数据 | 
修改问题和SQL:
{
  "question": "查询活跃用户信息",
  "sql": "SELECT * FROM users WHERE status = 'active'"
}
修改反馈状态:
{
  "is_thumb_up": false,
  "is_in_training_data": true
}
{
  "code": 200,
  "success": true,
  "message": "操作成功",
  "data": {
    "response": "反馈记录更新成功",
    "updated_id": 123,
    "updated_fields": ["question", "sql"]
  }
}
端点: POST /api/v0/qa_feedback/add_to_training
功能: 核心功能,将反馈记录批量添加到训练数据集。支持混合处理:正向反馈(点赞)加入SQL训练集,负向反馈(点踩)加入错误SQL训练集。
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| feedback_ids | array[int] | 是 | 反馈记录ID列表 | 
批量添加训练数据:
{
  "feedback_ids": [17]
}
{
    "code": 200,
    "data": {
        "response": "训练数据添加完成,成功处理 1 条记录",
        "successfully_trained_ids": [
            17
        ],
        "summary": {
            "already_trained": 0,
            "errors": 0,
            "negative_trained": 1,
            "positive_trained": 0,
            "total_processed": 1,
            "total_requested": 1
        },
        "training_details": {
            "error_sql_training_count": 1,
            "sql_training_count": 0
        }
    },
    "message": "操作成功",
    "success": true
}
is_thumb_up=true) → 调用 vn.train(question, sql)is_thumb_up=false) → 调用 vn.train_error_sql(question, sql)is_in_training_data=true端点: POST /api/v0/qa_feedback/add
功能: 创建新的反馈记录,通常由前端在用户点赞/点踩时调用。
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 
|---|---|---|---|---|
| question | string | 是 | - | 用户问题 | 
| sql | string | 是 | - | 生成的SQL | 
| is_thumb_up | boolean | 是 | - | 是否点赞 | 
| user_id | string | 否 | "guest" | 用户ID | 
用户点赞示例:
{
  "question": "查询所有部门信息",
  "sql": "SELECT * FROM departments",
  "is_thumb_up": true,
  "user_id": "user123"
}
用户点踩示例:
{
  "question": "统计每个部门的员工数量",
  "sql": "SELECT department, COUNT(*) FROM employees",
  "is_thumb_up": false,
  "user_id": "user456"
}
{
    "code": 200,
    "data": {
        "feedback_id": 18,
        "response": "反馈记录创建成功"
    },
    "message": "操作成功",
    "success": true
}
端点: GET /api/v0/qa_feedback/stats
功能: 获取反馈数据的统计信息,用于监控面板和数据分析。
GET /api/v0/qa_feedback/stats
{
    "code": 200,
    "data": {
        "response": "统计信息获取成功",
        "total_feedback": 18,
        "positive_feedback": 8,
        "negative_feedback": 10,
        "trained_feedback": 5,
        "untrained_feedback": 13,
        "positive_rate": 44.44,
        "training_rate": 27.78
    },
    "message": "操作成功",
    "success": true
}
| 字段名 | 说明 | 
|---|---|
| total_feedback | 总反馈数 | 
| positive_feedback | 正向反馈数(点赞) | 
| negative_feedback | 负向反馈数(点踩) | 
| trained_feedback | 已训练反馈数 | 
| untrained_feedback | 未训练反馈数 | 
| positive_rate | 正向反馈率(%) | 
| training_rate | 训练覆盖率(%) | 
用户反馈阶段
POST /api/v0/qa_feedback/add
{
 "question": "查询用户订单",
 "sql": "SELECT * FROM orders WHERE user_id = 123",
 "is_thumb_up": true,
 "user_id": "user123"
}
json
POST /api/v0/qa_feedback/query
{
"is_in_training_data": false,
"page": 1,
"page_size": 50
}
批量训练阶段
POST /api/v0/qa_feedback/add_to_training
{
 "feedback_ids": [1, 2, 3, 4, 5]
}
GET /api/v0/qa_feedback/stats
---
## ⚠️ 错误处理
### 常见错误响应
**400 - 请求参数错误**
```json
{
  "code": 400,
  "success": false,
  "message": "请求参数错误",
  "data": {
    "response": "缺少必需参数:question",
    "missing_params": ["question"],
    "error_type": "missing_required_params",
    "timestamp": "2024-06-24T10:30:00"
  }
}
404 - 资源未找到
{
  "code": 404,
  "success": false,
  "message": "资源未找到",
  "data": {
    "response": "反馈记录不存在 (ID: 999)",
    "error_type": "resource_not_found",
    "timestamp": "2024-06-24T10:30:00"
  }
}
500 - 系统内部错误
{
  "code": 500,
  "success": false,
  "message": "系统内部错误",
  "data": {
    "response": "查询反馈记录失败,请稍后重试",
    "error_type": "database_error",
    "can_retry": true,
    "timestamp": "2024-06-24T10:30:00"
  }
}
{
  "base_url": "http://localhost:8084",
  "api_prefix": "/api/v0/qa_feedback"
}
qa_feedback 表page_size 最大值为100,避免单次返回过多数据QA反馈模块提供了完整的反馈数据生命周期管理,从用户反馈收集到训练数据集成,支持高效的数据处理和智能的训练优化。通过合理使用这些API,可以构建强大的用户反馈系统,持续改进AI模型的表现。