# 2026-05-06 流水标签启动循环依赖修复实施记录

## 保存路径

- `docs/reports/implementation/2026-05-06-bank-tag-circular-dependency-fix.md`

## 问题背景

后端启动时报出 Bean 循环依赖：

```text
ccdiBankTagController
-> ccdiBankTagServiceImpl
-> ccdiProjectOverviewServiceImpl
-> ccdiModelParamServiceImpl
-> ccdiBankTagServiceImpl
```

循环关系的业务原因是：流水标签服务执行完成后刷新项目总览；项目总览导出报告时读取模型参数；模型参数保存后触发流水标签自动重算。

## 修改内容

- 调整 `CcdiProjectOverviewServiceImpl` 的结果总览报告参数读取方式：
  - 移除对 `ICcdiModelParamService` 的注入。
  - 改为通过 `CcdiModelParamMapper` 只读查询模型参数。
  - 保持原有项目配置规则：`configType=default` 读取 `project_id=0` 的默认参数，否则读取当前项目参数。
- 补充 `CcdiProjectOverviewServiceImplTest`，覆盖默认配置项目导出报告时参数读取来源。
- 补充 `CcdiProjectOverviewServiceStructureTest`，约束结果总览服务实现不再注入 `ICcdiModelParamService`，避免循环依赖回归。

## 影响范围

- 仅涉及后端服务依赖关系与结果总览报告参数读取链路。
- 不涉及前端页面、数据库结构和菜单权限。
- 参数保存后触发自动重算、流水标签执行后刷新总览的业务链路保持不变。

## 验证情况

已执行并通过：

```bash
mvn -pl ccdi-project -am -Dtest=CcdiProjectOverviewServiceStructureTest,CcdiProjectOverviewServiceImplTest,CcdiBankTagServiceImplTest -Dsurefire.failIfNoSpecifiedTests=false test
```

结果：`Tests run: 37, Failures: 0, Errors: 0, Skipped: 0`。

已执行并通过：

```bash
mvn -pl ruoyi-admin -am -DskipTests compile
```

结果：`BUILD SUCCESS`。

补充说明：包含 `CcdiModelParamServiceImplTest` 的扩展测试命令因既有 Mockito 静态 mock 环境问题失败，错误为 `SubclassByteBuddyMockMaker does not support the creation of static mocks`；本次相关的结果总览与流水标签测试均已通过。
