93 行
4.8 KiB
Markdown
93 行
4.8 KiB
Markdown
---
|
|
schema: "hl-changelog/v2"
|
|
ticket: "6241"
|
|
title: "供应商资质类型字典化及证件编号公司级校验"
|
|
consumer: "admin"
|
|
author: "lc(GIT)"
|
|
change_type: "修改接口"
|
|
backend_status: "deployed"
|
|
gateway_status: "verified"
|
|
frontend_status: "verified"
|
|
frontend_owner: "mmg"
|
|
frontend_ref: "a3ef713b"
|
|
target_release: ""
|
|
verified_at: "2026-08-24"
|
|
status_note: "PR #6254 已合并 dev-v3,合并提交 b17ace883 已随 Resource 双实例滚动部署到 TEST。供应商新增、编辑和提交统一校验 company_qualification_type 生效字典值及证件编号通用安全格式;权威/国家核验按确认口径降级为公司级校验。"
|
|
updated_at: "2026-08-24"
|
|
base: "dev-v3"
|
|
---
|
|
|
|
# 供应商资质类型字典化及证件编号公司级校验
|
|
|
|
供应商资质写入不再接受任意资质类型。新增、编辑和提交均以 User 服务的 `company_qualification_type` 生效项为准,并通过公共校验组件统一处理证件编号。
|
|
|
|
本次“核验”仅表示输入符合公司系统的格式和安全约束,不代表证照真实存在,也不声明已通过国家平台或第三方权威核验。
|
|
|
|
## 变更接口
|
|
|
|
| 方法 | 路径 | 行为变化 |
|
|
|---|---|---|
|
|
| POST | `/admin/supplier/items/add` | 显式资质类型必须是生效字典值;草稿证件编号可空,非空时校验通用格式 |
|
|
| PUT | `/admin/supplier/items/{supplierId}/update` | 新增或显式修改的资质类型、证件编号执行同一规则;未传类型的历史资质保持兼容 |
|
|
| POST | `/admin/supplier/items/{supplierId}/submit` | 提交时每项资质必须有合法证件编号;营业执照快捷影像也受字典门禁约束 |
|
|
|
|
请求和响应字段结构未变化。`qualType` 仍提交字符串,但其值必须来自:
|
|
|
|
`GET /admin/dict/data/company_qualification_type`
|
|
|
|
当前 TEST 已启用以下五项:
|
|
|
|
| 字典值 | 标签 |
|
|
|---|---|
|
|
| `BUSINESS_LICENSE` | 营业执照 |
|
|
| `INDUSTRY_LICENSE` | 行业经营许可证 |
|
|
| `FOOD_OPERATION_LICENSE` | 食品经营许可证 |
|
|
| `PUBLIC_HEALTH_LICENSE` | 公共场所卫生许可证 |
|
|
| `FIRE_SAFETY_CERTIFICATE` | 消防安全证明 |
|
|
|
|
## 证件编号规则
|
|
|
|
- 自动去除首尾空白,最大为 128 个 UTF-8 字节。
|
|
- 允许 Unicode 字母、数字及常见中英文证照分隔符。
|
|
- 排除空白、控制字符及可组成 HTML 标签的半角尖括号。
|
|
- 草稿允许为空;提交审批时每项资质必须填写。
|
|
- 读取仍只返回脱敏证件号,不返回明文。
|
|
|
|
## 新增业务错误码
|
|
|
|
| 错误码 | 含义 | 前端处理建议 |
|
|
|---:|---|---|
|
|
| `395040` | 资质类型不合法或已停用 | 刷新 `company_qualification_type` 字典并要求用户重新选择 |
|
|
| `395041` | 证件编号格式不合法 | 保留表单,提示用户修正编号;提交场景同时检查是否为空 |
|
|
|
|
业务失败可能仍使用 HTTP 200,客户端必须同时判断统一响应的 `code`、`success` 和 `data`。
|
|
|
|
## 兼容性与前端事项
|
|
|
|
- 不新增数据库 migration、配置、Redis、MQ 或跨服务写入。
|
|
- 既有历史自由文本资质可以读取;编辑既有项且不传 `qualType` 时不会被强制改写。
|
|
- 前端应将资质类型自由输入改为 `company_qualification_type` 字典选择,并只提交 `dictValue`。
|
|
- 前端无需修改字段名、JSON 类型或接口路径。
|
|
|
|
## 验证证据
|
|
|
|
- 自动化:Resource 全量 1925 项零失败(38 项仓库既有条件跳过);#6241 定向 35 项零失败;独立审计 48 项零失败。
|
|
- 部署:TEST 部署任务退出码 0,`hl-resource-service` 的 8182、8082 双实例依次健康;服务器部署 HEAD `04a6dba66` 明确包含合并提交 `b17ace883` 和功能提交 `bc899930e`。
|
|
- 真实 Gateway:非法资质类型返回“资质类型不合法或已停用”,非法证件编号返回“证件编号格式不合法”,两次失败后列表仍为原 3 条。
|
|
- 真实 Gateway:使用五个生效字典值和多种常见编号格式成功创建草稿;详情页五个证件号均为脱敏值。
|
|
- 清理:TEST 草稿删除成功,供应商列表恢复原 3 条,未留下测试数据。
|
|
|
|
## 撤回
|
|
|
|
1. 从最新 `dev-v3` 创建回退分支,revert #6254 合并提交 `b17ace88399269710ea515e9b19e63a159b888c9`,经独立 PR 合入。
|
|
2. 重新构建并滚动部署 `hl-resource-service`;无需恢复数据库、User 字典、配置、Redis 或 MQ。
|
|
3. 回退后既有资质数据保持可读,不做数据回写;写接口会恢复为旧的自由文本行为。
|
|
4. 经 Gateway 重跑新增、编辑、提交、非法类型、非法编号和读取脱敏用例,并核对失败零写入。
|
|
|
|
## 关联 / 联系人
|
|
|
|
- **Issue**: [#6241](https://git.1814.love:8443/wx/HL/issues/6241)
|
|
- **PR**: [#6254](https://git.1814.love:8443/wx/HL/pulls/6254)
|
|
- **合并提交**: [b17ace883](https://git.1814.love:8443/wx/HL/commit/b17ace88399269710ea515e9b19e63a159b888c9)
|
|
- **后端负责人**: @lc
|