编辑 | blame | 历史 | 原始文档

溯源配置改为字典驱动 - 前端联调方案

背景

种子二维码标签的**追溯网址**、**生产经营者名称**此前只能改配置文件再重启服务。本次改为可在「系统管理 → 字典管理」的字典 mes_trace_config 中直接修改,改完约 1 分钟内生效。

接口路径与请求参数均无变化,仅 /mes/trace-config/qr-config 的响应新增一个字段 traceUrlSource。前端**不改造也能正常跑**(新字段可忽略),按需接入即可。

涉及页面

  • 生产批次管理 - 批次「查看二维码」弹窗
  • 袋码管理(赋码管理) - 袋码「查看二维码」弹窗
  • 托盘管理 - 托盘「查看二维码」弹窗
  • H5 扫码溯源页(消费者扫码后打开的页面)
  • 系统管理 → 字典管理(运维/业务修改配置的入口)

API

方法 路径 说明
GET /admin-api/mes/trace-config/qr-config 获得溯源 H5 页面基础地址(二维码内容前缀)

请求参数: 无(登录态即可访问)

响应字段新增:

字段 类型 说明
traceUrlSource String 追溯网址的实际生效来源,取值见下表

traceUrlSource 取值说明:

取值 含义 前端建议提示
DICT 取自字典,管理员在字典管理里配置的值已生效 无需提示
YAML 字典未配置该值,使用配置文件中的地址(正常回退) 无需提示
YAML_INVALID_DICT 字典里填了地址,但未通过合规校验(占位符 / 本机 / 内网地址),已回退配置文件 提示管理员去字典管理修正

响应示例:

{
  "code": 0,
  "data": {
    "traceBaseUrl": "http://1.95.78.124:9008/prod/trace.html",
    "traceUrlSource": "DICT"
  },
  "msg": ""
}

免登录接口(H5 溯源页使用)响应无变化:

方法 路径 说明
GET /public/mes/trace/config 溯源页配置(生产经营者名称、追溯网址)
GET /public/mes/trace/query 根据追溯码查询全程溯源信息

这两个接口返回的 traceUrl / operatorName 已自动跟随字典,**前端无需任何改动**。

数据带入说明

  1. 字典管理(运维修改「追溯网址」)→ 后端缓存 → 管理端「查看二维码」接口:修改后约 1 分钟内,traceBaseUrl 自动变为新值,traceUrlSource 变为 DICT。前端无需感知,每次打开弹窗拉一次即可。
  2. 「查看二维码」接口 → 二维码弹窗:traceBaseUrl 拼接追溯码生成二维码内容,与后端导出打印的标签**完全一致**(同源同值)。
  3. H5 溯源页配置接口 → 溯源页「追溯网址」展示:与标签印刷内容同源,扫码后页面展示的追溯网址与标签上印的一致。

字段展示规则

字段 展示位置 说明
traceBaseUrl 二维码弹窗(二维码内容前缀) 值为空时二维码回退为纯码值,不报错
traceUrlSource 二维码弹窗(可选,建议仅异常时提示) 仅当值为 YAML_INVALID_DICT 时建议给出告警文案
traceUrl H5 溯源页「追溯网址」 作为链接展示,可点击跳转
operatorName H5 溯源页「生产经营者名称」 进口种子场景展示的是进口商名称

业务规则说明

场景 规则
字典里配置了合法的追溯网址 标签、二维码、H5 页面、管理端预览全部使用字典值
字典项为空 / 被禁用 / 字典类型未创建 回退使用配置文件 mes.trace-base-url 的值,traceUrlSource 为 YAML
字典里的地址非法(占位符、localhost、内网 IP) 后端记 ERROR 日志并回退配置文件值,traceUrlSource 为 YAML_INVALID_DICT,**标签导出不中断**
字典与配置文件都拿不到追溯网址 导出标签时报错「未配置追溯网址,无法生成二维码标签」,拒绝导出
字典「字典标签」改名 会导致该项配置失效(代码按标签名匹配)。请提醒运维只改「字典键值」,不要改「字典标签」
修改字典后的生效时间 约 1 分钟(后端 60 秒本地缓存)。若为稀疏调用场景,可能需再触发一次查询或导出才切换

注意事项

  1. 本次前端零必改项:traceUrlSource 是可选的增强字段,不接入不影响任何功能。
  2. 追溯网址是种子标签国标四要素之一,一旦印出无法召回。前端**不要**在任何地方对追溯网址做兜底硬编码,一律以接口返回值为准。
  3. 二维码内容前缀必须与后端一致,前端拼接方式保持 traceBaseUrl + "?code=" + 编码后的码值 不变;traceBaseUrl 为空时回退为纯码值。
  4. 扫码枪扫到打印标签的完整 H5 链接时,后端会自动从链接中提取 code 参数,前端直接原样提交即可。
  5. allow-plain-qr-code(允许二维码编码纯码值)**有意未纳入字典**,仍由配置文件控制,不在前端暴露入口。
  6. 字典管理中「字典标签」(如「追溯网址」)是代码固定标识,不可改名;可编辑的是「字典键值」。