schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base
| schema |
ticket |
title |
consumer |
author |
change_type |
backend_status |
gateway_status |
frontend_status |
frontend_owner |
frontend_ref |
target_release |
verified_at |
status_note |
updated_at |
base |
| hl-changelog/v2 |
6266 |
供应商审批记录业务展示字段调整 |
admin |
lc(GIT) |
修改接口 |
deployed |
verified |
verified |
mmg |
cd7fd4c4 |
|
|
PR #6270 已合并 dev-v3,合并提交 f14544fe0 已随 Resource 双实例滚动部署到 TEST。审批记录新增供应商名称、供应商类型、操作人姓名和审批角色,隐藏四个技术字段,并把变更前后值、状态和历史原因转换为中文脱敏业务展示。管理端需同步调整表格列和字段绑定。 |
2026-08-24 |
dev-v3 |
供应商审批记录业务展示字段调整
⚠️ 破坏性变更
供应商详情的审批记录响应改为面向业务展示:新增供应商名称、供应商类型、操作人姓名和审批角色;不再返回变更记录 ID、字段名、审批日志 ID 和操作人 ID。管理端必须按本契约调整表格列,不能继续依赖已移除字段。
变更接口
| 方法 |
路径 |
权限 |
行为变化 |
| GET |
/admin/supplier/items/{supplierId}/approval-records/page |
supplier:approval:read |
调整分页记录的响应字段和展示语义;请求参数、分页结构及权限不变 |
请求
GET 请求无请求体。
路径参数
| 参数 |
类型 |
必填 |
说明 |
supplierId |
String |
是 |
供应商 ID |
查询参数
| 参数 |
类型 |
必填 |
默认值 |
说明 |
page |
Integer |
否 |
1 |
页码,最小为 1;兼容别名 pageNo |
pageSize |
Integer |
否 |
20 |
每页条数,范围 1–100 |
approvalLogId |
String |
否 |
— |
按关联审批日志 ID 精确筛选;仅为请求筛选条件,响应不再回传该字段 |
operationType |
String |
否 |
— |
CREATE、UPDATE、ENABLE、DISABLE、DELETE |
targetType |
String |
否 |
— |
当前仅支持 SUPPLIER |
fieldName |
String |
否 |
— |
按历史变更字段精确筛选;仅为请求筛选条件,响应不再回传该字段 |
status |
String |
否 |
— |
以生命周期编码筛选:DRAFT、VETTING、ACTIVE、SUSPENDED、FROZEN、BLACKLIST、ARCHIVED |
from |
String |
否 |
— |
开始时间,格式 yyyy-MM-dd HH:mm:ss;必须与 to 同时传入 |
to |
String |
否 |
— |
结束时间,格式 yyyy-MM-dd HH:mm:ss;不得早于 from |
sortBy |
String |
否 |
createTime |
createTime 或 changeLogId |
sortDirection |
String |
否 |
DESC |
ASC 或 DESC,大小写均可 |
响应字段变化
新增字段
| 字段 |
类型 |
空值语义 |
说明 |
supplierName |
String |
供应商存在时非空 |
当前供应商法定全称 |
supplierTypes |
Array |
无类型时 [] |
当前供应商全部类型,主类型优先;typeCode 为字典值,typeName 为运行时中文名称 |
operatorName |
String |
不返回 null |
优先返回操作人的企微姓名,其次为用户名;系统记录显示 系统,人员信息暂不可用时显示 管理员#<ID> |
operatorRole |
String |
不返回 null |
审计发生时的角色快照中文名;空角色显示 系统,未知历史角色显示 其他角色(<CODE>) |
supplierTypes[] 元素结构:
| 字段 |
类型 |
说明 |
typeCode |
String |
供应商类型字典值 |
typeName |
String |
供应商类型中文名称 |
移除字段
| 原字段 |
前端处理 |
changeLogId |
删除“变更 ID”列及所有字段读取 |
fieldName |
删除“字段”列及所有字段读取;变更内容已经合并到中文摘要 |
approvalLogId |
删除“审批日志 ID”列及所有字段读取 |
operatorId |
改为展示 operatorName,不要再直接展示管理员 ID |
上述字段仅从响应记录中移除;approvalLogId、fieldName 和 sortBy=changeLogId 作为既有查询能力继续兼容。
保留字段与新语义
| 字段 |
类型 |
新语义 |
supplierId |
String |
供应商 ID |
operationType |
String |
操作类型编码保持不变 |
targetType |
String |
当前固定为 SUPPLIER |
targetId |
String / null |
主体变更记录为 null |
oldValueMasked |
String |
变更前的中文脱敏业务摘要,不再直接返回生命周期等原始编码 |
newValueMasked |
String |
变更后的中文脱敏业务摘要,不再直接返回生命周期等原始编码 |
changeReason |
String |
业务原因;已识别的历史注册记录同步校正为正确原因 |
status |
String / null |
变更后生命周期中文名,不再返回原始状态编码 |
createTime |
String |
yyyy-MM-dd HH:mm:ss |
生命周期展示值如下:
| 原编码 |
响应中文值 |
DRAFT |
草稿 |
VETTING |
注册审核中 |
ACTIVE |
合作中 |
SUSPENDED |
暂停合作 |
FROZEN |
已冻结 |
BLACKLIST |
黑名单 |
ARCHIVED |
已归档 |
审批角色常用展示值如下:
| 角色快照 |
operatorRole |
SUPER_ADMIN |
超级管理员 |
ADMIN |
管理员 |
FINANCE |
财务 |
OPERATOR |
运营人员 |
CUSTOMIZER |
定制师 |
HOUSEKEEPING_ADMIN |
房务管理员 |
LOGISTICS_ADMIN |
车务管理员 |
VEHICLE_MANAGER |
车辆管理员 |
历史注册链路中可明确识别的原因统一为:
| 场景 |
changeReason |
| 创建供应商草稿 |
创建供应商注册草稿 |
| 草稿提交注册审核 |
提交供应商注册审批 |
| 注册审批通过并启用 |
供应商注册审批通过并启用合作 |
典型成功响应
前端不能从示例中的名称、类型或状态推导固定值;供应商名称和类型取当前档案,状态、角色和变更内容由服务端提供中文展示。
边界响应
供应商存在但筛选条件下没有审批记录时返回空分页,不返回 null:
错误语义
| 场景 |
HTTP |
业务码 |
说明 |
| 缺少或无效认证 |
可能为 200 |
401 |
success=false;不能只判断 HTTP 状态 |
无可信管理员身份、角色或 supplier:approval:read 权限 |
403 |
403 |
拒绝查询,不返回审批记录 |
| 供应商不存在或已删除 |
200 |
395001 |
供应商不存在 |
| 查询枚举、分页或时间范围非法 |
200 |
400 |
返回对应参数校验消息 |
未认证示例:
脱敏与兼容约束
- 税号、联系电话、证件号和银行账号等敏感内容始终按字段语义重新脱敏;历史摘要也不会因旧数据格式而返回完整敏感值。
- 集合型资料只返回有界中文摘要;未知历史资料显示为安全的“其他资料:已变更”,客户端不要解析摘要反推结构化表单。
- 无变更值统一显示
—;前端直接展示服务端摘要,不再对 oldValueMasked、newValueMasked 或 status 做生命周期编码翻译。
supplierName 和 supplierTypes 是当前供应商档案信息,不是每次审批发生时的历史快照。
- 本次不修改请求参数、分页外壳、认证方式、权限码、Gateway 路由或操作类型编码。
管理端改造清单
- 隐藏“变更 ID”“字段”“审批日志 ID”列。
- 新增“供应商名称”“供应商类型”“操作人”“审批角色”列,分别绑定
supplierName、supplierTypes、operatorName、operatorRole。
- “变更前(脱敏)”“变更后(脱敏)”直接展示
oldValueMasked、newValueMasked,不再显示原始状态编码。
- “状态快照”直接展示中文
status;操作类型筛选仍提交既有英文编码。
- 删除对
changeLogId、fieldName、approvalLogId、operatorId 的响应依赖。
验证证据
- 自动化:审批记录投影与契约定向测试 22 项零失败;Supplier 聚焦回归 196 项零失败(1 项条件跳过);Resource 全量 1953 项零失败(38 项仓库既有条件跳过)。
- 部署:TEST 部署任务
73bfe0aa 成功、退出码 0;hl-resource-service 的 8182、8082 双实例依次启动并健康。部署服务器 HEAD 4de8e1703 包含目标合并提交 f14544fe0 和功能提交 bdcb48d78。
- 真实 Gateway:管理端开发代理明确指向
https://api.test.1814.love:9443;有效超级管理员查询得到 code=200、success=true 和 4 条真实审批记录。
- 响应断言:四个新增字段在每条记录中均存在,四个移除字段均不存在;变更前后摘要和状态未出现
DRAFT、VETTING、ACTIVE 等原始生命周期编码;操作人返回姓名、审批角色返回中文。
- 原因断言:同一供应商的创建、提交、审批通过记录分别返回正确中文业务原因。
- 认证门禁:直接经 TEST Gateway 不携带 Authorization 查询,返回 HTTP 200、业务码
401、success=false。
- 清理:本次 TEST 验收仅执行只读查询,未创建、修改或删除业务数据,无需数据清理。
撤回
- 从最新
dev-v3 创建回退分支,执行 git revert -m 1 --no-edit f14544fe0430ccafb7b74bca1ef43c080eabf491,经独立 PR 合入。
- 重新构建并滚动部署
hl-resource-service;无需恢复数据库、配置、Redis 或 MQ,也没有不可逆数据影响。
- 回退后审批记录会恢复旧响应字段和旧展示语义;管理端若已接入新字段,必须同步回退字段绑定,避免空列。
- 经 Gateway 复测成功分页、空分页、未认证、无权限、中文/旧编码展示、敏感字段脱敏和历史原因。
- 撤回本 Changelog 时,以新的文档提交删除本文件并通知管理端停止消费新契约;不要重写已发布提交历史。
关联 / 联系人