ai-business-write/技术文档/MinIO问题分析和解决方案.md

139 lines
4.1 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.

# MinIO文档生成失败问题分析和解决方案
## 问题诊断结果
根据诊断脚本的结果,发现了以下问题:
### ✅ 正常的功能
1. **MinIO连接** - 使用 `secure=false` 可以正常连接
2. **存储桶存在** - `finyx` 存储桶已存在
3. **文件上传** - 上传功能正常
4. **预签名URL生成** - URL生成功能正常
### ❌ 发现的问题
#### 1. 环境变量配置错误(关键问题)
当前环境变量还是旧配置:
- `MINIO_ENDPOINT`: `minio.datacubeworld.com:9000`
- 应该是: `10.100.31.21:9000`
- `MINIO_ACCESS_KEY`: `JOLXFXny3avFSzB0uRA5`
- 应该是: `minio_PC8dcY`
- `MINIO_SECURE`: `true`
- 应该是: `false` **重要新服务器使用HTTP不是HTTPS**
#### 2. 模板文件缺失(关键问题)
数据库中的模板文件在新MinIO服务器上不存在
- 例如:`/615873064429507639/TEMPLATE/2025/12/8-1请示报告卡初核报告结论 .docx`
- 错误信息:`Object does not exist`
## 解决方案
### 步骤1更新环境变量配置
#### 方法A使用修复脚本推荐
运行修复脚本自动创建/更新 `.env` 文件:
```bash
python fix_minio_config.py
```
#### 方法B手动创建/更新 .env 文件
在项目根目录创建或更新 `.env` 文件,内容如下:
```bash
# MinIO配置
MINIO_ENDPOINT=10.100.31.21:9000
MINIO_ACCESS_KEY=minio_PC8dcY
MINIO_SECRET_KEY=minio_7k7RNJ
MINIO_BUCKET=finyx
MINIO_SECURE=false # 重要新服务器使用HTTP必须是false
```
**⚠️ 重要提示:`MINIO_SECURE` 必须设置为 `false`,不是 `true`**
### 步骤2迁移模板文件
模板文件需要从旧MinIO服务器迁移到新服务器或者重新上传。
#### 方法A从旧服务器迁移如果有访问权限
1. 从旧MinIO服务器下载所有模板文件
2. 上传到新MinIO服务器
#### 方法B重新上传模板文件
1. 从本地模板目录重新上传模板文件
2. 确保文件路径与数据库中的 `file_path` 字段匹配
### 步骤3验证配置
运行诊断脚本验证配置是否正确:
```bash
python diagnose_minio_document_generation.py
```
应该看到所有测试都通过。
### 步骤4重启应用
**重要:更新环境变量后,必须重启应用服务才能生效!**
## 关于目录结构
**MinIO是对象存储不需要创建目录。**
- 对象名称可以包含路径分隔符(如 `/`MinIO会自动处理
- 例如:`615873064429507639/TEMPLATE/2024/12/template.docx`
- 上传文件时MinIO会自动创建"虚拟目录"结构
## 常见问题
### Q1: 为什么 `MINIO_SECURE` 必须是 `false`
A: 新MinIO服务器 `10.100.31.21:9000` 使用HTTP协议不支持HTTPS。如果设置为 `true`客户端会尝试使用HTTPS连接导致连接失败。
### Q2: 如何确认服务器使用HTTP还是HTTPS
A: 可以尝试访问 `http://10.100.31.21:9000``https://10.100.31.21:9000`看哪个能正常访问。根据测试结果该服务器只支持HTTP。
### Q3: 模板文件路径格式是什么?
A: 模板文件路径格式为:`/{tenant_id}/TEMPLATE/{year}/{month}/{filename}.docx`
- 例如:`/615873064429507639/TEMPLATE/2025/12/template.docx`
- 这个路径存储在数据库的 `f_polic_file_config.file_path` 字段中
### Q4: 如何检查模板文件是否存在?
A: 运行诊断脚本 `diagnose_minio_document_generation.py`,它会自动检查所有模板文件是否存在。
## 测试清单
完成修复后,请验证以下功能:
- [ ] MinIO连接正常
- [ ] 存储桶存在
- [ ] 模板文件可以下载
- [ ] 生成的文档可以上传
- [ ] 预签名URL可以正常生成
- [ ] 文档生成接口可以正常调用
## 相关文件
- `diagnose_minio_document_generation.py` - 诊断脚本
- `fix_minio_config.py` - 配置修复脚本
- `test_minio_remote_server.py` - MinIO连接测试脚本
- `MinIO远程服务器测试结果.md` - 之前的测试结果
## 联系支持
如果问题仍然存在,请提供:
1. 诊断脚本的完整输出
2. 应用日志中的错误信息
3. 具体的错误场景哪个接口、哪个文件ID等