# 项目打标状态联动后端实施记录

## 本次改动

- 新增项目状态常量 `3-打标中`，并补齐初始化 SQL 与增量 SQL。
- 在项目服务中新增统一状态更新、打标准入校验、打标中写保护能力，并把状态统计扩展到 `status3`。
- 在银行流水打标主链路中接入项目状态流转：
  - 开始打标前置为 `3`
  - 打标成功后置为 `1`
  - 打标失败后回退为 `0`
- 在上传流水、拉取本行信息、参数保存链路中统一接入项目写保护，打标中直接拒绝写操作。
- 增补 SQL 基线测试、项目状态服务测试、打标状态流转测试、上传/参数写保护测试。

## 影响范围

- `sql/ccdi_project.sql`
- `sql/migration/2026-03-18-add-project-tagging-status.sql`
- `ccdi-project` 模块中的项目服务、打标服务、协调器、文件上传服务、模型参数服务及对应测试

## 验证结果

- 后端聚焦回归命令执行通过：

```bash
mvn -pl ccdi-project -Dtest=CcdiProjectServiceImplTest,CcdiBankTagServiceImplTest,ProjectBankTagRebuildCoordinatorTest,CcdiFileUploadServiceImplTest,CcdiModelParamServiceImplTest,CcdiProjectStatusSqlTest test
```

- 测试结果：`Tests run: 44, Failures: 0, Errors: 0, Skipped: 0`

## SQL 执行方式

- 联调或生产前执行状态增量脚本时，必须使用仓库脚本：

```bash
bin/mysql_utf8_exec.sh sql/migration/2026-03-18-add-project-tagging-status.sql
```

- 这样可以保证中文字典值“打标中”在 MySQL 会话中按 `utf8mb4` 正确写入，避免乱码。
