# 生产上线初始化 SQL 生成实施记录

## 保存路径确认

- 生产初始化 SQL：`sql/ccdi_prod_init_20260428.sql`
- 实施记录：`docs/reports/implementation/2026-04-28-production-init-sql-implementation.md`

## 修改内容

- 新增 `sql/ccdi_prod_init_20260428.sql`，用于生产空库初始化。
- SQL 内容包含当前 `ccdi` 库最终态的 57 张表结构。
- SQL 必要数据范围：
  - 若依基础配置、部门、岗位、用户、角色、菜单、角色菜单、字典、定时任务、公告。
  - CCDI 默认模型参数，仅包含 `ccdi_model_param.project_id = 0` 的系统默认参数。
  - 流水打标规则 `ccdi_bank_tag_rule`。
- SQL 不包含运行期业务数据：
  - 项目、员工、流水、导入记录、风险结果、采购事项、实体库、中介库、操作日志、登录日志等数据均保持空表。
- 将导出结构中的非规范排序规则统一修正为 `utf8mb4_general_ci`，未保留 `utf8mb4_0900_ai_ci`。
- 针对生产执行时报错 `Specified key was too long; max key length is 767 bytes`，按生产要求删除旧库 767 bytes 限制下会超长的索引定义，保留字段长度、表结构和必要初始化数据不变。
- 删除的超长索引范围：
  - Quartz 表中的长字符复合主键和依赖这些长字符复合键的外键索引。
  - `ccdi_account_info.idx_ccdi_account_info_account_no`。
  - `ccdi_asset_info.idx_family_person`。
  - `ccdi_bank_statement.uk_bank_statement_dedup`。
  - `ccdi_bank_statement.idx_batch_id_account`。
  - `ccdi_bank_statement.c4c_bank_statement_stg_batch_id_IDX`。
  - `ccdi_bank_statement_tag_result.uk_ccdi_bank_tag_object_hit`。
  - `ccdi_enterprise_base_info.idx_enterprise_name`。
  - `ccdi_evidence.idx_ccdi_evidence_source`。
  - `ccdi_model_param.uk_project_model_param`。
  - `ccdi_project.idx_project_name`。

## 验证情况

- 使用本机临时 MySQL 实例导入 `sql/ccdi_prod_init_20260428.sql` 验证通过。
- 导入后验证结果：
  - 表数量：57。
  - 非 `utf8mb4_general_ci` 表数量：0。
  - 基础数据行数：
    - `sys_config`：8。
    - `sys_dept`：10。
    - `sys_dict_type`：26。
    - `sys_dict_data`：98。
    - `sys_menu`：166。
    - `sys_role`：2。
    - `sys_role_menu`：134。
    - `sys_user`：3。
    - `sys_job`：3。
    - `sys_notice`：2。
    - `ccdi_bank_tag_rule`：35。
    - `ccdi_model_param`：17，且全部为 `project_id = 0`。
  - 业务数据抽查为空：
    - `ccdi_project`：0。
    - `ccdi_base_staff`：0。
    - `ccdi_bank_statement`：0。
    - `ccdi_file_upload_record`：0。
    - `ccdi_purchase_transaction`：0。
- 测试完成后已关闭本机临时 MySQL 实例。
- 生产索引长度修复后，再次计算脚本内所有剩余索引长度，确认超过 767 bytes 的索引数量为 0。
- 删除超长索引后，再次使用本机临时 MySQL 实例导入验证通过：
  - 表数量：57。
  - 非 `utf8mb4_general_ci` 表数量：0。
  - `ccdi_model_param`：17。
  - `ccdi_bank_tag_rule`：35。
  - `sys_menu`：166。
  - `ccdi_project`：0。
  - `ccdi_bank_statement`：0。

## 执行说明

- 目标生产库需为空库。
- 目标库字符集和排序规则建议使用：

```sql
CREATE DATABASE ccdi DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
```

- 导入时需使用 `utf8mb4` 会话字符集。
