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

152 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 如何查看调试日志
## 问题:生成日报后没有下载按钮
### 步骤1:重启服务
停止当前服务(Ctrl+C),然后重新启动:
```bash
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:
```bash
# 查看历史记录
curl http://localhost:5000/api/report/history
# 应该返回类似:
# {
# "success": true,
# "data": {
# "list": [
# {
# "id": 1234567890123,
# "status": 1,
# "file_path": "/reports/xxx.xlsx",
# ...
# }
# ],
# ...
# }
# }
```
如果 file_path 为空,说明是后端问题
如果 file_path 有值,说明是前端显示问题
## 检查文件是否存在
```bash
# Windows
dir public\reports\*.xlsx
# Linux/Mac
ls -la public/reports/*.xlsx
```
确认文件是否真的生成了。
## 联系支持
如果以上步骤都无法解决问题,请提供:
1. 服务器控制台的完整日志(从生成到查看历史)
2. 浏览器控制台的完整输出
3. curl测试API的返回结果
4. public/reports/ 目录的文件列表
---
**最后更新**: 2025-01-08