232 lines
7.0 KiB
Markdown
232 lines
7.0 KiB
Markdown
# 数据结构、接口、测试页面和Swagger同步检查报告
|
||
|
||
## 检查时间
|
||
2024年12月(当前时间)
|
||
|
||
## 检查目标
|
||
验证"谈话前安全风险评估表"(模板编码:`PRE_INTERVIEW_RISK_ASSESSMENT`)的数据结构、接口、测试页面和Swagger是否已正确同步更新。
|
||
|
||
---
|
||
|
||
## 一、数据库检查
|
||
|
||
### 1.1 文件配置
|
||
- **表名**: `f_polic_file_config`
|
||
- **检查项**:
|
||
- 文件配置是否存在
|
||
- `input_data` JSON字段中是否包含正确的`template_code`
|
||
- 文件路径是否正确
|
||
|
||
### 1.2 字段数据
|
||
- **表名**: `f_polic_field`
|
||
- **期望字段** (11个输出字段):
|
||
1. `target_family_situation` - 被核查人员家庭情况
|
||
2. `target_social_relations` - 被核查人员社会关系
|
||
3. `target_health_status` - 被核查人员健康状况
|
||
4. `target_personality` - 被核查人员性格特征
|
||
5. `target_tolerance` - 被核查人员承受能力
|
||
6. `target_issue_severity` - 被核查人员涉及问题严重程度
|
||
7. `target_other_issues_possibility` - 被核查人员涉及其他问题的可能性
|
||
8. `target_previous_investigation` - 被核查人员此前被审查情况
|
||
9. `target_negative_events` - 被核查人员社会负面事件
|
||
10. `target_other_situation` - 被核查人员其他情况
|
||
11. `risk_level` - 风险等级
|
||
|
||
### 1.3 关联关系
|
||
- **表名**: `f_polic_file_field`
|
||
- **检查项**: 所有11个字段是否都已正确关联到文件配置
|
||
|
||
**验证脚本**: `verify_pre_interview_risk_assessment_data.py`
|
||
|
||
---
|
||
|
||
## 二、接口服务检查
|
||
|
||
### 2.1 field_service.py ✅ 已修复
|
||
|
||
**问题**: `get_fields_by_business_type`方法硬编码了模板名称`'初步核实审批表'`,导致无法查询新模板的字段。
|
||
|
||
**修复内容**:
|
||
- ✅ 修改为根据`business_type`从`input_data` JSON字段中动态查询
|
||
- ✅ 支持查询所有匹配`business_type`的文件配置及其关联字段
|
||
- ✅ 不再硬编码模板名称
|
||
|
||
**修复前**:
|
||
```python
|
||
AND fc.name = '初步核实审批表'
|
||
```
|
||
|
||
**修复后**:
|
||
```python
|
||
# 从input_data JSON中解析business_type,动态匹配
|
||
sql_file_configs = """
|
||
SELECT id, name, input_data
|
||
FROM f_polic_file_config
|
||
WHERE tenant_id = %s AND state = 1
|
||
"""
|
||
# 然后根据business_type过滤文件配置ID
|
||
```
|
||
|
||
### 2.2 document_service.py ✅ 已修复
|
||
|
||
**问题**: `get_file_config_by_template_code`方法试图从不存在的`template_code`列查询,而实际上`template_code`存储在`input_data`的JSON字段中。
|
||
|
||
**修复内容**:
|
||
- ✅ 修改为从`input_data` JSON字段中解析`template_code`
|
||
- ✅ 支持通过`template_code`查找文件配置
|
||
|
||
**修复前**:
|
||
```python
|
||
sql = """
|
||
SELECT id, name, file_path, template_code
|
||
FROM f_polic_file_config
|
||
WHERE tenant_id = %s
|
||
AND template_code = %s # ❌ 列不存在
|
||
"""
|
||
```
|
||
|
||
**修复后**:
|
||
```python
|
||
# 查询所有文件配置,然后从input_data JSON中解析template_code
|
||
sql = """
|
||
SELECT id, name, file_path, input_data
|
||
FROM f_polic_file_config
|
||
WHERE tenant_id = %s AND state = 1
|
||
"""
|
||
# 遍历结果,从JSON中查找匹配的template_code
|
||
```
|
||
|
||
---
|
||
|
||
## 三、测试页面检查
|
||
|
||
### 3.1 static/index.html
|
||
|
||
**状态**: ✅ 通用设计,无需硬编码更新
|
||
|
||
**说明**:
|
||
- 测试页面采用动态字段添加机制
|
||
- 用户可以通过手动输入字段编码来测试任何模板
|
||
- 默认示例使用"初步核实审批表"是合理的(作为示例)
|
||
|
||
**建议** (可选):
|
||
- 可以添加模板选择器,让用户选择不同的模板并自动加载对应的字段
|
||
- 当前设计已经足够灵活,支持所有模板
|
||
|
||
---
|
||
|
||
## 四、Swagger文档检查
|
||
|
||
### 4.1 Swagger配置 ✅ 正常
|
||
|
||
**状态**: ✅ Swagger已正确配置,文档是动态生成的
|
||
|
||
**说明**:
|
||
- Swagger文档通过Flasgger自动生成
|
||
- 接口文档中不包含硬编码的模板信息
|
||
- 所有接口都通过参数(如`templateCode`)支持动态模板
|
||
|
||
**接口列表**:
|
||
1. ✅ `/ai/extract` - AI字段提取接口(有完整Swagger文档)
|
||
2. ✅ `/api/fields` - 获取字段配置接口(有完整Swagger文档)
|
||
3. ✅ `/ai/generate-document` - 文档生成接口(有完整Swagger文档)
|
||
|
||
**结论**: Swagger文档无需更新,因为它是通用的,支持所有模板。
|
||
|
||
---
|
||
|
||
## 五、修复总结
|
||
|
||
### ✅ 已完成的修复
|
||
|
||
1. **field_service.py**
|
||
- ✅ 修复`get_fields_by_business_type`方法,支持动态查询多个模板
|
||
- ✅ 从`input_data` JSON中解析`business_type`
|
||
|
||
2. **document_service.py**
|
||
- ✅ 修复`get_file_config_by_template_code`方法
|
||
- ✅ 从`input_data` JSON中解析`template_code`
|
||
|
||
### ⚠️ 需要验证的项目
|
||
|
||
1. **数据库数据**
|
||
- 需要运行`init_pre_interview_risk_assessment_fields.py`确保数据已初始化
|
||
- 需要运行`verify_pre_interview_risk_assessment_data.py`验证数据完整性
|
||
|
||
2. **接口测试**
|
||
- 测试`/api/fields?businessType=INVESTIGATION`是否返回新模板的字段
|
||
- 测试`/ai/extract`接口是否能正确提取新模板的字段
|
||
- 测试`/ai/generate-document`接口是否能正确生成新模板的文档
|
||
|
||
---
|
||
|
||
## 六、验证步骤
|
||
|
||
### 步骤1: 验证数据库数据
|
||
```bash
|
||
python verify_pre_interview_risk_assessment_data.py
|
||
```
|
||
|
||
### 步骤2: 验证接口
|
||
```bash
|
||
# 启动服务
|
||
python app.py
|
||
|
||
# 测试字段查询接口
|
||
curl "http://localhost:7500/api/fields?businessType=INVESTIGATION"
|
||
|
||
# 测试AI提取接口(使用新模板的字段)
|
||
curl -X POST http://localhost:7500/ai/extract \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"inputData": [{"fieldCode": "clue_info", "fieldValue": "..."}],
|
||
"outputData": [{"fieldCode": "risk_level"}, {"fieldCode": "target_family_situation"}]
|
||
}'
|
||
```
|
||
|
||
### 步骤3: 验证测试页面
|
||
1. 访问 `http://localhost:7500/`
|
||
2. 手动添加新模板的字段编码进行测试
|
||
3. 验证解析和生成功能
|
||
|
||
### 步骤4: 验证Swagger文档
|
||
1. 访问 `http://localhost:7500/api-docs`
|
||
2. 检查接口文档是否完整
|
||
3. 测试接口是否正常工作
|
||
|
||
---
|
||
|
||
## 七、结论
|
||
|
||
### ✅ 接口和代码层面
|
||
- ✅ `field_service.py`已修复,支持动态查询多个模板
|
||
- ✅ `document_service.py`已修复,支持从JSON中查找模板
|
||
- ✅ Swagger文档无需更新(通用设计)
|
||
|
||
### ⚠️ 需要确认
|
||
- ⚠️ 数据库数据是否已正确初始化(需要运行初始化脚本)
|
||
- ⚠️ 接口功能是否正常工作(需要实际测试)
|
||
|
||
### 📝 建议
|
||
1. 运行`init_pre_interview_risk_assessment_fields.py`确保数据已初始化
|
||
2. 运行`verify_pre_interview_risk_assessment_data.py`验证数据完整性
|
||
3. 进行接口功能测试,确保新模板可以正常使用
|
||
|
||
---
|
||
|
||
## 八、相关文件
|
||
|
||
- **初始化脚本**: `init_pre_interview_risk_assessment_fields.py`
|
||
- **验证脚本**: `verify_pre_interview_risk_assessment_data.py`
|
||
- **综合检查脚本**: `check_data_sync_status.py`
|
||
- **服务文件**:
|
||
- `services/field_service.py` ✅ 已修复
|
||
- `services/document_service.py` ✅ 已修复
|
||
- **接口文件**: `app.py` ✅ Swagger已配置
|
||
- **测试页面**: `static/index.html` ✅ 通用设计
|
||
|
||
---
|
||
|
||
**报告生成时间**: 2024年12月
|
||
**检查人员**: AI助手
|