文件
hl-api-changelog/changelogs-v2/2026-08/24_6273_供应商审批记录补充供应商编号-修改接口-管理后台.md
2026-08-24 21:25:43 +08:00

6.5 KiB

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 6273 供应商审批记录补充供应商编号 admin lc(GIT) 修改接口 deployed verified verified mmg a46da334 2026-08-24 PR #6274 已合并 dev-v3,合并提交 588573ae4 已随 Resource 双实例滚动部署到 TEST。审批记录分页项新增当前供应商编号 supplierNo;既有目标字段、脱敏字段、权限、分页和闭区间时间筛选保持不变。管理端列展示和自然日边界组装仍待前端交付。 2026-08-24 dev-v3

供应商审批记录补充供应商编号

供应商详情的审批记录分页项新增当前供应商编号 supplierNo,供管理端直接展示。此次是向后兼容的响应扩展,不删除或重命名既有字段,也不改变查询、权限和脱敏语义。

变更接口

方法 路径 权限 行为变化
GET /admin/supplier/items/{supplierId}/approval-records/page supplier:approval:read 每条分页记录新增 supplierNo

请求参数、分页外壳和排序规则均未变化。

新增响应字段

字段 类型 空值语义 说明
supplierNo String / null 尚未生成编号的草稿返回 null 当前供应商编号,直接来自供应商主体档案;不能从供应商 ID、审计 JSON 或展示摘要推导

典型分页项如下;示例值仅说明字段结构:

{
  "supplierId": "2091715622923657217",
  "supplierNo": "SUP2091715622923657217",
  "supplierName": "示例供应商",
  "supplierTypes": [],
  "operationType": "UPDATE",
  "targetType": "SUPPLIER",
  "targetId": null,
  "oldValueMasked": "统一社会信用代码:****",
  "newValueMasked": "统一社会信用代码:****",
  "changeReason": "提交注册前保存完整表单",
  "status": "草稿",
  "operatorName": "示例管理员",
  "operatorRole": "超级管理员",
  "createTime": "2026-08-24 10:34:34"
}

保持兼容的字段与行为

  • targetType 和 targetId 继续返回;管理端可以隐藏“目标类型”列,但不能把前端隐藏等同于删除接口字段。
  • oldValueMasked 和 newValueMasked 继续返回脱敏后的业务摘要。管理端表头可简化为“变更前”“变更后”,但不得改为读取或展示未脱敏数据。
  • page、pageSize、operationType、status、from、to、sortBy 和 sortDirection 的请求约束不变。
  • 查询仍使用 createTime >= from AND createTime <= to 的闭区间语义;服务端不替客户端推导自然日边界。
  • 认证方式、supplier:approval:read 权限、管理员数据范围、排序、错误码、Gateway 路由和统一 Result<T> 外壳均未变化。
  • 不新增数据库 migration,不修改配置、Redis、MQ、审批状态机、审计写入或跨服务契约。

管理端待办

  1. 在审批记录表格最前面增加“供应商编号”列,绑定 supplierNo;空值显示 —。
  2. 隐藏“目标类型”列,但保留接口兼容字段,不要求后端删除 targetType。
  3. 将“变更前(脱敏)”“变更后(脱敏)”表头改为“变更前”“变更后”;单元格仍绑定 oldValueMasked、newValueMasked。
  4. 日期查询开始值组装为当天 00:00:00,结束值组装为当天 23:59:59,并在查询条件变化后重置到第 1 页。

若选择同一天,不能把开始和结束都提交为 00:00:00。例如查询 2026-08-24 应提交:

from=2026-08-24 00:00:00
to=2026-08-24 23:59:59

错误与边界语义

场景 结果
from 晚于 to 参数校验失败,消息为 from不能晚于to
只传 from 或只传 to 参数校验失败,时间边界必须成对提交
未认证 统一响应 code=401、success=false;HTTP 状态可能仍为 200
无读取权限或超出数据范围 服务端拒绝查询,不返回审批记录
筛选结果为空 返回空分页,records=[],不返回 null

验证证据

  • 自动化:供应商审批记录 Controller、投影和查询聚焦测试 16 项零失败;Resource 全量 1954 项零失败,38 项仓库既有条件跳过。
  • 部署:TEST 部署任务 32288c37 成功、退出码 0;hl-resource-service 的 8182、8082 双实例依次启动并健康。部署服务器 HEAD 435ae0a86 包含目标合并提交 588573ae4 和功能提交 9cf77177c。
  • 真实 Gateway:使用现有有效超级管理员登录态查询 4 条审批记录,每条均返回当前 supplierNo;targetType、targetId、oldValueMasked 和 newValueMasked 同时保留,脱敏摘要仍包含掩码。
  • 分页兼容:请求 page=1&pageSize=2 返回 2 条记录、总数 4,新增字段不改变分页外壳。
  • 时间边界:同一自然日 00:00:00 至 23:59:59 返回 4 条;旧前端把结束值提交为 00:00:00 时返回 0 条,证明日期问题来自客户端结束边界组装。
  • 参数门禁:反向时间范围被拒绝并返回 from不能晚于to。
  • 认证门禁:不携带 Authorization 经 TEST Gateway 查询,返回 HTTP 200、业务码 401、success=false;该结果仅作为负向门禁验证,不计作正向验收。
  • 清理:本次 TEST 验收只执行只读分页查询,未产生数据库、Redis、MQ、文件或外部业务副作用,无需测试数据清理。

撤回

  1. 先停止发布或回退依赖 supplierNo 的管理端版本,避免后端字段回退后出现空列。
  2. 从最新 dev-v3 创建回退分支,执行 git revert -m 1 --no-edit 588573ae4ae016829d90dbb365f5c8ec3df981f0,经独立 PR 合入。
  3. 重新构建并滚动部署 hl-resource-service;无需恢复数据库、配置、Redis 或 MQ,没有不可逆数据影响。
  4. 回退后接口不再保证返回 supplierNo;复测原有分页、权限、数据范围、脱敏字段、目标字段、排序和闭区间时间筛选。
  5. 撤回本 Changelog 时,以新的文档提交删除本文件或明确标记撤回,并通知管理端停止消费新增字段;不要重写已发布提交历史。

关联 / 联系人