196 lines
4.9 KiB
Markdown
196 lines
4.9 KiB
Markdown
# 开发完成总结
|
||
|
||
## ✅ 已完成的工作
|
||
|
||
### 1. 解析接口调整
|
||
- ✅ 取消 `business_type` 参数
|
||
- ✅ 新增 `outputData` 参数(包含需要提取的字段列表)
|
||
- ✅ 实现根据 `fieldCode` 从数据库查询字段配置
|
||
- ✅ 接口路径:`/ai/extract` 和 `/api/ai/extract`(兼容旧路径)
|
||
|
||
**相关文件修改:**
|
||
- `app.py` - 解析接口实现已更新
|
||
- `services/field_service.py` - 新增 `get_output_fields_by_field_codes` 方法
|
||
|
||
### 2. Excel文件解析
|
||
- ✅ 创建了 `parse_excel_fields.py` 脚本
|
||
- ✅ 成功解析Excel文件,提取所有字段定义
|
||
- ✅ 生成了 `parsed_fields.json` 文件
|
||
|
||
**解析结果:**
|
||
- 识别了8个模板及其字段关系
|
||
- 提取了所有输入字段和输出字段
|
||
|
||
### 3. 文档生成接口开发
|
||
- ✅ 创建了 `services/document_service.py` 文档服务
|
||
- ✅ 实现Word模板填充功能(使用python-docx)
|
||
- ✅ 实现MinIO文件上传功能
|
||
- ✅ 实现模板下载功能
|
||
- ✅ 接口路径:`/ai/generate-document` 和 `/api/ai/generate-document`(兼容旧路径)
|
||
|
||
**功能特性:**
|
||
- 从MinIO下载模板
|
||
- 填充Word模板中的占位符 `{{field_code}}`
|
||
- 上传生成的文件到MinIO
|
||
- 返回相对路径(符合新接口要求)
|
||
|
||
### 4. 依赖库更新
|
||
- ✅ 更新了 `requirements.txt`,添加了:
|
||
- `python-docx==1.1.0` - Word文档处理
|
||
- `minio==7.2.3` - MinIO客户端
|
||
- `openpyxl==3.1.2` - Excel文件解析
|
||
|
||
## 📋 接口变更说明
|
||
|
||
### 解析接口 (`/ai/extract`)
|
||
|
||
**变更前:**
|
||
```json
|
||
{
|
||
"businessType": "INVESTIGATION",
|
||
"inputData": [
|
||
{"fieldCode": "clue_info", "fieldValue": "..."}
|
||
]
|
||
}
|
||
```
|
||
|
||
**变更后:**
|
||
```json
|
||
{
|
||
"inputData": [
|
||
{"fieldCode": "clue_info", "fieldValue": "..."}
|
||
],
|
||
"outputData": [
|
||
{"fieldCode": "userName"},
|
||
{"fieldCode": "userAge"}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 文档生成接口 (`/ai/generate-document`)
|
||
|
||
**请求参数:**
|
||
```json
|
||
{
|
||
"inputData": [
|
||
{"fieldCode": "userName", "fieldValue": "张三"},
|
||
{"fieldCode": "userAge", "fieldValue": "30"}
|
||
],
|
||
"fpolicFieldParamFileList": [
|
||
{
|
||
"fileId": 1,
|
||
"fileName": "请示报告卡.doc",
|
||
"templateCode": "REPORT_CARD"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**返回结果:**
|
||
- `filePath` 返回相对路径(如:`/202511261123/请示报告卡.doc`)
|
||
- 不再返回绝对路径
|
||
|
||
## ⚠️ 重要变更点
|
||
|
||
1. **数据库字段变更**
|
||
- `f_polic_file_config` 表新增 `template_code` 字段
|
||
- 不再写入 `input_data` 字段(只读取)
|
||
|
||
2. **字段查询逻辑**
|
||
- 通过 `fieldCode` 从数据库查询字段配置
|
||
- 不再依赖 `business_type` 参数
|
||
|
||
3. **路径格式**
|
||
- MinIO路径返回相对路径,以 `/` 开头
|
||
- 不再返回绝对路径
|
||
|
||
## 📝 下一步工作建议
|
||
|
||
### 1. 数据库初始化脚本(待完成)
|
||
需要创建一个完整的脚本,将所有Excel中的字段初始化到数据库:
|
||
- 创建所有字段记录(输入字段和输出字段)
|
||
- 创建文件配置记录(使用template_code字段)
|
||
- 建立文件和字段的关联关系
|
||
|
||
### 2. prompt_config.json调整(待完成)
|
||
根据新字段更新抽取规则
|
||
|
||
### 3. 占位符文档生成(待完成)
|
||
创建一个MD文档,列出所有占位符和对应的数据字段
|
||
|
||
### 4. 测试验证
|
||
- 测试解析接口
|
||
- 测试文档生成接口
|
||
- 验证MinIO文件上传和下载
|
||
|
||
## 🔧 使用说明
|
||
|
||
### 启动服务
|
||
```bash
|
||
python app.py
|
||
```
|
||
|
||
### 测试解析接口
|
||
```bash
|
||
curl -X POST http://localhost:7500/ai/extract \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"inputData": [
|
||
{"fieldCode": "clue_info", "fieldValue": "被举报用户名称是张三"}
|
||
],
|
||
"outputData": [
|
||
{"fieldCode": "userName"}
|
||
]
|
||
}'
|
||
```
|
||
|
||
### 测试文档生成接口
|
||
```bash
|
||
curl -X POST http://localhost:7500/ai/generate-document \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"inputData": [
|
||
{"fieldCode": "userName", "fieldValue": "张三"}
|
||
],
|
||
"fpolicFieldParamFileList": [
|
||
{
|
||
"fileId": 1,
|
||
"fileName": "请示报告卡.doc",
|
||
"templateCode": "REPORT_CARD"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
## 📁 新增/修改的文件
|
||
|
||
### 新增文件
|
||
1. `services/document_service.py` - 文档生成服务
|
||
2. `parse_excel_fields.py` - Excel解析脚本
|
||
3. `parsed_fields.json` - 解析结果文件
|
||
4. `开发完成总结.md` - 本文档
|
||
|
||
### 修改文件
|
||
1. `app.py` - 调整解析接口,新增文档生成接口
|
||
2. `services/field_service.py` - 新增字段查询方法
|
||
3. `requirements.txt` - 添加新依赖库
|
||
|
||
## ⚡ 注意事项
|
||
|
||
1. **环境变量配置**
|
||
- 确保设置了 `MINIO_ENDPOINT`、`MINIO_ACCESS_KEY`、`MINIO_SECRET_KEY`
|
||
- 确保设置了数据库连接信息
|
||
|
||
2. **数据库表结构**
|
||
- 确保 `f_polic_file_config` 表有 `template_code` 字段
|
||
- 确保字段表 `f_polic_field` 有正确的字段编码
|
||
|
||
3. **MinIO配置**
|
||
- 确保MinIO服务可访问
|
||
- 确保存储桶存在
|
||
|
||
4. **Word模板格式**
|
||
- 占位符格式:`{{field_code}}`
|
||
- 字段编码需与数据库中的 `filed_code` 一致
|
||
|