# 涉疑交易无外部人员短路实施记录

## 修改内容

- 为涉疑交易查询 DTO 增加 `includeExternalPerson` 内部开关。
- 新增 `selectExternalPersonSubjectExistsByProjectId`，使用 `limit 1` 轻量判断项目是否存在外部人员主体。
- 将涉疑交易 SQL 中外部人员预警 `union all` 改为按 `includeExternalPerson` 条件拼接。
- 在涉疑交易分页和导出服务入口设置外部人员分支开关；`EXTERNAL_PERSON` 且无外部人员主体时直接返回空结果。
- 补充 Service 单测和 Mapper SQL 结构测试。

## 影响范围

- 影响接口：
  - `GET /ccdi/project/overview/suspicious-transactions`
  - 涉疑交易导出相关服务调用
- 不改变员工本人、员工亲属、模型规则、名单命中等涉疑交易原有查询口径。
- 不修改前端逻辑和数据库表结构。

## 验证情况

- 首次执行以下命令时，未带 `-am` 编译依赖模块，`ccdi-project` 使用本地旧版 `ccdi-lsfx` 依赖，导致编译阶段出现 LSFX 接口签名不一致报错，未进入测试阶段：

```bash
mvn -pl ccdi-project "-Dtest=CcdiProjectOverviewServiceSuspiciousTransactionTest,CcdiProjectOverviewMapperSqlTest" test
```

- 已使用 `-am` 重新构建依赖模块并执行定向单测：

```bash
mvn -pl ccdi-project -am "-Dtest=CcdiProjectOverviewServiceSuspiciousTransactionTest,CcdiProjectOverviewMapperSqlTest" "-Dsurefire.failIfNoSpecifiedTests=false" test
```

- 结果：通过，`Tests run: 14, Failures: 0, Errors: 0, Skipped: 0`。
- 覆盖测试：
  - `CcdiProjectOverviewServiceSuspiciousTransactionTest`
  - `CcdiProjectOverviewMapperSqlTest`

## 备注

本次修复针对无外部人员项目的性能短路，避免为了计算“没有外部人员”而执行外部人员预警复杂关联。
