""" 问答 API 提供预置问题列表和问题回答接口 """ from typing import List from fastapi import APIRouter, Depends, HTTPException, Body from pydantic import BaseModel from sqlalchemy.ext.asyncio import AsyncSession from app.core.database import get_db from app.core.tenant import get_current_company_id from app.services.ai.qa_service import QAService router = APIRouter(prefix="/api/qa", tags=["问答"]) class QuestionRequest(BaseModel): """问题请求""" task_id: int question: str context: str = "" class QuestionResponse(BaseModel): """问题响应""" answer: str data_points: List[str] = [] class SuggestedQuestionsResponse(BaseModel): """建议问题响应""" questions: List[str] @router.get("/suggested-questions", response_model=SuggestedQuestionsResponse) async def get_suggested_questions( task_id: int, context: str = "", db: AsyncSession = Depends(get_db), company_id: int = Depends(get_current_company_id), ) -> SuggestedQuestionsResponse: """ 获取预置问题列表 根据任务状态返回合适的预置问题 """ service = QAService(db) questions = await service.get_suggested_questions(task_id, context) return SuggestedQuestionsResponse(questions=questions) @router.post("/ask", response_model=QuestionResponse) async def ask_question( request: QuestionRequest, db: AsyncSession = Depends(get_db), company_id: int = Depends(get_current_company_id), ) -> QuestionResponse: """ 回答用户问题 基于真实数据回答预置问题 """ service = QAService(db) answer = await service.answer_preset_question(request.task_id, request.question) return QuestionResponse(answer=answer, data_points=[])