From c93805e159db72617fabc038c6e695608a69d621 Mon Sep 17 00:00:00 2001 From: martsforever Date: Wed, 24 Sep 2025 16:38:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=89=E4=B8=AA=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/add_api_route.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/app/controller/add_api_route.py b/app/controller/add_api_route.py index 08e0686..044af50 100644 --- a/app/controller/add_api_route.py +++ b/app/controller/add_api_route.py @@ -1,6 +1,13 @@ +import json + +from app.tools.tool_project_analysis import tool_project_analysis from fastapi import FastAPI +from fastapi import Query from starlette.requests import Request +from app.tools.tool_project_report import tool_project_report +from app.tools.tool_retrieve_documents import tool_retrieve_documents + def add_api_route(app: FastAPI): # 用于dify自定义插件授权认证接口 @@ -10,3 +17,29 @@ def add_api_route(app: FastAPI): ): print("request.state", request.state) return request.state.user + + # 项目成本分析报告 + @app.get('/api/project/analysis') + async def project_analysis(project_name=Query(..., description="项目名称")): + tool_result_string = await tool_project_analysis.ainvoke({"project_name": project_name}) + tool_result_data = json.loads(tool_result_string) + return tool_result_data[0] + + # 项目日报总结 + @app.get('/api/project/report') + async def project_analysis( + project_name=Query(..., description="项目名称"), + start_time=Query(default=None, description="开始时间(可选参数)格式为YYYY-MM-DD"), + end_time=Query(default=None, description="结束时间(可选参数)格式为YYYY-MM-DD"), + ): + tool_result_string = await tool_project_report.ainvoke({ + "project_name": project_name, + "start_time": start_time, + "end_time": end_time, + }) + return json.loads(tool_result_string) + + # 检索企业内部文档工具 + @app.get('/api/document/retrieve') + async def document_retrieve(question=Query(..., description="用户的问题")): + return await tool_retrieve_documents.ainvoke({"question": question})