hl-api-changelog/changelogs-v2/2026-07/15_4997_订单详情推送记录-新增接口-管理后台.md

9.9 KiB

订单详情推送记录 - 新增接口 - 管理后台

日期2026-07-15 端类型:管理后台 服务:hl-order-service-v3 关联 Issue#4997 关联 PR#4998 关联提交:edd1d26da

1. 接口背景

订单详情页新增“推送记录”Tab,用于查看当前订单关联的短信、内部推送、企业微信、小程序订阅、公众号等通知发送记录。前端只调用订单服务的管理端接口,不直接调用用户中心内部通知日志接口。

2. 变更清单

类型 方法 路径 说明
新增接口 GET /v3/admin/order/{id}/push-records 按订单 ID 聚合返回订单相关通知发送记录和渠道统计。

本次没有新增前端必传字段,也没有调整已有接口字段。

3. 接口详情

接口 GET /v3/admin/order/{id}/push-records
认证 管理后台 JWT
权限边界 房务角色不可查看订单详情推送记录
幂等性 只读接口,重复调用不改变订单或通知日志状态
请求体
查询参数
返回结构 Result<OrderPushRecordRespVO>

4. 入参

Path 参数

字段 类型 必填 说明
id string 订单 ID,雪花 ID。前端按字符串透传,避免 JS 数字精度丢失。

Query 参数

无。

Body 参数

无。

5. 出参

Result 包装

字段 类型 说明
code number 业务状态码,成功为 200
message string 业务提示。
data object 推送记录聚合数据。
traceId string | null 链路 ID,按网关实际返回。
success boolean 是否成功。

data 字段

字段 类型 说明
total number 聚合后记录总数。
records array 推送记录列表,按 sentAt 倒序,同时间按 id 倒序。
summary object 渠道和失败数量统计。

records[] 字段

字段 类型 说明
id string 通知发送日志 ID,雪花 ID,前端按字符串处理。
eventCode string | null 通知事件编码,例如 CONTRACT_SIGN_SMS
channel string | null 原始渠道编码,展示和筛选优先使用 channelGroup / kind
channelName string 渠道展示名。
channelGroup string 归一化渠道分组,见枚举。
channelGroupName string 渠道分组展示名。
kind string 前端原型兼容分类,见枚举。
target string | null 接收人展示文本,通常为“接收人类型 + 接收人姓名/账号”。
recipientName string | null 接收人名称。
recipientType string | null 接收人类型。
recipient string | null 原始接收标识,例如手机号、openId、用户 ID 等。
content string | null 通知内容摘要或渲染后的消息内容。
status string 归一化状态,见枚举。
statusName string 状态展示名。
rawStatus number | null 通知日志原始状态码,见枚举。
failReason string | null 失败原因,成功或未失败时为空。
bizId string | null 关联业务 ID。可能是订单 ID,也可能是合同编号等关联业务号。
bizType string | null 关联业务类型,例如 ORDERCONTRACTINSURANCEHOUSE
serviceName string | null 记录来源服务。
sentAt string | null 发送日志创建时间,格式 yyyy-MM-dd HH:mm:ss

summary 字段

字段 类型 说明
all number 全部记录数。
sms number 短信记录数。
miniapp number 小程序订阅记录数。
officialAccount number 公众号记录数。
inapp number C 端站内信记录数。
internal number 管理后台内部推送记录数。
wework number 企业微信记录数。
other number 其他渠道记录数。
failed number status = FAILED 的记录数。

6. 枚举 / 数据字典

channelGroup

展示名 说明
SMS 短信 原始渠道 SMS
MINIAPP 小程序订阅 原始渠道 MINIAPP
OFFICIAL_ACCOUNT 公众号 原始渠道 OAOFFICIAL_ACCOUNT
INAPP 站内信 原始渠道 INAPP
INTERNAL 内部推送 原始渠道 ADMIN_INAPP
WEWORK 企业微信 原始渠道 WEWORKWECHAT_WORK
OTHER 其他 不能归入上述渠道的记录。

kind

建议展示分类
sms 短信
miniapp 小程序
wechat 微信/公众号
inapp 站内信
system 内部推送
wework 企业微信
other 其他

status / rawStatus

rawStatus status statusName
0 DELIVERED 已送达
1 FAILED 失败
2 FILTERED 已过滤
3 SKIPPED 已跳过
null 或其他值 UNKNOWN 未知

bizType

说明
ORDER 订单相关通知。
CONTRACT 合同相关通知。
INSURANCE 保险相关通知。
HOUSE 房务相关通知。

7. 错误码

