# 问题已定位: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