from models.ChatRequest import ChatRequest from models.ChatWithReportRequest import ChatWithReportRequest from models.BaseResponse import BaseResponse import uuid import db.postgres as pg import db.sqlserver as sqlserver import uuid import threading from fastapi import APIRouter, Depends from uuid import UUID from config.security import get_user_id_from_token reportDataRouter = APIRouter() from llm.chatLLM import get_chat_response from llm.titleChain import get_title from llm.sqlLLM import get_sql_description_response, get_chat_sql_response, get_chat_sql_improve_response from models.SaveReportRequest import SaveReportRequest from models.ReportTableAddRequest import ReportTableAddRequest from models.ReportFieldAddRequest import ReportFieldAddRequest # 获取表格列表 @reportDataRouter.get("/tableList") def tableList(user_id: UUID = Depends(get_user_id_from_token)): if not user_id: return {"error": "userId is required"} return BaseResponse(data=pg.get_available_tables()) # 获取字段列表 @reportDataRouter.get("/fieldList") def fieldList(tableId: str, user_id: UUID = Depends(get_user_id_from_token)): if not user_id: return {"error": "userId is required"} if not tableId: return {"error": "tableId is required"} return BaseResponse(data=pg.get_fields_by_table_id(tableId)) # 新增表 @reportDataRouter.post("/addTable") def addTable(data: ReportTableAddRequest, user_id: UUID = Depends(get_user_id_from_token)): if not user_id: return {"error": "userId is required"} return BaseResponse(data=pg.add_table(data.name, data.description, user_id)) # 新增字段 @reportDataRouter.post("/addField") def addField(data: ReportFieldAddRequest, user_id: UUID = Depends(get_user_id_from_token)): if not user_id: return {"error": "userId is required"} return BaseResponse( data=pg.add_field(data.name, data.type, data.description, data.is_active, data.table_id, user_id))