# 实体库管理新增弹窗后端实施计划

## 文档路径确认

- 后端实施计划保存路径：`docs/plans/backend/`
- 本文档文件名：`2026-04-23-enterprise-base-info-add-dialog-backend-implementation.md`

## 需求目标

- 实体库管理新增场景不再要求前端传入数据来源。
- 新增时由后端自动写入数据来源，人工新增统一落为 `MANUAL`。
- 编辑时后端保留原有数据来源，不允许通过请求修改。
- 经营状态调整为非必填项。
- 导入模板同步去除数据来源输入列，并将经营状态改为非必填展示。
- 导入时由后端自动写入 `IMPORT`，不再依赖模板传值。

## 实施范围

- `CcdiEnterpriseBaseInfoAddDTO`
- `CcdiEnterpriseBaseInfoEditDTO`
- `CcdiEnterpriseBaseInfoServiceImpl`
- `CcdiEnterpriseBaseInfoImportServiceImpl`
- `CcdiEnterpriseBaseInfoExcel`

## 实施步骤

1. 去除新增 DTO 中 `status`、`dataSource` 的必填约束，编辑 DTO 中去除 `status` 的必填约束。
2. 调整新增服务逻辑，仅校验风险等级和企业来源，新增数据时后端固定写入 `MANUAL`。
3. 调整编辑服务逻辑，更新时始终沿用数据库中的原始数据来源。
4. 调整状态字段赋值逻辑，将空白字符串统一收敛为 `null`，避免出现空串脏数据。
5. 调整导入服务逻辑，去掉对模板数据来源的解析和校验，导入时固定写入 `IMPORT`。
6. 修改导入模板对象，移除数据来源列，并把“经营状态*”调整为“经营状态”。
7. 补充/更新单元测试，覆盖新增自动写入 `MANUAL`、编辑保留原数据来源、导入自动写入 `IMPORT`、经营状态非必填和模板表头变更。

## 验证方案

- 执行定向测试：
  `mvn -pl ccdi-info-collection -am -Dsurefire.failIfNoSpecifiedTests=false -Dtest=CcdiEnterpriseBaseInfoServiceImplTest,CcdiEnterpriseBaseInfoImportServiceImplTest,EasyExcelUtilTemplateTest test`
- 通过真实后端接口验证：
  - 新增不传 `dataSource`、不传 `status` 仍可成功
  - 查询结果中 `dataSource=MANUAL`
  - 删除测试数据成功
- 下载导入模板并核对首行表头：
  - 包含 `经营状态`
  - 不包含 `数据来源`

## 风险与注意事项

- 当前工作区存在其他未提交改动，本次仅处理实体库管理相关文件，不回退无关内容。
- 导入模板对象同时承担导入解析职责，本次变更后模板和导入字段保持一致。
