问题:日报生成成功后,历史记录中没有下载按钮。
改进内容:
1. lib/report_generator.py:
- 在生成Excel文件后添加日志:显示文件路径
- 在保存历史记录前添加日志:显示file_path值
- 在save_report_history函数中添加详细日志:
* 显示准备保存的信息
* 显示file_path和status的值
* 显示SQL执行结果
2. app.py:
- 在历史记录API中添加调试日志
- 显示每条记录的status和file_path
- 确保file_path不为None(转换为空字符串)
- 添加错误堆栈输出
3. templates/index.html:
- 在渲染历史记录时添加console.log调试
- 显示每条记录的详细信息
- 显示status和file_path的类型
- 改进下载按钮判断逻辑
- 添加title提示显示文件路径
4. 新增文档:
- 查看调试日志.md:详细的调试步骤和问题诊断方法
现在用户可以通过日志准确定位问题:
- 服务器控制台:查看后端日志
- 浏览器控制台:查看前端日志
- curl测试:直接查看API返回数据
Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
3.5 KiB
3.5 KiB
如何查看调试日志
问题:生成日报后没有下载按钮
步骤1:重启服务
停止当前服务(Ctrl+C),然后重新启动:
python app.py
步骤2:生成日报
- 访问 http://localhost:5000
- 切换到"日报生成"标签
- 选择配置和时间范围
- 点击"生成日报"
步骤3:查看服务器控制台日志
在运行 python app.py 的窗口中,应该看到类似以下的日志:
[日报生成] 开始生成日报
配置ID: 1234567890
配置名称: 测试配置
拆分方式: company_id = 123
时间范围: 2025-01-07 08:00:00 至 2025-01-08 08:00:00
选择字段: 5 个
[日报生成] 查询到 10 条订单
[日报生成] Excel文件已生成: /reports/daily_report_xxx.xlsx
[日报生成] 准备保存历史记录,file_path=/reports/daily_report_xxx.xlsx
[保存历史] 准备保存历史记录
ID: 1234567890123
file_path: '/reports/daily_report_xxx.xlsx'
status: 1
[保存历史] 执行SQL插入...
[保存历史] 插入完成,返回ID: 1234567890123
[日报生成] 历史记录已保存,ID=1234567890123
[日报生成] ✓ 生成成功
订单数量: 10
总金额: 100.00
文件路径: /reports/daily_report_xxx.xlsx
历史记录ID: 1234567890123
步骤4:查看历史记录API日志
切换到"历史记录"标签,在服务器控制台应该看到:
[历史记录] ID: 1234567890123, status: 1, file_path: '/reports/daily_report_xxx.xlsx'
步骤5:查看浏览器控制台
- 按 F12 打开开发者工具
- 切换到 "Console" 标签
- 刷新历史记录页面
- 应该看到调试信息:
历史记录项: {id: 1234567890123, status: 1, file_path: '/reports/xxx.xlsx', ...}
status: 1 类型: number
file_path: /reports/xxx.xlsx 类型: string
是否有文件: true
根据日志判断问题
情况1:file_path 为空
如果日志显示:
file_path: ''
原因:Excel文件生成失败或路径没有正确返回
解决:检查 public/reports/ 目录是否存在,是否有写入权限
情况2:file_path 有值,但前端显示"-"
如果服务器日志显示 file_path 有值,但浏览器控制台显示:
是否有文件: false
原因:前端JavaScript判断逻辑有问题
解决:查看浏览器控制台的详细输出,检查 status 和 file_path 的类型
情况3:数据库中没有保存记录
如果服务器日志没有显示 "[保存历史]" 相关信息
原因:保存历史记录的代码没有被执行
解决:检查 generate_daily_report 函数的流程
快速测试API
使用curl直接测试API:
# 查看历史记录
curl http://localhost:5000/api/report/history
# 应该返回类似:
# {
# "success": true,
# "data": {
# "list": [
# {
# "id": 1234567890123,
# "status": 1,
# "file_path": "/reports/xxx.xlsx",
# ...
# }
# ],
# ...
# }
# }
如果 file_path 为空,说明是后端问题 如果 file_path 有值,说明是前端显示问题
检查文件是否存在
# Windows
dir public\reports\*.xlsx
# Linux/Mac
ls -la public/reports/*.xlsx
确认文件是否真的生成了。
联系支持
如果以上步骤都无法解决问题,请提供:
- 服务器控制台的完整日志(从生成到查看历史)
- 浏览器控制台的完整输出
- curl测试API的返回结果
- public/reports/ 目录的文件列表
最后更新: 2025-01-08