Add final report download button (#329)
* fix(app): 改进应用健康检查机制并更新默认配置 添加专用的健康检查路径和代理配置,重构健康检查URL构建逻辑 增加健康检查失败时的日志记录 延长应用启动等待时间至90秒 * style(templates): 统一CSS选择器缩进格式并修复空格问题 * feat(报告下载): 实现报告文件下载功能并增强任务状态管理 - 在ReportAgent中修改generate_report返回包含文件路径的字典 - 在ReportTask中添加文件路径相关字段 - 新增/download接口用于下载报告文件 - 在前端添加下载按钮及相关控制逻辑 - 完善任务状态显示,增加文件路径信息 * feat(report): 添加报告下载功能并优化状态管理 - 在ReportAgent中返回报告文件保存路径信息 - 新增Flask接口/download/<task_id>用于下载报告文件 - 在前端添加下载按钮及相关控制逻辑 - 修复报告生成状态重置问题 - 优化健康检查URL构建和代理设置 - 统一CSS样式中的空格和缩进 --------- Co-authored-by: HKLHaoBin <we3q@qq.com> Co-authored-by: Zhang Yuxiang <51037789+NTFago@users.noreply.github.com>
This commit is contained in:
+29
-6
@@ -190,10 +190,16 @@ class ReportAgent:
|
||||
save_report: 是否保存报告到文件
|
||||
|
||||
Returns:
|
||||
最终HTML报告内容
|
||||
dict: 包含HTML内容与保存文件信息
|
||||
"""
|
||||
start_time = datetime.now()
|
||||
|
||||
# 为新的查询重置状态,确保文件命名信息完整
|
||||
self.state = ReportState(query=query)
|
||||
self.state.metadata.query = query
|
||||
self.state.query = query
|
||||
self.state.mark_processing()
|
||||
|
||||
logger.info(f"开始生成报告: {query}")
|
||||
logger.info(f"输入数据 - 报告数量: {len(reports)}, 论坛日志长度: {len(forum_logs)}")
|
||||
|
||||
@@ -205,8 +211,9 @@ class ReportAgent:
|
||||
html_report = self._generate_html_report(query, reports, forum_logs, template_result)
|
||||
|
||||
# Step 3: 保存报告
|
||||
saved_files = {}
|
||||
if save_report:
|
||||
self._save_report(html_report)
|
||||
saved_files = self._save_report(html_report)
|
||||
|
||||
# 更新生成时间
|
||||
end_time = datetime.now()
|
||||
@@ -215,7 +222,10 @@ class ReportAgent:
|
||||
|
||||
logger.info(f"报告生成完成,耗时: {generation_time:.2f} 秒")
|
||||
|
||||
return html_report
|
||||
return {
|
||||
'html_content': html_report,
|
||||
**saved_files
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
logger.exception(f"报告生成过程中发生错误: {str(e)}")
|
||||
@@ -357,13 +367,26 @@ class ReportAgent:
|
||||
with open(filepath, 'w', encoding='utf-8') as f:
|
||||
f.write(html_content)
|
||||
|
||||
logger.info(f"报告已保存到: {filepath}")
|
||||
abs_report_path = os.path.abspath(filepath)
|
||||
rel_report_path = os.path.relpath(abs_report_path, os.getcwd())
|
||||
logger.info(f"报告已保存到: {abs_report_path}")
|
||||
|
||||
# 保存状态
|
||||
state_filename = f"report_state_{query_safe}_{timestamp}.json"
|
||||
state_filepath = os.path.join(self.config.OUTPUT_DIR, state_filename)
|
||||
self.state.save_to_file(state_filepath)
|
||||
logger.info(f"状态已保存到: {state_filepath}")
|
||||
abs_state_path = os.path.abspath(state_filepath)
|
||||
rel_state_path = os.path.relpath(abs_state_path, os.getcwd())
|
||||
logger.info(f"状态已保存到: {abs_state_path}")
|
||||
|
||||
return {
|
||||
'report_filename': filename,
|
||||
'report_filepath': abs_report_path,
|
||||
'report_relative_path': rel_report_path,
|
||||
'state_filename': state_filename,
|
||||
'state_filepath': abs_state_path,
|
||||
'state_relative_path': rel_state_path
|
||||
}
|
||||
|
||||
def get_progress_summary(self) -> Dict[str, Any]:
|
||||
"""获取进度摘要"""
|
||||
@@ -492,4 +515,4 @@ def create_agent(config_file: Optional[str] = None) -> ReportAgent:
|
||||
"""
|
||||
|
||||
config = Settings() # 以空配置初始化,而从从环境变量初始化
|
||||
return ReportAgent(config)
|
||||
return ReportAgent(config)
|
||||
Reference in New Issue
Block a user