Files
ylt_diy/查看调试日志.md
user9994793890 2ad6e27131 debug: 添加详细调试日志,诊断下载按钮不显示的问题
问题:日报生成成功后,历史记录中没有下载按钮。

改进内容:

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
2026-07-09 12:59:40 +08:00

3.5 KiB
Raw Blame History

如何查看调试日志

问题:生成日报后没有下载按钮

步骤1:重启服务

停止当前服务(Ctrl+C),然后重新启动:

python app.py

步骤2:生成日报

  1. 访问 http://localhost:5000
  2. 切换到"日报生成"标签
  3. 选择配置和时间范围
  4. 点击"生成日报"

步骤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:查看浏览器控制台

  1. 按 F12 打开开发者工具
  2. 切换到 "Console" 标签
  3. 刷新历史记录页面
  4. 应该看到调试信息:
历史记录项: {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

确认文件是否真的生成了。

联系支持

如果以上步骤都无法解决问题,请提供:

  1. 服务器控制台的完整日志(从生成到查看历史)
  2. 浏览器控制台的完整输出
  3. curl测试API的返回结果
  4. public/reports/ 目录的文件列表

最后更新: 2025-01-08