Files
ccdi/docs/reports/implementation/2026-07-03-bank-upload-filename-validation.md

45 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 上传流水文件名校验实施记录
## 基本信息
- 实施日期2026-07-03
- 实施范围:项目详情上传数据页对应的后端批量上传接口 `/ccdi/file-upload/batch`
- 需求范围:过滤上传流水文件名中的空白字符;文件名主干缺少 18 位身份证号片段时拦截上传
## 修改内容
- `CcdiFileUploadController`
- 批量上传入口只保留项目 ID、文件数量、空文件和文件大小校验。
- 文件名、扩展名和身份证号片段校验统一交给 Service避免 controller 与 service 规则不一致。
- `CcdiFileUploadServiceImpl`
- 新增上传文件名归一化:空文件名按空字符串处理,移除半角空白与全角空格。
- 在保存临时文件和创建上传记录前,先完成整批文件名校验。
- 归一化后的文件名用于上传记录 `fileName`、临时文件名后缀和流水平台 multipart filename。
- 文件名主干必须包含 `(?<!\d)\d{17}[0-9Xx](?!\d)` 命中的身份证号片段。
- `CcdiFileUploadServiceImplTest``CcdiFileUploadControllerTest`
- 新增文件名去空格、无身份证号拦截、空白文件名拦截和 controller 下沉校验测试。
- 将 controller 测试从 static mock 调整为真实 `SecurityContextHolder` 登录用户。
- 对齐当前“上传数据删除不调用流水分析平台删除接口”的既有实现断言。
## 验证情况
```bash
mvn -pl ccdi-project -am -Dtest=CcdiFileUploadServiceImplTest,CcdiFileUploadControllerTest -Dsurefire.failIfNoSpecifiedTests=false test
```
- 结果BUILD SUCCESS
- 覆盖Controller 批量上传入口、Service 文件名归一化与保存前拦截、既有上传/删除相关单元测试。
```bash
mvn -pl ccdi-project -am -DskipTests compile
```
- 结果BUILD SUCCESS
- 覆盖:`ccdi-project` 及依赖模块编译通过。
## 范围说明
- 未修改前端页面。
- 未修改流水平台响应 DTO。
- 未修改 `CcdiBankStatement.fromResponse``ccdi_bank_statement` 落库逻辑。