# 售后工单接入 wx 内容安全机审 — 修改接口(管理后台) - **端类型**:管理后台 - **日期**:2026-06-22 - **Issue**:[#4196](https://git.1814.love:8443/wx/HL/issues/4196) - **PR**:[#4203](https://git.1814.love:8443/wx/HL/pulls/4203) - **Commit**:[8882eb156](https://git.1814.love:8443/wx/HL/commit/8882eb1568a7e5ab8f48a6db4b7e3d4d4b6f2c15) - **后端负责人**:yaosutu --- ## 1. 接口背景 售后工单(投诉/申诉)接入微信内容安全机审后,管理后台在查看工单详情或列表时,可以看到每条工单的机审结果(`auditStatus`)。客服可据此判断用户提交内容是否经机审标记为违规,辅助处理决策。 --- ## 2. 变更清单 | 变更类型 | 接口 | 字段 | 说明 | |---------|------|------|------| | ✨ 出参新增 | `GET /v3/admin/aftersale/ticket/{id}` | `auditStatus` | 工单 wx 内容安全机审状态 | | ✨ 出参新增 | `GET /v3/admin/aftersale/ticket/page` | `auditStatus` | 工单列表每条记录新增机审状态 | --- ## 3. 接口详情 ### 3.1 工单详情 | 属性 | 值 | |-----|-----| | 方法 + 路径 | `GET /v3/admin/aftersale/ticket/{id}` | | 接口描述 | 管理后台查看单条售后工单详情 | | 认证 | 需要管理员 JWT | | 限流 | 无独立限流 | ### 3.2 工单分页列表 | 属性 | 值 | |-----|-----| | 方法 + 路径 | `GET /v3/admin/aftersale/ticket/page` | | 接口描述 | 管理后台分页查询售后工单列表 | | 认证 | 需要管理员 JWT | | 限流 | 无独立限流 | --- ## 4. 接口入参 本次变更**仅涉及出参**,入参无变化。 --- ## 5. 出参字段 ### TicketAdminRespVO(工单详情/列表单条) | 字段名 | 类型 | 说明 | |-------|------|------| | id | Long | 工单 ID | | orderId | Long | 关联订单 ID | | orderNo | String | 订单编号 | | category | String | 工单分类枚举:COMPLAINT / APPEAL | | type | String | 工单类型 | | title | String | 标题 | | description | String | 描述 | | status | String | 工单状态:SUBMITTED / PROCESSING / RESOLVED / CLOSED / WITHDRAWN | | statusName | String | 工单状态中文名 | | linkedRefundId | Long | 关联退款单 ID(申诉退款回填) | | **auditStatus** | **String** | **wx 内容安全机审状态,取值见 §6** | | attachments | List\ | 附件 URL | | createdAt | String | 创建时间(ISO 8601) | | updatedAt | String | 更新时间(ISO 8601) | --- ## 6. 枚举 / 数据字典 ### auditStatus — wx 内容安全机审状态 | 值 | 含义 | 触发条件 | |----|------|---------| | `PENDING` | 机审中 | 工单创建时携带了 mediaTraceIds(等待微信异步回调) | | `APPROVED` | 已通过 | 无媒体附件的工单直接置此;微信回调合规也置此 | | `MANUAL_REVIEW` | 需人工复审 | 微信机审认为需要人工介入 | | `REJECTED` | 已驳回 | 微信机审判定内容违规 | > **管理后台可操作建议**:`REJECTED` 的工单表示用户上传的媒体内容被微信判定违规,客服可将此作为处置参考,但工单本身流程不受影响,需客服手动决定是否关闭。 --- ## 7. 错误码 | 错误码 | HTTP 状态 | 含义 | 触发场景 | |-------|---------|------|---------| | 200-001 | 401 | 未授权 | JWT 缺失或过期 | | 200-002 | 403 | 无权操作 | 非管理员角色 | | 581001 | 404 | 工单不存在 | 工单 ID 无效 | --- ## 8. 示例 ### 8.1 典型成功——查询已通过机审的工单详情 **请求** ```http GET /v3/admin/aftersale/ticket/987654321 Authorization: Bearer ``` **响应** ```json { "code": 200, "msg": "success", "data": { "id": 987654321, "orderId": 1234567890, "orderNo": "HL20260622001", "category": "COMPLAINT", "type": "HOTEL", "title": "酒店降级安排", "description": "预订四星,实际三星,差价未退。", "status": "SUBMITTED", "statusName": "已提交", "linkedRefundId": null, "auditStatus": "APPROVED", "attachments": [ "https://oss.example.com/media/hotel_photo_1.jpg" ], "createdAt": "2026-06-22T10:30:00", "updatedAt": "2026-06-22T10:32:00" } } ``` ### 8.2 边界情况——机审中(PENDING)的工单 ```json { "code": 200, "msg": "success", "data": { "id": 987654322, "orderId": 1234567890, "orderNo": "HL20260622001", "category": "APPEAL", "type": "PRICE", "title": "价格异议", "description": "临时收费未在合同内。", "status": "SUBMITTED", "statusName": "已提交", "linkedRefundId": null, "auditStatus": "PENDING", "attachments": [ "https://oss.example.com/media/receipt.jpg" ], "createdAt": "2026-06-22T10:35:00", "updatedAt": "2026-06-22T10:35:00" } } ``` > `auditStatus=PENDING` 表示微信回调尚未到达,属正常状态,客服可照常处理工单。 ### 8.3 业务失败——工单不存在 ```http GET /v3/admin/aftersale/ticket/9999999999 Authorization: Bearer ``` ```json { "code": 581001, "msg": "工单不存在", "data": null } ``` --- ## 9. 业务边界 **适用场景**: - 客服查看任意用户提交的售后工单,可见机审状态 - 列表页可按 `auditStatus` 过滤(需前端实现过滤 UI,后端支持按此字段查询) **特殊边界**: - 历史工单(PR #4203 上线前创建)`auditStatus` 为 `null`,前端可展示为「-」或「已通过」 - `auditStatus=REJECTED` 仅为机审标记,不影响工单的正常流转,客服仍需手动处置 --- ## 10. 修改前后对比 ### 字段级对比(TicketAdminRespVO) | 字段 | 变更前 | 变更后 | |------|-------|-------| | auditStatus | 不存在 | 新增,String,wx 内容安全机审状态 | ### 行为级对比 | 维度 | 变更前 | 变更后 | |------|-------|-------| | 机审可见性 | 无任何机审信息 | 管理后台可见用户提交内容的机审结论 | --- ## 11. 影响评估 / 回滚 | 维度 | 结论 | |------|------| | 破坏兼容性 | 否(出参新增字段,旧版忽略) | | 前端同步上线 | 建议同步展示 auditStatus,辅助客服判断违规内容 | | 回滚方案 | 后端回滚 PR #4203 即可,无数据损失风险 | --- ## 12. 注意事项 1. `auditStatus=REJECTED` 的工单,客服可参考机审结论处理,但系统不会自动关闭工单。 2. 历史工单 `auditStatus` 为 `null`,前端建议展示为「-」。 3. `MANUAL_REVIEW` 状态表示微信需要人工介入,平台客服可主动跟进或等待微信反馈。 --- ## 13. 关联 / 联系人 - **Issue**:[https://git.1814.love:8443/wx/HL/issues/4196](https://git.1814.love:8443/wx/HL/issues/4196) - **PR**:[https://git.1814.love:8443/wx/HL/pulls/4203](https://git.1814.love:8443/wx/HL/pulls/4203) - **Commit**:[https://git.1814.love:8443/wx/HL/commit/8882eb1568a7e5ab8f48a6db4b7e3d4d4b6f2c15](https://git.1814.love:8443/wx/HL/commit/8882eb1568a7e5ab8f48a6db4b7e3d4d4b6f2c15) - **关联 Issue**:[#4161 售后申诉中心](https://git.1814.love:8443/wx/HL/issues/4161) - **后端负责人**:yaosutu