# 2026-03-24 专项核查拓展查询后端验证记录

## 执行命令

```bash
mvn test -pl ccdi-project -Dtest=CcdiProjectSpecialCheckExtendedQueryContractTest,CcdiProjectSpecialCheckExtendedPurchaseSqlTest,CcdiProjectSpecialCheckExtendedRecruitmentSqlTest,CcdiProjectSpecialCheckExtendedTransferSqlTest,CcdiProjectSpecialCheckExtendedQueryServiceImplTest
```

```bash
mvn test -pl ccdi-project
```

## 执行结果

- 聚焦专项核查拓展查询测试通过，`Tests run: 11, Failures: 0, Errors: 0, Skipped: 0`
- `ccdi-project` 模块全量测试通过，`Tests run: 178, Failures: 0, Errors: 0, Skipped: 0`

## 项目范围口径检查

- 未发现与 `projectEmployeeScopeSql` 项目员工范围口径相关的偏差
- 采购、招聘、调动 3 个主题的列表与详情 SQL 都锁定了项目范围归属条件
- 服务层已统一校验项目存在性，并在详情不归属项目范围时返回统一业务错误

## 失败与既有问题说明

- 本次验证未出现失败
- 模块全量测试存在若干业务日志与 Mockito 动态 agent 警告，但不影响测试通过，且不属于本次改动引入的问题

## 追加修复记录

- 2026-03-24 晚间追加修复了拓展查询列表 SQL 的 `projectId` 绑定问题
- 根因是 `projectEmployeeScopeSql` 依赖 `#{projectId}`，而采购、招聘、调动 3 个列表查询实际通过 `@Param("query")` 传参，运行期顶层参数表中不存在直接可用的 `projectId`
- 修复方式是在 `selectExtendedPurchasePage`、`selectExtendedRecruitmentPage`、`selectExtendedTransferPage` 中统一增加 `<bind name="projectId" value="query.projectId"/>`
- 追加验证命令：

```bash
mvn test -pl ccdi-project -Dtest=CcdiProjectSpecialCheckExtendedQueryContractTest,CcdiProjectSpecialCheckExtendedPurchaseSqlTest,CcdiProjectSpecialCheckExtendedRecruitmentSqlTest,CcdiProjectSpecialCheckExtendedTransferSqlTest,CcdiProjectSpecialCheckExtendedQueryServiceImplTest,CcdiProjectSpecialCheckControllerTest
```

- 追加验证结果：`Tests run: 16, Failures: 0, Errors: 0, Skipped: 0`
