Files
ylt_diy/问题已定位.md
user9994793890 bce2f363b5 fix: 创建强制修复脚本,解决file_path为null的问题
问题定位:API返回的file_path字段为null,导致前端没有显示下载按钮。

解决方案:

1. 新增 force_rebuild.py 强制修复脚本:
   - 删除旧的配置表和历史表
   - 重新创建表结构(确保file_path字段正确)
   - 验证表结构是否完整
   - 显示file_path字段的类型

2. 新增 问题已定位.md 文档:
   - 详细的问题分析
   - 5个修复步骤
   - 4种验证方法
   - 手动测试SQL语句
   - 需要提供的信息清单

使用步骤:
1. 运行 python force_rebuild.py
2. 重启服务 python app.py
3. 重新创建配置
4. 生成日报
5. 查看历史记录(应该有下载按钮)

注意:修复会删除所有配置和历史记录,需要重新创建配置。

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-09 13:21:03 +08:00

145 lines
3.3 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.

# 问题已定位:file_path 为 null
## 问题原因
从API返回的数据可以看到:
```json
{
"id": 1752038179055,
"status": 1,
"file_path": null, // ❌ 这里是 null!
...
}
```
**file_path 是 null**,所以前端没有显示下载按钮。
## 解决方案
### 步骤1:运行强制修复脚本
```bash
python force_rebuild.py
```
这个脚本会:
1. 删除旧的配置表和历史表
2. 重新创建表结构
3. 验证 file_path 字段是否存在
### 步骤2:重启服务
```bash
python app.py
```
### 步骤3:重新创建配置
由于旧表被删除,需要重新创建配置:
1. 访问 http://localhost:5000
2. 切换到"配置管理"标签
3. 创建新的配置
### 步骤4:生成日报
1. 切换到"日报生成"标签
2. 选择配置和时间范围
3. 点击"生成日报"
4. **查看服务器控制台的日志**
应该看到:
```
[日报生成] Excel文件已生成: /reports/daily_report_xxx.xlsx
[日报生成] 准备保存历史记录,file_path=/reports/daily_report_xxx.xlsx
[保存历史] 准备保存历史记录
ID: xxx
file_path: '/reports/daily_report_xxx.xlsx'
status: 1
[保存历史] 执行SQL插入...
[保存历史] 插入完成,返回ID: xxx
```
### 步骤5:验证修复
#### 方法1:查看API返回
在浏览器中访问:
```
http://localhost:5000/api/report/history
```
检查 `file_path` 字段是否有值(不是 null)。
#### 方法2:查看前端页面
1. 切换到"历史记录"标签
2. 应该能看到下载按钮
3. 点击"下载"按钮应该能下载Excel文件
## 如果还是不行
### 检查1:查看服务器日志
在运行 `python app.py` 的窗口中,查看完整的日志输出。
**请复制完整的日志**,特别是:
- `[日报生成]` 开头的日志
- `[保存历史]` 开头的日志
### 检查2:检查文件是否存在
```bash
# Windows
dir public\reports\*.xlsx
```
确认 Excel 文件是否真的生成了。
### 检查3:手动测试插入
如果有MySQL客户端,可以手动测试插入:
```sql
-- 连接到数据库
mysql -h haoslm2.xicp.net -P 10216 -u root -p
-- 手动插入测试数据
INSERT INTO t_daily_report_history
(id, report_date, start_time, end_time, split_type, split_value, split_name,
config_id, total_orders, total_amount, sum_results, file_path, status, create_time)
VALUES
(9999999999, '2025-01-08', '2025-01-07 08:00:00', '2025-01-08 08:00:00',
'company_id', '123', '测试企业', 1234567890, 10, 100.00, '{}',
'/reports/test.xlsx', 1, NOW());
-- 查询是否成功
SELECT id, file_path, status FROM t_daily_report_history WHERE id = 9999999999;
-- 如果file_path有值,说明表结构没问题
-- 如果file_path是null,说明数据库有问题
```
### 检查4:检查Doris数据库特性
由于使用的是 Apache Doris 数据库,可能有特殊的存储行为。
检查表是否真的创建成功:
```sql
DESCRIBE t_daily_report_history;
```
确认 `file_path` 字段的类型是 `VARCHAR(500)`。
## 请提供以下信息
如果问题仍然存在,请提供:
1. **force_rebuild.py 的完整输出**
2. **服务器控制台的日志**(从生成到查看历史)
3. **API返回的JSON数据**(刷新后重新获取)
4. **public/reports/ 目录的文件列表**
5. **截图**:历史记录页面的截图
---
**最后更新**: 2025-01-08