需求: 请检查我在知识库的代码,我希望在citu_app.py添加一组API,实现下面的功能: 1.我会在app_db中创建一个表: 这个表用来存储用户给question和sql点赞的场景: CREATE TABLE qa_feedback ( id SERIAL PRIMARY KEY, -- 主键,自增 question TEXT NOT NULL, -- 问题内容 sql TEXT NOT NULL, -- 生成的SQL is_thumb_up BOOLEAN NOT NULL, -- 是否点赞(true=点赞,false=点踩) user_id VARCHAR(64) NOT NULL, -- 用户ID create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 创建时间 is_in_training_data BOOLEAN DEFAULT FALSE, -- 是否已加入数据集 update_time TIMESTAMP -- 更新时间 ); 2.围绕着表和添加训练数据集的功能,添加下面的API: a.) 查询API(包括分页和排序),在审核页面中,可以列出当前所有点赞的数据,我需要一个Post API,可以对点赞数据执行查询和分页,以及排序。
包括 is_thumb_up,create_time 时间范围,is_in_training_data等等。 b.) 删除API,选定某个id,点击删除。 c.) 添加到训练数据集的API,只需要question:sql 两个字段,但是需要知道是正向,还是负向。 d.) 修改API,允许修改后提交,一个API,update某条记录。 请先理解我上面的需求,阅读citu_app.py,以及与它相关的代码,然后,再进行设计工作,在在进行设计时请注意:访问数据库,以及写入训练集数据,应该都有现成的function,你要尽量复用这些方法。另外写入数据集时,有两种数据,点赞的是写入SQL,点负面的是写入到error_sql. 请先不要写代码,先理解需求,了解限制,进行设计,然后与我讨论设计。
项目根目录/
├── common/
│   ├── qa_feedback_manager.py          # 新增:反馈数据管理器
│   └── ...其他common模块
├── citu_app.py                         # 修改:添加API端点
└── app_config.py                       # 无需修改(已有APP_DB_CONFIG)
1. 尝试获取vanna实例 ✓
   ├─ 成功:复用vanna.engine
   └─ 失败:创建独立连接池
2. 测试连接有效性 ✓
3. 自动创建qa_feedback表 ✓
将 qa_feedback_manager.py 放在 common/ 目录下。
# 在现有import后添加
from common.qa_feedback_manager import QAFeedbackManager
from common.result import success_response, bad_request_response, not_found_response, internal_error_response
# 全局反馈管理器实例
qa_feedback_manager = None
def get_qa_feedback_manager():
    """获取QA反馈管理器实例(懒加载)- 复用Vanna连接版本"""
    global qa_feedback_manager
    if qa_feedback_manager is None:
        try:
            # 优先尝试复用vanna连接
            vanna_instance = None
            try:
                # 尝试获取现有的vanna实例
                if 'get_citu_langraph_agent' in globals():
                    agent = get_citu_langraph_agent()
                    if hasattr(agent, 'vn'):
                        vanna_instance = agent.vn
                elif 'vn' in globals():
                    vanna_instance = vn
                else:
                    print("[INFO] 未找到可用的vanna实例,将创建新的数据库连接")
            except Exception as e:
                print(f"[INFO] 获取vanna实例失败: {e},将创建新的数据库连接")
                vanna_instance = None
            
            qa_feedback_manager = QAFeedbackManager(vanna_instance=vanna_instance)
            print("[CITU_APP] QA反馈管理器实例创建成功")
        except Exception as e:
            print(f"[CRITICAL] QA反馈管理器创建失败: {str(e)}")
            raise Exception(f"QA反馈管理器初始化失败: {str(e)}")
    return qa_feedback_manager
将完整集成示例中的所有6个API函数复制到 citu_app.py 文件末尾。
| API端点 | 方法 | 功能 | 
|---|---|---|
| /api/v0/qa_feedback/query | POST | 查询反馈记录(分页、筛选、排序) | 
| /api/v0/qa_feedback/delete/{id} | DELETE | 删除反馈记录 | 
| /api/v0/qa_feedback/update/{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/add_to_training
Content-Type: application/json
{
  "feedback_ids": [1, 2, 3, 4, 5]
}
自动分类处理:
is_thumb_up=true → vn.train(question, sql) (正向训练)is_thumb_up=false → vn.train_error_sql(question, sql) (负向训练)连接复用日志:
[QAFeedbackManager] 复用Vanna数据库连接
[QAFeedbackManager] qa_feedback表检查/创建成功
测试API: ```bash
# 应返回: {
 "success": true,
 "data": {
   "total_feedback": 0,
   "positive_feedback": 0,
   "negative_feedback": 0,
   ...
 }
} ```
恭喜!现在你的QA反馈系统已经完成集成,可以开始使用了!🎉