# 征信维护后端直接入库实施记录

## 1. 实施范围

- 实施目标：将征信维护后端切换为征信对象维度，上传时不再校验员工归属，解析成功后按 `person_id` 直接覆盖入库，列表查询改为征信表聚合
- 实施目录：`ccdi-info-collection`
- 实施日期：2026-03-24

## 2. 实际修改文件

- `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/dto/CcdiCreditInfoQueryDTO.java`
- `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/CreditInfoListVO.java`
- `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiCreditInfoServiceImpl.java`
- `ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiCreditInfoQueryMapper.xml`
- `ccdi-info-collection/src/test/java/com/ruoyi/info/collection/service/CcdiCreditInfoServiceImplTest.java`
- `ccdi-info-collection/src/test/java/com/ruoyi/info/collection/mapper/CcdiCreditInfoQueryMapperXmlTest.java`
- `ccdi-info-collection/src/test/java/com/ruoyi/info/collection/controller/CcdiCreditInfoControllerTest.java`

## 3. 功能落地说明

### 3.1 直接入库口径

- 上传解析后直接读取 `query_cert_no`、`query_cust_name`、`report_time`
- 删除员工主数据依赖，不再校验征信对象是否存在于 `ccdi_base_staff`
- 保留“同一证件号仅允许最新征信覆盖写入”的日期校验
- 继续沿用 `replaceEmployeeCredit` 方法完成按 `person_id` 的先删后插覆盖写入

### 3.2 DTO / VO 收敛

- `CcdiCreditInfoQueryDTO` 仅保留 `name`、`idCard`
- `CreditInfoListVO` 删除 `staffId`、`deptName`，仅保留征信对象摘要字段

### 3.3 SQL 聚合调整

- 列表查询改为以征信业务表为主集合，覆盖“只有负债”“只有负面信息”“两者都有”三类数据
- 列表与摘要查询均通过 `person_id` 聚合，不再关联 `ccdi_base_staff`、`sys_dept`
- 查询条件仅保留姓名、身份证号两项筛选

## 4. 验证记录

### 4.1 失败验证

执行命令：

```bash
mvn -pl ccdi-info-collection -Dtest=CcdiCreditInfoServiceImplTest,CcdiCreditInfoQueryMapperXmlTest,CcdiCreditInfoControllerTest test
```

执行结果：

- 首轮失败点与计划一致，集中暴露为员工校验未删除、XML 仍依赖员工表

### 4.2 分段验证

执行命令：

```bash
mvn -pl ccdi-info-collection -Dtest=CcdiCreditInfoControllerTest test
mvn -pl ccdi-info-collection -Dtest=CcdiCreditInfoServiceImplTest test
mvn -pl ccdi-info-collection -Dtest=CcdiCreditInfoQueryMapperXmlTest test
```

执行结果：

- 三组测试均通过
- 控制层分页委派契约保持不变
- 非员工征信对象可成功上传，旧日期上传仍被拦截
- XML 契约确认已去掉 `ccdi_base_staff`、`query.staffId`、`query.maintained`

## 5. 进程与环境说明

- 本次仅执行 Maven 单元测试，未启动本地后端服务
- 无残留测试进程需要清理
