Files
ccdi/docs/plans/backend/2026-04-15-lsfx-mock-server-ccdi-account-info-abnormal-account-columns-migration-implementation.md
2026-04-17 10:18:13 +08:00

27 lines
1.6 KiB
Markdown

# LSFX Mock Server `ccdi_account_info` 异常账户字段补迁移后端实施文档
## 背景
- `lsfx-mock-server` 上传接口 `/watson/api/project/remoteUploadSplitFile` 在写入 `ccdi_account_info` 时使用了 `is_self_account``trans_risk_level` 字段。
- 当前开发库中的 `ccdi_account_info` 为历史表结构,不包含这两列,导致 `AbnormalAccountBaselineService.apply(...)` 执行 upsert 时依次抛出 `Unknown column 'is_self_account' in 'field list'``Unknown column 'trans_risk_level' in 'field list'`,上传接口直接返回 500。
## 本次修改
- 新增增量脚本 `sql/migration/2026-04-15-sync-ccdi-account-info-abnormal-account-columns.sql`
- 脚本以最短路径为已有 `ccdi_account_info` 表补齐异常账户同步当前必需的字段,并保持可重复执行:
- 使用 `information_schema.columns` 判断字段是否已存在
- 通过 `PREPARE / EXECUTE` 仅在缺列时执行 `ALTER TABLE`
- 补齐 `is_self_account``trans_risk_level`
- 列位置与当前写库 SQL 保持一致
- 新增回归测试 `lsfx-mock-server/tests/test_schema_migration_scripts.py`,锁定该增量脚本必须存在且包含两条补列语句。
## 验证
- `python3 -m pytest /Users/wkc/Desktop/ccdi/ccdi/lsfx-mock-server/tests/test_schema_migration_scripts.py -q`
- 使用 `bin/mysql_utf8_exec.sh` 执行增量脚本后,复查 `SHOW COLUMNS FROM ccdi_account_info`,确认存在 `is_self_account``trans_risk_level` 字段。
## 影响范围
- 仅影响 `lsfx-mock-server` 依赖的 `ccdi_account_info` 历史表结构补齐。
- 不修改接口协议,不改动前端。