修复历史项目导入解环与流水查询SQL

This commit is contained in:
wkc
2026-03-30 13:46:04 +08:00
parent 0a3c03dcf9
commit d582a65978
11 changed files with 330 additions and 23 deletions

View File

@@ -0,0 +1,176 @@
# 2026-03-29 历史项目导入功能测试记录
## 测试目标
- 按实施计划验证“项目管理 -> 导入历史项目”功能的真实链路
- 通过浏览器、数据库、后端日志交叉确认以下能力:
- 历史项目列表是否只展示已完成、已归档项目
- 导入弹窗校验、项目创建、成功跳转是否正常
- 异步历史导入是否生成文件记录与流水数据
- 详情页上传记录是否展示来源信息、是否具备只读限制
## 测试环境
- 测试日期2026-03-29
- 前端地址:`http://127.0.0.1:1026`
- 后端地址:`http://127.0.0.1:62318`
- 数据库:`116.62.17.81:3307/ccdi`
- 登录账号:`admin/admin123`
## 测试前检查
### 1. 默认启动失败
- 使用当前代码重新打包 `ruoyi-admin` 后,按默认参数启动后端,应用未能启动成功。
- 日志报错为 Spring Bean 循环依赖:
- `CcdiBankTagServiceImpl`
- `CcdiProjectServiceImpl`
- `CcdiProjectHistoryImportServiceImpl`
- 结论:当前代码在默认配置下无法完成联调测试。
### 2. 为继续测试临时放开循环依赖
- 仅为继续验证后续功能,临时使用启动参数:
```bash
java -jar ruoyi-admin/target/ruoyi-admin.jar --spring.main.allow-circular-references=true
```
- 说明:以下浏览器与接口测试结果均建立在该临时启动参数下,不代表默认启动已通过。
### 3. 数据库结构预检查
- 执行 `SHOW COLUMNS FROM ccdi_file_upload_record;`
- 结果:数据库中缺少以下字段:
- `source_type`
- `source_project_id`
- `source_project_name`
## 浏览器测试记录
### 1. 历史项目弹窗与列表
- 登录后进入“初核项目管理”页面。
- 点击快捷方式“导入历史项目”,弹窗可正常打开。
- 弹窗中看到“新项目名称 / 备注 / 流水时间 / 历史项目列表”布局,符合计划描述。
- 历史项目列表实际加载成功,只展示“已完成 / 已归档”项目。
- 浏览器看到的历史项目样本包括:
- `phase2联调验证-20260322-1`
- `0320`
- `测试0319`
- `测试0323`
### 2. 表单校验
- 未选择历史项目直接点击“导入”,页面提示:`请选择历史项目`
- 选择历史项目后,不填写新项目名称直接点击“导入”,页面提示:`请输入新项目名称`
- 结论:前端最小校验生效。
### 3. 真实提交
- 选择历史项目:
- `49 phase2联调验证-20260322-1`
- `48 0320`
- 填写:
- 新项目名称:`自动测试-历史导入-20260329-1017`
- 备注:`测试历史项目导入链路`
- 流水时间:`2026-03-17``2026-03-18`
- 点击“导入”后:
- 页面提示:`历史项目导入任务已开始`
- 自动跳转至详情页:`/ccdiProject/detail/57`
- 新项目标题显示为 `自动测试-历史导入-20260329-1017`
- 项目状态显示为 `进行中`
- 上传记录列表显示 `暂无数据`
## 数据库验证
### 1. 历史项目样本确认
- 查询 `ccdi_file_upload_record` 后确认以下项目存在可用于导入的 `parsed_success` 记录:
- `49 phase2联调验证-20260322-1``11`
- `48 0320``9`
- `46 测试0319``4`
### 2. 新项目创建结果
- 提交后数据库生成新项目:
```text
project_id = 57
project_name = 自动测试-历史导入-20260329-1017
status = 0
lsfx_project_id = 1001
target_count = 0
```
### 3. 导入结果落库检查
- 查询 `ccdi_file_upload_record`
- `project_id = 57`,结果 `0`
- 查询 `ccdi_bank_statement`
- `project_id = 57`,结果 `0`
## 日志验证
### 1. 项目创建成功
- 日志记录了项目创建成功:
- `projectId=57`
- `projectName=自动测试-历史导入-20260329-1017`
- 状态初始化为 `进行中`
### 2. 异步导入线程失败
- 后端异步线程 `file-upload-1` 在读取来源上传记录时抛出异常:
```text
Unknown column 'source_type' in 'field list'
```
- 对应 SQL 为:
```sql
select id, project_id, lsfx_project_id, log_id, file_name, file_size,
file_status, source_type, source_project_id, source_project_name,
enterprise_names, account_nos, error_message, upload_time, upload_user
from ccdi_file_upload_record
where project_id in (?, ?)
and file_status = 'parsed_success'
and log_id is not null
```
- 结论:异步导入任务在读取来源记录阶段即失败,后续的流水复制、文件记录写入、打标触发都没有执行成功。
## 测试结论
### 已验证通过
- 导入历史项目弹窗可打开
- 历史项目列表能够加载真实数据,且列表范围符合“已完成/已归档”
- 前端校验提示正常
- 点击导入后可创建新项目
- 提交成功后提示文案正确,且会跳转到新项目详情页
### 验证失败
- 默认配置下后端无法启动,存在循环依赖
- 联调用数据库缺少历史导入所需来源字段
- 异步历史导入任务执行失败
- 新项目未生成任何上传记录
- 新项目未生成任何流水数据
### 当前无法继续验证的项
- 上传记录“历史导入 · 来源项目名”展示
- 历史导入文件记录删除入口是否隐藏
- 导入完成后自动触发打标、结果刷新、统计刷新
## 阻塞问题汇总
1. `CcdiBankTagServiceImpl -> CcdiProjectServiceImpl -> CcdiProjectHistoryImportServiceImpl` 存在循环依赖,导致默认启动失败。
2. 联调用数据库 `ccdi_file_upload_record` 未执行来源字段迁移,导致异步导入 SQL 直接失败。
## 清理记录
- 已停止本次测试临时启动的后端进程
- 已停止本次测试临时启动的前端开发进程