| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import json
- from datetime import datetime
- from dotenv import load_dotenv
- load_dotenv()
- from fastapi import APIRouter, FastAPI
- from fastapi.responses import JSONResponse
- from .schemas.questionnaire import GenerateRequest, GenerateResponse
- from .graphs.questionnaire import get_questionnaire_graph
- router = APIRouter(prefix="/api/v1", tags=["questionnaire"])
- @router.post("/questionnaire/generate")
- async def generate_questionnaire(req: GenerateRequest):
- graph = get_questionnaire_graph()
- try:
- result = graph.invoke({
- "request": req,
- "raw_response": "",
- "questionnaire": None,
- "error": None,
- })
- if result.get("error"):
- return JSONResponse(
- status_code=500,
- content={"error": result["error"]}
- )
- version = datetime.now().strftime("%Y%m%d%H%M%S")
- return GenerateResponse(
- questionnaire_json=json.dumps(result["questionnaire"], ensure_ascii=False),
- version=version,
- )
- except Exception as e:
- return JSONResponse(
- status_code=500,
- content={"error": f"graph 执行失败: {str(e)}"}
- )
- app = FastAPI(title="CFC LangGraph 问卷生成服务")
- app.include_router(router)
- @app.get("/health")
- def health():
- return {"status": "ok"}
|