safety-eval-service/docs/db-diff/README.md

88 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 本地库 vs 线上库 结构差异分析报告
| 项目 | 信息 |
| --- | --- |
| 本地库 | `192.168.20.100:33080` / `safety-eval-service` |
| 线上库 | `nlb-kd2xz70qhllfet2koj.cn-beijing.nlb.aliyuncsslb.com:33068` / `safety-eval-service` |
| 分析时间 | 2026-08-11 |
| 执行动作 | 仅 `SELECT information_schema` 只读查询,**未对线上做任何变更** |
## 一、总体结论
| 检查项 | 结果 |
| --- | --- |
| 本地表数 / 线上表数 | 60 / 60 |
| 线上缺表 | **0** |
| 线上多表 | 0 |
| 线上缺字段 | **8**(全部集中在 `org_info` |
| 线上多字段 | 0 |
| 字段定义不一致 | **3** |
| 线上缺索引 | 0 |
整体差异很小,核心问题是 `org_info` 表缺少一批「原型 V1.6」新增字段。
## 二、线上缺失字段(`org_info`8 个)
均为可空、无默认值,补齐对存量数据无影响。
| 字段 | 类型 | 可空 | 说明 |
| --- | --- | --- | --- |
| `qualification_cert_no` | varchar(100) | 是 | 资质证书编号 |
| `fax` | varchar(20) | 是 | 传真 |
| `contact_name` | varchar(50) | 是 | 联系人(由 `contact_name_phone` 拆分) |
| `contact_phone` | varchar(20) | 是 | 联系电话(由 `contact_name_phone` 拆分) |
| `contact_name_phone` | varchar(100) | 是 | 联系人及电话 |
| `fixed_assets_total` | decimal(16,4) | 是 | 固定资产总值(万元) |
| `apply_business_scope` | varchar(500) | 是 | 拟申请的法定安全评价业务范围 |
| `org_intro` | text | 是 | 单位基本情况介绍 |
> 注:本地同时存在拆分后的 `contact_name` / `contact_phone` 与合并的 `contact_name_phone`,属于过渡期并存。是否三者全部上线,建议结合业务代码确认后再定。
## 三、字段定义不一致3 处)
### 1. `eval_process_control.reviewer_signature_task_status` — 可安全对齐
仅注释文案不同,类型 `varchar(64)`、`NOT NULL`、默认值 `non_dispatched` 均一致。
- 线上:`审核签字任务状态 ...`
- 本地:`过程控制审核签字任务状态 ...`
### 2 & 3. `org_info` 两个行业类别字段 — 存在数据截断风险,不建议改线上
| 字段 | 线上 | 本地 |
| --- | --- | --- |
| `safety_industry_category_code` | varchar(512) | varchar(32) |
| `safety_industry_category_name` | varchar(1024) | varchar(50) |
**线上字段比本地更宽**,而非缺失或落后。实测线上存量数据:
| 字段 | 最大长度 | 超出本地长度的行数 |
| --- | --- | --- |
| `safety_industry_category_code` | 110 | 2 行 > 32 |
| `safety_industry_category_name` | 57 | 1 行 > 50 |
本地对应数据最大长度仅 25 / 14说明本地只是从未触发过加宽需求。
**结论:若按本地定义收窄线上,会直接截断线上真实数据,造成不可逆丢失。**
正确做法是反向对齐——把本地改宽到与线上一致,相关语句已在 SQL 文件第五节给出。
## 四、索引
线上不存在缺失索引,无需处理。
## 五、交付物
| 文件 | 用途 |
| --- | --- |
| `online_schema_upgrade.sql` | 升级 SQL含备份、执行、校验风险项已注释隔离 |
| `schema_diff.json` | 结构化差异明细 |
| `compare_schema.py` | 只读对比脚本,可重复执行复核 |
## 六、执行建议
1. 先备份 `org_info`SQL 第一节)。
2. 执行第二节补字段、第三节对齐注释——这两项无数据风险。
3. 第四节保持注释状态,**不要在线上执行**。
4. 第五节在本地库执行,消除最后的长度差异。
5. 用第六节语句校验结果。