修订实体库自动补入设计文档
This commit is contained in:
@@ -28,7 +28,7 @@
|
|||||||
- 改造招投标信息维护新建、导入链路中的供应商实体补入
|
- 改造招投标信息维护新建、导入链路中的供应商实体补入
|
||||||
- 新增企业来源 `SUPPLIER=供应商`
|
- 新增企业来源 `SUPPLIER=供应商`
|
||||||
- 保证中介库管理新增、导入实体时风险等级默认为高风险
|
- 保证中介库管理新增、导入实体时风险等级默认为高风险
|
||||||
- 补充对应后端、前端、SQL 与测试文档
|
- 补充对应后端、前端与测试文档
|
||||||
|
|
||||||
### 2.3 非本次范围
|
### 2.3 非本次范围
|
||||||
|
|
||||||
@@ -88,64 +88,22 @@
|
|||||||
- 供应商明细包含供应商名称和统一信用代码
|
- 供应商明细包含供应商名称和统一信用代码
|
||||||
- 当前不会补入实体库
|
- 当前不会补入实体库
|
||||||
|
|
||||||
## 4. 方案对比
|
## 4. 实现方案
|
||||||
|
|
||||||
### 4.1 方案 A:新增后端内部实体库自动补全服务
|
### 4.1 新增后端内部实体库自动补全服务
|
||||||
|
|
||||||
做法:
|
本次采用单一路径实现:
|
||||||
|
|
||||||
- 新增一个内部复用能力,统一接收统一社会信用代码、企业名称、企业来源、数据来源和操作人
|
- 新增一个内部复用能力,统一接收统一社会信用代码、企业名称、企业来源、数据来源和操作人
|
||||||
- 各业务 Service 在成功落业务数据前调用
|
- 各业务 Service 在成功落业务数据前调用
|
||||||
- 已存在则不处理,不存在则插入最小实体记录
|
- 已存在则不处理,不存在则插入最小实体记录
|
||||||
|
|
||||||
优点:
|
采用该方案的原因:
|
||||||
|
|
||||||
- 规则集中,避免四处重复
|
- 规则集中,避免四处重复
|
||||||
- 新建与导入可复用同一口径
|
- 新建与导入可复用同一口径
|
||||||
- 后续新增业务来源时扩展点明确
|
- 后续新增业务来源时扩展点明确
|
||||||
|
|
||||||
缺点:
|
|
||||||
|
|
||||||
- 需要各业务链路接入该内部服务
|
- 需要各业务链路接入该内部服务
|
||||||
|
|
||||||
### 4.2 方案 B:各业务 Service 内分别查询和插入实体库
|
|
||||||
|
|
||||||
做法:
|
|
||||||
|
|
||||||
- 在每个业务 Service 中独立编写实体库查询和插入逻辑
|
|
||||||
|
|
||||||
优点:
|
|
||||||
|
|
||||||
- 单个文件内改动直观
|
|
||||||
|
|
||||||
缺点:
|
|
||||||
|
|
||||||
- 重复逻辑多
|
|
||||||
- 来源、风险等级、并发重复处理容易不一致
|
|
||||||
- 后续维护成本高
|
|
||||||
|
|
||||||
### 4.3 方案 C:数据库层通过 `INSERT IGNORE` 或 `ON DUPLICATE KEY` 处理
|
|
||||||
|
|
||||||
做法:
|
|
||||||
|
|
||||||
- 导入和新建时组装实体记录,直接通过 SQL 忽略重复或重复更新
|
|
||||||
|
|
||||||
优点:
|
|
||||||
|
|
||||||
- 批量性能好
|
|
||||||
|
|
||||||
缺点:
|
|
||||||
|
|
||||||
- 业务语义沉入 SQL
|
|
||||||
- 新建和导入仍需额外分支
|
|
||||||
- 容易误更新已存在实体
|
|
||||||
|
|
||||||
### 4.4 选型结论
|
|
||||||
|
|
||||||
采用方案 A。
|
|
||||||
|
|
||||||
原因:
|
|
||||||
|
|
||||||
- 满足最短路径实现
|
- 满足最短路径实现
|
||||||
- 业务规则集中可测
|
- 业务规则集中可测
|
||||||
- 不改变前端交互
|
- 不改变前端交互
|
||||||
@@ -169,12 +127,12 @@
|
|||||||
| `social_credit_code` | 来源业务中的统一社会信用代码 |
|
| `social_credit_code` | 来源业务中的统一社会信用代码 |
|
||||||
| `enterprise_name` | 来源业务中的企业名称或供应商名称 |
|
| `enterprise_name` | 来源业务中的企业名称或供应商名称 |
|
||||||
| `ent_source` | 按业务来源映射 |
|
| `ent_source` | 按业务来源映射 |
|
||||||
| `risk_level` | 仅中介来源默认为 `1`,其他来源为空 |
|
| `risk_level` | 仅中介来源默认为 `1`,其他来源按 `NULL` 落库 |
|
||||||
| `data_source` | 新建为 `MANUAL`,导入为 `IMPORT` |
|
| `data_source` | 新建为 `MANUAL`,导入为 `IMPORT` |
|
||||||
| `created_by` | 当前操作人 |
|
| `created_by` | 当前操作人 |
|
||||||
| `updated_by` | 当前操作人 |
|
| `updated_by` | 当前操作人 |
|
||||||
|
|
||||||
其他实体字段保持为空。
|
其他实体字段保持为空。自动补入能力必须使用独立插入路径,不复用实体库管理手工新增中要求风险等级必填的校验逻辑;员工亲属、信贷客户、供应商三类自动补入记录必须显式保证 `risk_level` 按 `NULL` 落库,不能吃到历史表默认低风险值。
|
||||||
|
|
||||||
### 5.3 企业来源映射
|
### 5.3 企业来源映射
|
||||||
|
|
||||||
@@ -187,12 +145,11 @@
|
|||||||
| 信贷客户实体关联 | `CREDIT_CUSTOMER` | 空 |
|
| 信贷客户实体关联 | `CREDIT_CUSTOMER` | 空 |
|
||||||
| 招投标供应商 | `SUPPLIER` | 空 |
|
| 招投标供应商 | `SUPPLIER` | 空 |
|
||||||
|
|
||||||
需要新增企业来源枚举和字典:
|
需要新增企业来源枚举:
|
||||||
|
|
||||||
- 编码:`SUPPLIER`
|
- `SUPPLIER("SUPPLIER", "供应商")`
|
||||||
- 名称:`供应商`
|
|
||||||
|
|
||||||
实体库管理页面应能正常显示和筛选“供应商”。
|
企业来源选项由现有 `EnterpriseSource` 枚举接口下发,实体库管理页面应通过该接口正常显示和筛选“供应商”。
|
||||||
|
|
||||||
### 5.4 同批重复规则
|
### 5.4 同批重复规则
|
||||||
|
|
||||||
@@ -316,17 +273,15 @@
|
|||||||
|
|
||||||
自动补入实体库时,企业名称为空或超过长度不单独新增兜底规则,沿用各业务现有字段校验结果。
|
自动补入实体库时,企业名称为空或超过长度不单独新增兜底规则,沿用各业务现有字段校验结果。
|
||||||
|
|
||||||
## 9. 前端与字典
|
## 9. 前端与枚举
|
||||||
|
|
||||||
前端不新增交互。
|
前端不新增交互。
|
||||||
|
|
||||||
需要同步新增或调整:
|
需要同步新增或调整:
|
||||||
|
|
||||||
- 企业来源枚举新增 `SUPPLIER=供应商`
|
- 后端 `EnterpriseSource` 枚举新增 `SUPPLIER("SUPPLIER", "供应商")`
|
||||||
- 字典数据新增供应商选项
|
- 现有企业来源枚举接口应返回供应商选项
|
||||||
- 实体库管理页面企业来源下拉、列表、详情中的枚举展示能正确显示“供应商”
|
- 实体库管理页面企业来源下拉、列表、详情中的枚举展示应能正确显示“供应商”
|
||||||
|
|
||||||
如果当前前端企业来源完全来自字典接口,则只需补 SQL 字典;如果存在本地枚举映射,则同步补充映射。
|
|
||||||
|
|
||||||
## 10. 测试设计
|
## 10. 测试设计
|
||||||
|
|
||||||
@@ -338,6 +293,8 @@
|
|||||||
- 员工亲属实体关联导入:成功行补入实体库,失败行不补
|
- 员工亲属实体关联导入:成功行补入实体库,失败行不补
|
||||||
- 中介实体关联新建:实体库无记录时补入 `INTERMEDIARY`,风险为 `1`
|
- 中介实体关联新建:实体库无记录时补入 `INTERMEDIARY`,风险为 `1`
|
||||||
- 中介实体关联导入:原实体不存在场景由失败改为成功
|
- 中介实体关联导入:原实体不存在场景由失败改为成功
|
||||||
|
- 中介库管理新增实体:未填写风险等级时写入 `riskLevel=1`
|
||||||
|
- 中介库管理导入实体:成功记录写入 `riskLevel=1`
|
||||||
- 信贷客户实体关联新建:实体库无记录时补入 `CREDIT_CUSTOMER`,风险为空
|
- 信贷客户实体关联新建:实体库无记录时补入 `CREDIT_CUSTOMER`,风险为空
|
||||||
- 信贷客户实体关联导入:成功行补入实体库,失败行不补
|
- 信贷客户实体关联导入:成功行补入实体库,失败行不补
|
||||||
- 招投标新建:供应商统一信用代码存在时补入 `SUPPLIER`,风险为空
|
- 招投标新建:供应商统一信用代码存在时补入 `SUPPLIER`,风险为空
|
||||||
@@ -345,6 +302,7 @@
|
|||||||
- 已存在实体不覆盖原有名称、来源、风险等级、数据来源
|
- 已存在实体不覆盖原有名称、来源、风险等级、数据来源
|
||||||
- 同批重复统一社会信用代码只补一次,首次名称生效
|
- 同批重复统一社会信用代码只补一次,首次名称生效
|
||||||
- 并发或插入重复时按已存在处理
|
- 并发或插入重复时按已存在处理
|
||||||
|
- 员工亲属、信贷客户、招投标供应商自动补入记录的 `risk_level` 为 `NULL`
|
||||||
|
|
||||||
### 10.2 前端测试
|
### 10.2 前端测试
|
||||||
|
|
||||||
@@ -367,7 +325,7 @@
|
|||||||
|
|
||||||
## 11. 实施文档要求
|
## 11. 实施文档要求
|
||||||
|
|
||||||
本次功能涉及后端服务、SQL 字典和前端枚举展示,因此后续实施计划需要拆分:
|
本次功能涉及后端服务、企业来源枚举和前端枚举展示,因此后续实施计划需要拆分:
|
||||||
|
|
||||||
- 后端实施计划:`docs/plans/backend/`
|
- 后端实施计划:`docs/plans/backend/`
|
||||||
- 前端实施计划:`docs/plans/frontend/`
|
- 前端实施计划:`docs/plans/frontend/`
|
||||||
|
|||||||
Reference in New Issue
Block a user