修复历史项目导入解环与流水查询SQL
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
# AGENTS 数据库导入编码约束补充记录
|
||||
|
||||
## 本次改动
|
||||
|
||||
- 更新根目录 `AGENTS.md` 协作约定,明确 MySQL SQL 执行与数据库导入都必须保证 `utf8mb4` 会话字符集
|
||||
- 更新根目录 `AGENTS.md` 数据库规范,明确中文数据导入场景默认使用 `bin/mysql_utf8_exec.sh`
|
||||
- 将“避免导入乱码”写入说明,降低后续执行数据库导入时遗漏编码设置的风险
|
||||
|
||||
## 结论
|
||||
|
||||
- 仓库级协作约定已覆盖“数据库导入编码”问题,不再仅限于中文 SQL 脚本执行场景
|
||||
- 后续凡是导入含中文数据的 SQL 或数据库内容,默认按 `utf8mb4` 会话执行
|
||||
|
||||
## 验证说明
|
||||
|
||||
- 已人工检查文档保存路径位于 `docs/reports/implementation/`
|
||||
- 本次仅修改文档,无需运行代码测试
|
||||
@@ -84,3 +84,20 @@
|
||||
- 扩展 `project-import-history-dialog-behavior.test.js`,补齐“请选择历史项目”“请输入新项目名称”两条关键校验文案断言,锁定导入弹窗最小交互约束
|
||||
- 扩展 `project-detail-tagging-polling.test.js`,补齐 `this.$route.params.projectId` 与 `projectStatusPolling` 代码痕迹断言,确认新项目详情页继续以路由参数承接并保留状态轮询能力
|
||||
- 完成前端回归验证:`cd ruoyi-ui && node tests/unit/project-import-history-submit-flow.test.js && node tests/unit/project-import-history-dialog-layout.test.js && node tests/unit/project-import-history-dialog-behavior.test.js && node tests/unit/upload-data-file-list-table.test.js && node tests/unit/upload-data-delete-retag-copy.test.js && node tests/unit/upload-data-history-import-readonly.test.js && node tests/unit/project-detail-tagging-polling.test.js`
|
||||
|
||||
### 2026-03-29 Task 6 后端历史导入解环修复
|
||||
|
||||
- 根据联调时出现的 `CcdiBankTagServiceImpl -> CcdiProjectServiceImpl -> CcdiProjectHistoryImportServiceImpl` 循环依赖,确认根因是 `CcdiProjectServiceImpl#importFromHistory` 直接依赖历史导入服务,而历史导入服务又会回调打标服务
|
||||
- 新增 `CcdiProjectHistoryImportSubmittedEvent` 与 `CcdiProjectHistoryImportEventListener`,将“创建项目后提交历史导入任务”改为事务提交后发布事件,再由监听器委托 `ICcdiProjectHistoryImportService`
|
||||
- 调整 `CcdiProjectServiceImpl` 与 `CcdiProjectServiceImplTest`,锁定“导入历史项目在 `afterCommit` 阶段发布事件”的行为,移除对 `ICcdiProjectHistoryImportService` 的直接注入
|
||||
- 验证命令:`mvn -pl ccdi-project -am -Dtest=CcdiProjectServiceImplTest -Dsurefire.failIfNoSpecifiedTests=false test`
|
||||
- 启动验证:`mvn -pl ruoyi-admin -am -DskipTests package` 后执行 `java -jar ruoyi-admin/target/ruoyi-admin.jar`,确认默认启动不再报循环依赖且应用正常启动
|
||||
|
||||
### 2026-03-29 Task 7 后端历史导入联调修复
|
||||
|
||||
- 针对“通过导入创建的项目一直进行中,上传文件列表也不正确”做联调排查,先执行 `bin/mysql_utf8_exec.sh sql/migration/2026-03-29-add-file-upload-history-import-source-fields.sql`,将 `ccdi_file_upload_record` 缺失的 `source_type`、`source_project_id`、`source_project_name` 字段补齐到联调数据库
|
||||
- 继续排查异步导入日志,定位 `CcdiBankStatementMapper.xml` 中 `selectStatementsForHistoryImport` 存在两处 SQL 组装问题:一处重复拼出 `SELECT select ... FROM ccdi_bank_statement FROM ...`,另一处在日期过滤场景下与动态条件相邻,导致联调日志出现 `?AND`/`17094AND` 形式的拼接结果
|
||||
- 调整 `selectCcdiBankStatementVo` 为纯列片段,并将历史导入查询的基础条件包裹为 `(bs.project_id = #{projectId}) AND (bs.batch_id = #{batchId})`,避免动态日期条件继续与前置参数直接粘连
|
||||
- 扩展 `CcdiBankStatementMapperXmlTest`,新增历史导入查询 SQL 渲染断言,锁定“不重复生成 `select` 关键字”与“不生成 `?AND`”两个回归点
|
||||
- 验证命令:`mvn -pl ccdi-project -am -Dtest=CcdiBankStatementMapperXmlTest -Dsurefire.failIfNoSpecifiedTests=false test`
|
||||
- 联调验证:`mvn -pl ruoyi-admin -am -DskipTests package` 后启动 `java -jar ruoyi-admin/target/ruoyi-admin.jar`,重新调用 `/ccdi/project/import` 创建项目 `61`;接口轮询确认项目状态从 `0` 进入 `3` 再落到 `1`,上传记录列表返回 `14` 条历史导入文件;数据库确认 `ccdi_project.status = 1`、`target_count = 12`、`ccdi_file_upload_record` 共 `14` 条且 `source_type = HISTORY_IMPORT`、`ccdi_bank_statement` 共 `20` 条
|
||||
|
||||
Reference in New Issue
Block a user