code message 场景
200 成功 查询成功。没有记录时仍返回成功,total=0records=[]
581007 订单不存在 Path 中的订单 ID 不存在。
581045 房务角色无权查看订单详情,房务仅可配房 当前账号为房务角色。
平台通用鉴权错误码 按接口实际返回 未登录、Token 失效、无管理端权限等网关或安全框架错误。

8. 示例

8.1 典型成功响应

请求:

GET /v3/admin/order/2076936583562285058/push-records

响应:

{
  "code": 200,
  "message": "成功",
  "data": {
    "total": 1,
    "records": [
      {
        "id": "2076951776115793921",
        "eventCode": "CONTRACT_SIGN_SMS",
        "channel": "SMS",
        "channelName": "短信",
        "channelGroup": "SMS",
        "channelGroupName": "短信",
        "kind": "sms",
        "target": "其它 155****2307",
        "recipientName": "155****2307",
        "recipientType": "其它",
        "recipient": "155****2307",
        "content": "合同签署短信(创建首发)",
        "status": "DELIVERED",
        "statusName": "已送达",
        "rawStatus": 0,
        "failReason": null,
        "bizId": "MOCK-2076951776057044993",
        "bizType": "CONTRACT",
        "serviceName": "hl-order-service-v3",
        "sentAt": "2026-07-14 16:47:46"
      }
    ],
    "summary": {
      "all": 1,
      "sms": 1,
      "miniapp": 0,
      "officialAccount": 0,
      "inapp": 0,
      "internal": 0,
      "wework": 0,
      "other": 0,
      "failed": 0
    }
  },
  "traceId": null,
  "success": true
}

8.2 无推送记录响应

{
  "code": 200,
  "message": "成功",
  "data": {
    "total": 0,
    "records": [],
    "summary": {
      "all": 0,
      "sms": 0,
      "miniapp": 0,
      "officialAccount": 0,
      "inapp": 0,
      "internal": 0,
      "wework": 0,
      "other": 0,
      "failed": 0
    }
  },
  "traceId": null,
  "success": true
}

8.3 订单不存在

{
  "code": 581007,
  "message": "订单不存在",
  "data": null,
  "traceId": null,
  "success": false
}

9. 业务边界

  1. 这是订单详情只读接口,不推进订单状态,不触发补发通知。
  2. 当前聚合范围为订单相关通知:ORDERCONTRACTINSURANCEHOUSE,并兼容合同编号作为 CONTRACTbizId
  3. records 已由后端按通知日志 ID 去重,前端不需要再按 id 合并。
  4. records 为空是正常业务结果,前端展示空态即可。
  5. targetrecipientNamerecipient 可能包含手机号、openId 或内部用户标识,前端日志和埋点不要输出完整敏感信息。
  6. bizId 不保证等于订单 ID,合同通知可能返回合同编号或合同相关业务号。
  7. 原始渠道 channel 可能扩展,前端展示和筛选优先使用稳定字段 channelGroupchannelGroupNamekind

10. 修改前后对比

修改前 修改后
订单详情推送记录 无统一管理端查询接口,前端不能直接调内部通知日志接口 新增 GET /v3/admin/order/{id}/push-records,由订单服务聚合返回。
渠道分类 无统一前端字段 返回 channelGroupchannelGroupNamekind
统计 前端无数据来源 返回 summary,可直接用于 Tab 数量或筛选统计展示。

11. 影响评估 / 回滚

说明
兼容性 新增接口,不影响已有订单详情接口。
前端影响 订单详情“推送记录”Tab 可接入该接口;旧页面不接入则无影响。
后端影响 只读聚合用户中心通知日志,不写订单表和通知表。
回滚方式 回滚 hl-order-service-v3 对应 PR 后,该新增接口不可用;前端需要隐藏或降级推送记录 Tab。

12. 注意事项

  1. 前端请求路径中的订单 ID 按字符串传递。
  2. idbizId 等雪花 ID 或业务号按字符串处理,不转 JS Number
  3. summary.failed 只统计 status=FAILED 的记录,FILTEREDSKIPPEDUNKNOWN 不算失败。
  4. 不要依赖 channel 原始值做页面分组,后续原始渠道可能继续扩展。
  5. 当前接口不支持分页、筛选和补发;如页面需要筛选,建议先基于返回的 records 做本地筛选。

13. 关联 / 联系人

链接
Issue https://git.1814.love:8443/wx/HL/issues/4997
PR https://git.1814.love:8443/wx/HL/pulls/4998
后端提交 https://git.1814.love:8443/wx/HL/commit/edd1d26da
负责人 腰苏图