# 抖音退款 Agent 产品需求文档（PRD）V1.0

> 文档状态：待研发评审  
> 业务规则状态：已确认  
> 版本：V1.0  
> 编制日期：2026-08-10  
> 适用平台：抖音  
> 金额边界：本次退款金额 `>=500元`，转管理人员处理  
> 首批试运行店铺：Panapopo护肤旗舰店、Panapopo官方旗舰店、Panapopo陆吾个人护理专卖店  
> 事实优先级：规则确认稿 > SOP > 截图证据  

## 1. 文档目的

本文档用于指导抖音退款 Agent V1.0 的研发、联调、测试和验收。Agent 在首批店铺内识别并处理未发货退款、已发货退款、退货退款和换货待收货/发货任务；当业务规则、系统信息或执行结果不明确时，不自行推断，统一转人工兜底。

本文档描述的是待开发能力，不代表功能已开发、已部署或已上线。

## 2. 事实来源与冲突处理

### 2.1 事实来源

| 优先级 | 来源 | 日期 | 用途 |
|---|---|---|---|
| 1 | 《抖音退款Agent_规则确认稿_V1.0.md》 | 2026-08-10 | 业务范围、判断规则、阈值、人工兜底、通知和完成口径 |
| 2 | 《抖音退款sop2.0_项目基线0806.xlsx》 | 2026-08-06 | 客服当前操作入口、跨系统操作路径、所需信息和原始话术 |
| 3 | 客服补充及OMS未发货配货状态截图 | 2026-08-10 | 未发货仅退款的配货状态判断、取消配货入口和动作顺序 |
| 4 | SOP内嵌截图、OMS低值品截图、TMS工单状态截图 | 2026-08-06至2026-08-07 | 页面入口、字段位置和系统状态证据 |
| 5 | 用户明确指令 | 2026-08-10 | 确认最终规则，并授权按规则确认稿更新PRD |

### 2.2 已处理的来源差异

| 事项 | SOP口径 | 本PRD采用口径 | 依据 |
|---|---|---|---|
| 首批店铺 | SOP列出7家店铺 | 仅首批3家店铺 | 规则确认稿优先 |
| 金额阈值 | 金额大于等于500元需管理操作 | 本次退款金额大于等于500元转管理人员 | 规则确认稿明确字段与边界 |
| 退货目的地 | SOP示例为具体城市 | 商家指定退货地址 | 规则确认稿去除具体地名 |
| 退货退款时点 | SOP含“运输中等待到货” | 物流显示发往指定退货地址即可退款，无需签收或入库 | 规则确认稿优先 |
| 换货补发时点 | SOP含“等待到货” | 物流显示发往指定退货地址即可创建OMS补发单 | 规则确认稿优先 |
| 聊天与协商记录 | SOP要求查看 | V1不识别；依赖聊天判断时转人工 | 规则确认稿优先 |
| TMS拦截结果 | SOP表述“拦截后退款” | 仅拦截工单任务状态为“已完成”时自动退款 | 规则确认稿优先 |
| 未发货配货状态 | 原PRD仅按未发货状态直接退款 | 需要核验OMS时：未配货直接退款；全部配货先取消，取消成功后退款 | 2026-08-10规则确认稿优先 |
| 低值品弃件退款 | 原PRD要求取得受理回执或工单号后退款 | 弃件请求提交成功后立即退款，不等待快递确认或实际处理 | 2026-08-10最终规则口径 |

## 3. 背景与问题

客服当前需要在抖音飞鸽售后工作台、OMS和TMS之间切换，人工读取订单、金额、发货状态、低值品标记、退回物流和工单状态，再执行退款、拒绝、补发或转人工。该流程存在以下问题：

- 重复查询和跨系统操作较多，处理周期受人工排队影响。
- 售后存在24小时、33小时、7天等平台时效，等待任务需要持续复查。
- 退款、拒绝和补发均包含不可逆或高风险动作，需要严格控制重复执行和误判。
- 快递回复、聊天协商和异常物流存在语义不确定性，V1不适合自动判断。

当前单量、人工耗时、超时率和误操作率尚未形成可核验基线。上线前由业务与研发补采基线，试运行后再确认量化改善目标。

## 4. 产品目标与非目标

### 4.1 产品目标

1. 自动处理规则明确且风险可控的退款与换货任务，减少客服重复查询和跨系统操作。
2. 对等待类任务按阈值持续复查，避免遗漏平台时效。
3. 对高金额、部分售后、规则不清、系统异常和执行结果未知的任务及时转人工。
4. 对每次判断、系统动作、复查和通知保留可审计记录。
5. 沉淀可复用的退款规则、任务状态机、异常原因码和验收用例。

### 4.2 非目标

- V1不识别或理解客服聊天、人工协商记录。
- V1不理解快递自由文本回复，不自动判断拒收、赔付、丢件责任等语义。
- V1不处理纠纷、平台介入、仲裁待协商、仲裁待举证、补寄和维修。
- V1不自动处理部分商品、部分数量或部分金额的退款/换货。
- V1不自动处理本次退款金额大于等于500元的任务。
- V1不新增独立客服工作台页面，操作结果通过现有系统和钉钉通知承载。
- V1不等待OMS补发单实际出库或签收；补发单号生成即完成Agent任务。

## 5. 适用范围

### 5.1 首批店铺

1. Panapopo护肤旗舰店
2. Panapopo官方旗舰店
3. Panapopo陆吾个人护理专卖店

其他SOP店铺不进入首批运行范围。店铺范围必须配置化，未经业务确认不得自行扩店。

### 5.2 售后场景

| 场景 | V1处理方式 |
|---|---|
| 未发货退款 | 自动退款或转管理人员 |
| 已发货退款 | 低值品弃件并退款；普通商品创建TMS拦截工单并复查 |
| 退货退款 | 核验退回物流，自动退款、等待复查、拒绝退款或转人工 |
| 换货待收货/发货 | 核验退回物流，在OMS创建补发单或转人工 |

## 6. 用户与角色

| 角色 | 职责 |
|---|---|
| 客服 | 接收转人工任务，继续在抖音、OMS或TMS处理 |
| 管理人员 | 处理本次退款金额大于等于500元的高金额任务 |
| 退款 Agent | 扫描、判断、执行、复查、校验完成状态和发送异常通知 |
| 业务规则负责人 | 维护店铺范围、指定退货地址、规则版本和例外口径 |
| 研发/运维 | 维护账号、接口或RPA、任务调度、日志、告警和故障恢复 |

## 7. 客服当前操作流程

> 以下截图来自抖音退款SOP及业务补充截图，保留原始清晰度，未额外做遮罩处理，仅限公司内部需求评审和开发使用。截图用于说明当前操作路径，不作为字段坐标或页面选择器的长期技术契约。

### 7.1 进入抖音飞鸽售后工作台

客服进入“飞鸽工作台 → 售后 → 售后工作台”，查看待商家审核、待商家收货/发货等任务。

![进入飞鸽售后工作台](./assets/抖音退款Agent/现状流程-01-进入飞鸽售后工作台.png)

### 7.2 查看仅退款订单和发货详情

客服在“待商家审核”中选择未发货退款或已发货退款，进入售后详情并查看发货状态、物流信息及可执行操作。

![查看仅退款订单与发货详情](./assets/抖音退款Agent/现状流程-02-查看仅退款订单与发货详情.png)

### 7.3 未发货订单核验OMS配货状态【本次更新】

当抖音售后流程提示需要进入OMS核验订单配货状态时，客服按OMS结果处理：显示“未配货”可直接退款；显示“全部配货”需先取消配货，确认取消成功后再退款。取消失败、结果未知、其他配货状态或状态无法明确判断时转人工，不执行退款。

![OMS未配货状态](./assets/抖音退款Agent/OMS未发货仅退款-未配货状态.png)

![OMS全部配货及取消入口](./assets/抖音退款Agent/OMS未发货仅退款-全部配货及取消入口.png)

### 7.4 已发货订单创建TMS拦截工单

对于已发货、非低值品订单，客服进入“TMS → 物流快递工单 → 客服登记”，创建快递拦截工单。

![进入TMS创建拦截工单](./assets/抖音退款Agent/现状流程-03-进入TMS创建拦截工单.png)

客服持续查看TMS任务状态。拦截工单“已完成”表示快递已处理回复；“待处理”表示尚未完成。

![查看TMS工单状态](./assets/抖音退款Agent/现状流程-04-查看TMS工单状态.png)

### 7.5 退货退款或换货核验退回物流

客服在“待商家收货/发货”中进入订单详情，查看买家退回物流是否发往商家指定退货地址，再决定退款、补发、等待或异常处理。

![核验买家退货物流](./assets/抖音退款Agent/现状流程-05-核验买家退货物流.png)

### 7.6 确认退款完成

退款操作后，客服返回售后详情确认页面显示“退款成功”。仅点击退款按钮不视为完成。

![确认退款完成状态](./assets/抖音退款Agent/现状流程-06-确认退款完成状态.png)

### 7.7 当前人工流程摘要【本次更新】

```mermaid
flowchart LR
    A["飞鸽售后工作台"] --> B{"售后类型"}
    B -->|"未发货退款"| C["核对金额与订单范围"]
    C --> U{"是否需核验OMS配货状态"}
    U -->|"否"| I["退款或转人工"]
    U -->|"是"| U1{"OMS配货状态"}
    U1 -->|"未配货"| I
    U1 -->|"全部配货"| U2["取消配货"]
    U1 -->|"其他或不明确"| M["转人工，不退款"]
    U2 --> U3{"取消配货成功"}
    U3 -->|"是"| I
    U3 -->|"否或结果未知"| M
    B -->|"已发货退款"| D["查OMS低值品标记"]
    D -->|"普通商品"| E["TMS创建并查看拦截工单"]
    D -->|"低值品"| F["对接物流弃件"]
    B -->|"退货退款"| G["查看退回物流"]
    B -->|"换货"| H["查看退回物流并在OMS补发"]
    E --> I
    F --> I
    G --> I
    H --> J["生成OMS补发单号"]
    I --> K["确认抖音显示退款成功"]
```

## 8. Agent目标流程

```mermaid
flowchart TD
    A["扫描首批店铺售后任务"] --> B["以交易号+售后单号建立任务"]
    B --> C{"已退款、已处理或已撤销"}
    C -->|"是"| Z["结束，不重复操作"]
    C -->|"否"| D{"通用风控是否通过"}
    D -->|"否"| M["转人工并通知群"]
    D -->|"是"| E{"售后场景"}
    E -->|"未发货退款"| UF{"是否需核验OMS配货状态"}
    UF -->|"否"| F["执行退款"]
    UF -->|"是"| US{"OMS配货状态"}
    US -->|"未配货"| F
    US -->|"全部配货"| UC["取消配货"]
    US -->|"其他或不明确"| M
    UC --> UV{"取消配货结果"}
    UV -->|"成功"| F
    UV -->|"失败或未知"| M
    E -->|"已发货退款"| G{"OMS是否低值品"}
    G -->|"是"| H["提交物流弃件请求"]
    H --> HI{"提交结果"}
    HI -->|"成功"| F
    HI -->|"失败或未知"| M
    G -->|"否"| I["创建或读取TMS拦截工单"]
    I --> J{"TMS任务状态"}
    J -->|"已完成"| F
    J -->|"待处理且剩余时间>12小时"| W["等待并复查"]
    J -->|"待处理且剩余时间<=12小时"| M
    J -->|"其他或需理解回复"| M
    E -->|"退货退款"| K{"退回物流结果"}
    K -->|"发往指定退货地址"| F
    K -->|"明确异常且剩余时间>3天"| W
    K -->|"明确异常且剩余时间<=3天"| R["拒绝退款并留言"]
    K -->|"缺失或不明确"| M
    E -->|"换货"| L{"退回物流发往指定地址"}
    L -->|"是且信息完整"| O["OMS创建补发单"]
    L -->|"否或不明确"| M
    F --> V["校验抖音退款成功"]
    O --> P{"生成补发单号"}
    P -->|"是"| Q["任务完成"]
    P -->|"否或结果未知"| M
    V -->|"成功"| Q
    V -->|"失败或结果未知"| M
    W --> A
```

## 9. 功能范围与优先级

```text
抖音退款 Agent V1.0
├── P0 任务发现与唯一标识
├── P0 通用风控与场景分流
├── P0 未发货OMS配货核验、取消配货与退款【本次更新】
├── P0 OMS低值品识别、弃件与退款
├── P0 TMS拦截工单创建、查询与复查
├── P0 退货物流判断、退款与异常拒绝
├── P0 换货OMS补发单创建
├── P0 完成状态校验、幂等与并发控制
├── P0 转人工、钉钉通知与失败告警
├── P0 操作日志与审计
└── P1 运营指标与原因分布报表
```

V1不新增独立页面，因此不设计新页面线框图。研发需复用现有Agent任务框架、抖音飞鸽、OMS、TMS和钉钉群能力。

## 10. 通用判断规则

### 10.1 判断顺序

Agent必须按以下顺序判断，后续场景规则不得绕过前置风控：

1. 校验平台、店铺和售后类型是否在范围内。
2. 以“交易号 + 售后单号”查询是否已有任务及最终执行结果。
3. 重新读取售后状态；已退款成功、已处理完成或买家已撤销则结束。
4. 读取本次退款金额；大于等于500元转管理人员。
5. 判断是否为部分商品、部分数量或部分金额售后；是则转人工。
6. 判断是否需要聊天记录、协商记录或快递自由文本语义；是则转人工。
7. 进入未发货、已发货、退货退款或换货场景规则。
8. 任何字段缺失、冲突、系统状态未知或规则无法唯一匹配时转人工。

### 10.2 金额与部分售后

- 金额字段使用抖音当前售后单的“本次退款金额”，不是订单原价、商品标价或历史累计退款金额。
- 本次退款金额小于500元才可进入自动处理。
- 本次退款金额等于500元时转管理人员。
- V1只消费平台明确的“部分退款/部分售后”结构化标记，不根据优惠、历史退款、商品、数量或金额自行推算。
- 结构化标记缺失、字段映射未确认或结果冲突时转人工。

## 11. 场景详细规则

### 11.1 未发货退款

| 条件 | Agent动作 | 完成口径 |
|---|---|---|
| 全量售后、本次退款金额<500元、平台显示未发货，且无需进入OMS核验配货状态 | 直接同意退款 | 抖音页面显示退款成功 |
| 抖音售后流程提示需核验OMS，OMS显示“未配货” | 直接同意退款 | 抖音页面显示退款成功 |
| 抖音售后流程提示需核验OMS，OMS显示“全部配货” | 先取消配货；OMS明确显示取消成功后再同意退款 | 取消配货成功，且抖音页面显示退款成功 |
| 取消配货失败、结果未知、OMS显示其他配货状态或状态无法明确判断 | 转人工，不执行退款 | 通知发送成功，Agent停止处理 |
| 本次退款金额>=500元 | 转管理人员 | 通知发送成功，Agent停止处理 |
| 部分售后或字段不明确 | 转人工 | 通知发送成功，Agent停止处理 |

【本次更新】自动退款和取消配货前必须再次读取发货状态。若已变为已发货，则重新进入已发货退款分支，不得沿用旧判断。取消配货是退款前置动作，未取得明确成功结果时禁止继续退款。现状截图见第7.3节。

### 11.2 已发货退款：低值品

OMS订单列表中的“低值品”标记是唯一低值品判断依据。

![OMS低值品标记](./assets/抖音退款Agent/系统字段-OMS低值品标记.png)

| 条件 | Agent动作 | 约束 |
|---|---|---|
| OMS低值品标记存在，金额<500元 | 提交物流弃件请求；系统明确显示提交成功后立即退款 | 不等待快递确认或实际处理结果 |
| 弃件提交超时或结果未知 | 先按任务业务键查询；仍无法确认提交成功则转人工，不继续退款 | 不直接重放弃件请求 |
| 弃件明确失败 | 转人工，不继续退款 | 避免物流动作未受理时误退款 |
| OMS无低值品标记 | 进入普通已发货拦截流程 | 不允许通过商品价格自行推断低值品 |
| OMS低值品字段缺失或读取失败 | 转人工 | 规则不明确兜底 |

### 11.3 已发货退款：普通商品拦截

1. 在TMS创建“快递拦截”类型客服登记工单；已存在同一交易号、售后单号的有效拦截工单时复用，不重复创建。
2. 仅当`work_order_type=快递拦截`时消费结构化任务状态“待处理/已完成”；需要理解快递回复内容时转人工。
3. 工单状态与动作如下：

| TMS状态 | 售后剩余时间 | Agent动作 |
|---|---:|---|
| 已完成 | 任意 | 返回抖音同意退款，并校验退款成功 |
| 待处理 | >12小时 | 进入等待复查，不退款 |
| 待处理 | <=12小时 | 转人工 |
| 结构化物流状态为拒收/已签收 | 任意 | 转人工 |
| 拒收/签收信息仅存在于自由文本回复 | 任意 | 转人工，原因码为`COURIER_REPLY_REQUIRED` |
| 状态缺失、冲突或结果未知 | 任意 | 转人工 |

“已完成”仅适用于已创建的快递拦截工单。工单类型不是快递拦截，或拒收类及其他物流问题即使存在快递回复，也不自动套用“已完成可退款”，统一转人工。

### 11.4 退货退款

| 退回物流结果 | 售后剩余时间 | Agent动作 |
|---|---:|---|
| 物流明确显示发往商家指定退货地址 | 任意 | 直接同意退款，无需等待签收或入库 |
| 未发往指定退货地址 | >3天 | 暂不处理，等待复查 |
| 未发往指定退货地址 | <=3天 | 拒绝退款并发送已确认留言 |
| 签收地址不是指定退货地址 | >3天 | 暂不处理，等待复查 |
| 签收地址不是指定退货地址 | <=3天 | 拒绝退款并发送已确认留言 |
| 物流明确标记长期未更新或停滞异常 | >3天 | 暂不处理，等待复查 |
| 物流明确标记长期未更新或停滞异常 | <=3天 | 拒绝退款并发送已确认留言 |
| 物流单号无法查询、信息缺失或结果不明确 | 任意 | 转人工 |

“长期未更新或停滞”仅在物流系统提供明确异常状态或已配置可核验状态码时自动使用。仅凭更新时间推测异常但没有已确认阈值时，转人工。

物流判断顺序如下：

1. 已产生签收地址时，先判断签收地址；签收地址不是指定退货地址时优先判为异常，即使此前运输方向曾匹配也不得自动退款。
2. 尚未产生签收地址时，运输目的地明确匹配指定退货地址才可判为发往指定地址。
3. 运输目的地与签收地址相互冲突、任一关键字段未知或存在多个匹配结果时，转人工。

指定退货地址必须按店铺配置并版本化，至少记录地址ID/仓库编码、结构化省市区与详细地址、有效期和规则版本。发往地址和签收地址只有在权威字段完成规范化后得到唯一`MATCH`结果，才允许自动退款或补发；多地址冲突、历史地址变更、字段不全或只能根据文本猜测时返回`UNKNOWN`并转人工。该匹配能力完成字段联调和UAT前，退货退款及换货自动动作保持关闭。

### 11.5 换货待收货/发货

| 条件 | Agent动作 | 完成口径 |
|---|---|---|
| 物流明确显示发往商家指定退货地址，商品/数量/收货地址完整一致 | 在OMS创建补发单 | OMS生成补发单号 |
| 补发单创建成功但未生成单号 | 转人工 | Agent不继续重试创建 |
| 商品、数量或收货地址缺失/不一致 | 转人工 | 不创建补发单 |
| 退回物流异常、缺失或结果不明确 | 转人工 | 不自动拒绝换货 |

补发商品、数量和收货地址从抖音售后申请的结构化信息读取。生成补发单号后Agent任务完成，不等待仓库发货或买家签收。

## 12. 时效与复查规则

### 12.1 时效口径

所有时效从买家发起本次售后申请的时间开始计算。

| 场景 | 处理时效 | 关键阈值 |
|---|---:|---|
| 未发货退款 | 24小时 | 按通用风控后处理 |
| 已发货退款 | 33小时 | TMS待处理且剩余时间<=12小时转人工 |
| 退货退款 | 7天 | 物流异常且剩余时间<=3天拒绝退款 |
| 换货 | 7天 | 规则不清或执行失败转人工 |

以买家发起本次售后的申请时间为时效计算基线，并使用抖音平台截止时间或倒计时进行校验。两套时间必须基于同一`captured_at`换算为秒：若分别落在不同业务区间（12小时边界、3天边界或0小时边界），或差值超过可配置技术容差，则视为信息冲突并转人工。技术容差建议默认5分钟，联调后可调整，但不得跨越业务边界。

### 12.2 任务扫描与复查

- 首次扫描和增量扫描间隔需配置化，研发评审建议默认5分钟。
- 等待任务必须记录`next_check_at`。计算口径为“常规复查间隔”和“阈值时间减安全缓冲”中的较早时间，默认常规复查间隔建议30分钟。
- 12小时和3天阈值前必须预留可配置安全缓冲；调度延迟或服务恢复后立即重新计算剩余时间。
- 进入阈值后必须执行对应动作，不得继续沿用旧的等待状态。
- 售后剩余时间小于等于0时标记`EXPIRED`并告警转人工，不再自动退款、拒绝或补发。
- 买家撤销售后、人工已处理或任务已终态时，停止后续复查。
- 调度参数属于研发联调项，不改变业务阈值。

## 13. 客户留言与内部通知

### 13.1 退货物流异常留言

仅在退货退款物流明确异常且售后剩余时间小于等于3天时使用：

> 亲，我这边查到您填写的退货物流未发往或未签收至商家指定退货地址，因此本次退款申请暂时无法通过。辛苦您核实退货地址及物流信息，如有异常请联系发件快递确认哦～

V1只使用这一条已确认模板，不基于聊天上下文自行改写。

### 13.2 钉钉通知范围

- 通知群：天猫抖音退款Agent通知群。
- 钉钉群号：`189925002005`。
- 所有转人工、转管理人员和系统异常均通知。
- 自动处理成功不通知。
- 每次通知固定@10位指定人员，不使用“@所有人”：张欣(子宁)、易嘉豪(狄云)、何紫辉(婉安)、陈姣群(梨花)、蔡妍(今夏)、彭心雨(听竹)、彭玉洁(青顾)、曾昶(霜寒)、刘敏(秦桑)、崔志文(行云)。

### 13.3 通知模板

```text
【抖音退款Agent转人工】
店铺：{store_name}
售后场景：{after_sale_type}
交易号：{trade_no}
售后单号：{after_sale_no}
本次退款金额：{refund_amount}
售后剩余时间：{remaining_time}
转人工原因：{handoff_reason}
当前任务状态：{task_status}
处理入口：{task_link_or_system_path}
@固定10位人员
```

系统异常使用标题“【抖音退款Agent系统异常】”，并增加异常阶段、错误码和最后一次成功动作。通知中不得包含买家姓名、手机号、详细地址、聊天内容或支付信息。

### 13.4 通知去重

- 同一任务、同一原因码只发送一次通知。
- 原因码变化或任务从等待状态进入人工接管状态时可再次通知。
- 每次通知记录`delivery_id`、群消息投递结果和10位人员映射完整性。仅当群消息投递成功且10位人员均可@时，任务进入`MANUAL_REQUIRED`终态。
- 通知发送失败需按同一`delivery_id`幂等重试；多次失败后进入系统告警，但不得因此重复执行退款、拒绝或补发。
- 若钉钉接口不支持客户端幂等键或消息查询，采用本地outbox至少一次投递：优先保证不漏报，极端超时未知场景允许出现带同一`delivery_id`的重复通知，客服可据此去重。
- 通知中的处理链接必须为需要登录鉴权的内部地址，不得携带明文token。
- V1不要求人工认领回执；是否增加客服ACK由业务在试运行后评估。

## 14. 任务状态机

```mermaid
stateDiagram-v2
    [*] --> DISCOVERED
    DISCOVERED --> VALIDATING
    VALIDATING --> WAITING_RECHECK
    VALIDATING --> EXECUTING
    VALIDATING --> HANDOFF_PENDING
    EXECUTING --> VERIFYING
    VERIFYING --> COMPLETED
    VERIFYING --> MESSAGE_PENDING
    VERIFYING --> HANDOFF_PENDING
    MESSAGE_PENDING --> REJECTED
    MESSAGE_PENDING --> SYSTEM_EXCEPTION
    WAITING_RECHECK --> VALIDATING
    VALIDATING --> EXPIRED
    EXPIRED --> HANDOFF_PENDING
    VALIDATING --> CANCELLED
    EXECUTING --> SYSTEM_EXCEPTION
    SYSTEM_EXCEPTION --> HANDOFF_PENDING
    HANDOFF_PENDING --> MANUAL_REQUIRED
    COMPLETED --> [*]
    REJECTED --> [*]
    CANCELLED --> [*]
    MANUAL_REQUIRED --> [*]
```

| 状态 | 含义 | 是否允许Agent再次执行不可逆动作 |
|---|---|---|
| DISCOVERED | 已发现新售后任务 | 否 |
| VALIDATING | 正在读取并校验规则字段 | 否 |
| WAITING_RECHECK | 等待TMS或物流状态更新 | 否 |
| EXECUTING | 正在提交取消配货、退款、拒绝、弃件或补发 | 仅持有有效租约和fencing token的任务允许 |
| VERIFYING | 已提交动作，正在读取并验证最终结果 | 否 |
| MESSAGE_PENDING | 拒绝已确认，固定买家留言待发送或待确认 | 只允许幂等重试留言，不允许重复拒绝 |
| COMPLETED | 退款成功或补发单号已生成 | 否 |
| REJECTED | 已确认拒绝成功且固定留言发送成功 | 否 |
| CANCELLED | 买家撤销或任务已失效 | 否 |
| EXPIRED | 售后剩余时间<=0，停止自动动作并准备告警转人工 | 否 |
| HANDOFF_PENDING | 转人工通知待投递或待补齐@人员映射 | 否 |
| MANUAL_REQUIRED | 转人工或管理人员通知已成功投递 | 否 |
| SYSTEM_EXCEPTION | 系统或页面异常，执行结果未知 | 否，进入通知流程 |

## 15. 幂等、并发与异常恢复

### 15.1 唯一标识与幂等

- 唯一任务键：`platform + store_id + trade_no + after_sale_no`。
- 同一任务只允许存在一个进行中的Agent实例。
- 每类外部动作使用数据库唯一约束`task_key + action_type`，动作台账状态为`PENDING/SUCCEEDED/UNKNOWN/FAILED`，并记录`operation_id`、外部`request_id`、尝试次数和结果证据。
- 任务状态更新使用版本号或CAS原子更新，不能依赖先查后写。
- 执行锁采用带TTL的租约并支持续租；外部动作提交前校验fencing token，避免旧Worker在锁过期后继续执行。
- 取消配货、创建TMS工单、物流弃件、同意退款、拒绝退款、发送买家留言、创建OMS补发单前均需创建或读取动作台账。
- 每次不可逆动作前重新读取平台状态和人工处理标记。
- 已退款成功、已拒绝、已生成补发单号、已撤销或已转人工的任务不得再次执行。

### 15.2 并发控制

- Agent执行前获取任务租约；租约失效、进程崩溃或超时恢复后，必须先查询动作台账和各系统最终状态，禁止直接重放动作。
- 发现平台结构化人工处理标记、售后状态版本变化或外部动作已由人工完成时，Agent停止自动操作并记录`MANUAL_TAKEOVER`；无法可靠读取人工接管证据时转人工。
- 多店铺任务不得共用错误的店铺会话、指定退货地址或OMS配置。

### 15.3 结果未知

- 已点击退款但抖音未显示成功：不重复点击，转人工。
- OMS补发提交后未返回单号：不重复创建，转人工。
- TMS工单提交后未返回工单号：先按交易号和售后单号查询；仍无法唯一确认则转人工。
- OMS取消配货提交后结果未知：按交易号查询最新配货状态和取消动作结果；仍无法确认取消成功时转人工，不执行退款。
- 拒绝退款已确认但留言失败：只重试同一留言动作，不重复拒绝；留言最终失败时告警并转人工。
- 拒绝退款请求超时或结果未知：先按售后单号查询抖音最终状态；仍未知时不重复拒绝、不发送买家留言，转人工。
- 低值品弃件提交超时：按业务键查询是否已受理；仍未知则不退款并转人工。
- 页面超时、登录失效、验证码、字段无法读取或接口返回未知：停止当前动作并转人工。

## 16. 数据字段与系统映射

### 16.1 必需字段

| 字段 | 来源 | 类型/示例 | 必填 | 用途 | 缺失处理 |
|---|---|---|---|---|---|
| platform | 配置 | `douyin` | 是 | 平台隔离 | 系统异常 |
| store_id/store_name | 抖音/配置 | 字符串 | 是 | 店铺范围与账号路由 | 转人工 |
| trade_no | 抖音 | 字符串 | 是 | 任务唯一标识 | 转人工 |
| after_sale_no | 抖音 | 字符串 | 是 | 任务唯一标识 | 转人工 |
| after_sale_type | 抖音 | 枚举 | 是 | 场景分流 | 转人工 |
| after_sale_status | 抖音 | 枚举 | 是 | 判断是否可处理 | 转人工 |
| shipment_status | 抖音 | 枚举 | 是 | 未发货/已发货分流 | 转人工 |
| allocation_check_required | 抖音售后流程/Agent | 布尔 | 未发货必需 | 判断是否需进入OMS核验配货状态 | 缺失、冲突或无法读取则转人工 |
| oms_allocation_status | OMS | 未配货/全部配货/其他/未知 | 需核验OMS时必需 | 决定直接退款、取消配货或转人工 | 其他或未知转人工 |
| oms_cancel_allocation_result | OMS | 成功/失败/未知 | 全部配货时必需 | 作为退款前置条件 | 失败或未知转人工，不退款 |
| refund_amount_fen | 抖音/转换 | 整数分 | 是 | 与50000分比较金额阈值 | 转人工 |
| partial_after_sale_flag | 抖音 | 布尔/枚举，结构化字段 | 是 | 部分售后风控 | 缺失、未映射或冲突则转人工 |
| applied_at | 抖音 | 带时区时间戳，统一Asia/Shanghai | 是 | 时效起点 | 转人工 |
| deadline_at/remaining_seconds | 抖音/计算 | 带时区时间戳/整数秒 | 是 | 12小时、3天阈值 | 转人工 |
| low_value_flag | OMS | 布尔/标记 | 已发货必需 | 低值品分流 | 转人工 |
| buyer_return_tracking_no | 抖音 | 字符串 | 退货/换货必需 | 查询退回物流 | 转人工 |
| return_route_destination_result | 物流系统 | MATCH/MISMATCH/UNKNOWN | 退货/换货必需 | 运输目的地判断 | UNKNOWN转人工 |
| return_signed_address_result | 物流系统 | MATCH/MISMATCH/NOT_AVAILABLE/UNKNOWN | 退货/换货必需 | 签收地址优先判断 | MISMATCH判异常，UNKNOWN转人工 |
| logistics_exception_status | 物流系统 | 正常/明确异常/未知 | 退货必需 | 等待或拒绝 | 未知转人工 |
| tms_work_order_no | TMS | 字符串 | 普通已发货必需 | 查询拦截任务 | 未知转人工 |
| tms_work_order_type | TMS | 快递拦截/其他 | 普通已发货必需 | 限定可自动退款的工单类型 | 缺失或其他类型转人工 |
| tms_task_status | TMS | 待处理/已完成/其他 | 普通已发货必需 | 退款或等待 | 其他转人工 |
| replacement_items | 抖音 | 商品、数量 | 换货必需 | OMS补发 | 缺失转人工 |
| replacement_address | 抖音 | 结构化地址 | 换货必需 | OMS补发 | 缺失转人工 |
| oms_replacement_no | OMS | 字符串 | 换货完成必需 | 完成判断 | 未生成转人工 |
| rule_version | 规则配置 | 字符串 | 是 | 审计本次判断口径 | 系统异常 |
| source_snapshot_hash | Agent | 字符串 | 是 | 证明判断输入版本 | 系统异常 |
| task_version | Agent | 整数 | 是 | CAS并发控制 | 系统异常 |
| operation_id/request_id | Agent/外部系统 | 字符串 | 执行动作必需 | 外部动作幂等与查询 | 结果未知则转人工 |
| operation_status | Agent | 枚举 | 执行动作必需 | PENDING/SUCCEEDED/UNKNOWN/FAILED | 系统异常 |
| destination_evidence | 物流/配置 | 发往/签收地址ID、仓库码、规范化字段摘要 | 退货/换货必需 | 分别证明MATCH/MISMATCH/UNKNOWN | UNKNOWN转人工 |

### 16.2 配置数据

| 配置 | 要求 |
|---|---|
| 首批店铺白名单 | 仅3家，支持配置化增减并记录变更人和版本 |
| 商家指定退货地址 | 按店铺维护；精确字段和匹配方式在联调时确认，结果不唯一时转人工 |
| 金额阈值 | 默认500元，规则为`>=500`转管理人员 |
| 即将超时阈值 | 12小时，包含等于12小时 |
| 退货异常拒绝阈值 | 3天，包含等于3天 |
| 钉钉群与@人员 | 群号固定；展示名需映射为钉钉userId或手机号 |
| 扫描与复查间隔 | 配置化，不得改变业务时效阈值 |

## 17. 权限、安全与审计

- 抖音、OMS、TMS和钉钉账号使用最小权限，凭证不得明文写入代码、日志或PRD。
- 运行账号只能读取已发布规则，不得修改店铺白名单、地址、阈值或通知人员。
- 规则、店铺、地址、阈值和钉钉人员配置实行查看、编辑、审批发布、回滚分权；修改必须版本化并记录审批人与生效时间。
- 多店铺账号和会话必须隔离，操作前校验当前店铺。
- 日志不记录买家姓名、完整手机号、详细地址、聊天内容和支付账号；必要订单标识按内部权限展示。
- 每个任务记录规则版本、输入快照摘要、判断分支、动作、结果、操作者、时间和异常原因码。
- 不可逆动作需保留请求ID或页面操作证据，便于追溯但不得保存未脱敏截图到公开位置。
- 日志保留时长、访问角色和导出权限由公司数据治理与研发评审确认。

## 18. 埋点与运营指标

| 指标 | 定义 | 目的 |
|---|---|---|
| 发现任务数 | 首批店铺扫描到的唯一售后任务数 | 统计任务规模 |
| 自动可处理率 | 通过通用风控并命中自动规则的任务数/发现任务数 | 评估规则覆盖 |
| 自动处理成功率 | 完成退款或生成补发单号的任务数/自动执行任务数 | 评估稳定性 |
| 转人工率 | MANUAL_REQUIRED任务数/发现任务数 | 识别自动化缺口 |
| 转人工原因分布 | 按原因码统计 | 后续规则优化 |
| 平均处理时长 | 申请时间至Agent终态时间 | 评估周期改善 |
| 时效内完成率 | 平台截止时间前进入终态的任务数/应处理任务数 | 评估超时风险 |
| 重复动作拦截数 | 被幂等或并发锁阻止的重复动作次数 | 评估安全性 |
| 系统异常率 | SYSTEM_EXCEPTION任务数/发现任务数 | 评估系统可靠性 |
| 通知成功率 | 成功发送的转人工/异常通知数/应发送数 | 评估人工接管链路 |
| 取消配货成功率 | OMS取消配货成功任务数/取消配货执行任务数 | 评估未发货退款链路稳定性 |

业务上线前补采至少一周人工基线；试运行目标值在基线形成后确认。安全底线为：高金额和部分售后自动处理数为0，重复退款和重复补发数为0。

## 19. 验收标准

### 19.1 核心验收场景

| 编号 | 前置条件 | 预期结果 |
|---|---|---|
| AC-01 | 未发货、全量、本次退款金额499.99元，且无需核验OMS配货状态 | 自动退款并确认抖音显示退款成功 |
| AC-02 | 未发货、本次退款金额500元 | 不退款，转管理人员并通知 |
| AC-03 | 任意场景、本次退款金额大于500元 | 不执行自动动作，转管理人员 |
| AC-04 | 部分商品、部分数量或部分金额售后 | 转人工，不执行退款/拒绝/补发 |
| AC-05 | 已发货、OMS低值品、金额<500元 | 弃件请求提交成功后立即退款，不等待快递确认或实际处理 |
| AC-06 | 已发货、OMS低值品字段缺失 | 转人工，不推断低值品 |
| AC-07 | 已发货、非低值品、无既有拦截工单 | 创建一个TMS拦截工单，不重复创建 |
| AC-08 | TMS待处理、剩余时间>12小时 | 进入等待复查，不退款、不通知成功 |
| AC-09 | TMS待处理、剩余时间=12小时 | 转人工并通知 |
| AC-10 | TMS拦截工单已完成 | 自动退款并确认退款成功 |
| AC-11 | 需要理解快递回复、拒收或已签收 | 转人工 |
| AC-12 | 退货物流发往指定退货地址且仍在运输 | 直接退款，无需等待签收或入库 |
| AC-13 | 退货物流明确异常、剩余时间>3天 | 等待复查，不拒绝、不退款 |
| AC-14 | 退货物流明确异常、剩余时间=3天 | 拒绝退款并发送固定留言 |
| AC-15 | 退货物流单号无法查询或结果未知 | 转人工，不自动拒绝 |
| AC-16 | 换货物流发往指定地址且结构化信息完整 | 创建OMS补发单；生成单号后完成 |
| AC-17 | 换货补发提交后未生成单号 | 不重复创建，转人工 |
| AC-18 | 换货物流异常 | 转人工，不自动拒绝换货 |
| AC-19 | 售后已退款成功或买家已撤销 | 结束任务，不重复操作 |
| AC-20 | 点击退款后结果未知 | 不重复点击，转人工 |
| AC-21 | 人工与Agent同时处理 | Agent重新校验后停止，记录人工接管 |
| AC-22 | 转人工或系统异常 | 指定群收到通知并固定@10人 |
| AC-23 | 自动处理成功 | 不发送钉钉通知 |
| AC-24 | 同一任务被重复扫描 | 仅存在一条任务，不重复取消配货、弃件、退款、拒绝、建工单或补发 |
| AC-25 | 低值品弃件提交失败或查询后仍未知 | 不退款，转人工；不重复提交弃件 |
| AC-26 | 退货拒绝成功但买家留言失败 | 不重复拒绝；仅幂等重试留言并告警 |
| AC-27 | 转人工通知首次失败或结果未知 | 支持幂等/查询时只产生一条有效消息；不支持时outbox至少一次投递，不漏报且重复消息使用同一delivery_id |
| AC-28 | Worker锁过期或执行中崩溃 | 新Worker先查动作台账和外部结果，旧Worker不能继续提交动作 |
| AC-29 | TMS工单已完成但类型不是快递拦截 | 转人工，不自动退款 |
| AC-30 | 指定退货地址发生版本变更或匹配多条地址 | 返回UNKNOWN并转人工，不自动退款或补发 |
| AC-31 | 剩余时间<=0或服务停机后恢复 | 标记EXPIRED并告警转人工，不执行过期自动动作 |
| AC-32 | 店铺会话与任务店铺不一致 | 阻止外部动作并告警，不得串店操作 |
| AC-33 | 运行账号尝试修改规则配置 | 权限拒绝并记录审计日志 |
| AC-34 | 运输方向曾匹配，但签收地址不是指定退货地址 | 按物流异常处理，不自动退款或补发 |
| AC-35 | 平台倒计时与按申请时间计算结果不一致 | 转人工，不使用任一冲突结果自动执行 |
| AC-36 | 平台未提供明确部分售后结构化标记 | 转人工，不自行推算是否为部分售后 |
| AC-37 | 拒绝退款请求超时或结果未知 | 查询平台最终状态；仍未知则不重复拒绝、不发送留言并转人工 |
| AC-38 | 两套时间差异未超过5分钟且处于同一业务区间 | 视为一致并继续按对应业务区间判断 |
| AC-39 | 未发货、金额<500元、需核验OMS且显示“未配货” | 直接退款并确认抖音显示退款成功 |
| AC-40 | 未发货、金额<500元、需核验OMS且显示“全部配货” | 仅取消配货成功后退款，并分别记录两个动作结果 |
| AC-41 | OMS取消配货失败或结果未知 | 转人工并通知，不执行退款，不重复取消配货 |
| AC-42 | OMS显示其他配货状态或状态无法明确判断 | 转人工并通知，不执行退款 |

### 19.2 发布门槛

- P0验收用例通过率100%。
- 每个P0功能至少覆盖正常、边界、失败、超时、重试、并发、恢复和权限场景。
- 高金额、部分售后、规则不清和结果未知场景无自动执行。
- 重复取消配货、重复弃件、重复退款、重复拒绝、重复TMS工单和重复OMS补发单均为0。
- 所有转人工与系统异常通知可达指定群，并正确@固定10人。
- 日志可追溯到规则版本、判断分支、动作和最终结果。
- 首批只允许3家店铺，其他店铺任务不进入自动处理。
- 业务完成UAT并书面确认后，才能进入试运行；试运行不等于正式上线。

## 20. 转人工原因码

| 原因码 | 含义 |
|---|---|
| MANAGER_REVIEW_AMOUNT | 本次退款金额>=500元 |
| PARTIAL_AFTER_SALE | 部分商品/数量/金额售后 |
| UNSUPPORTED_SCENARIO | 纠纷、平台介入、仲裁、补寄、维修等非V1场景 |
| CHAT_CONTEXT_REQUIRED | 需要聊天或协商记录判断 |
| COURIER_REPLY_REQUIRED | 需要理解快递回复或拒收语义 |
| FIELD_MISSING_OR_CONFLICT | 必需字段缺失或冲突 |
| LOW_VALUE_UNKNOWN | OMS低值品标记无法读取 |
| OMS_ALLOCATION_STATUS_UNKNOWN | OMS配货状态为其他、未知、缺失或冲突 |
| OMS_CANCEL_ALLOCATION_FAILED_OR_UNKNOWN | 取消配货失败或无法确认成功 |
| TMS_PENDING_NEAR_DEADLINE | TMS待处理且剩余时间<=12小时 |
| RETURN_LOGISTICS_UNKNOWN | 退回物流无法查询或结果不明确 |
| EXCHANGE_INFO_INVALID | 换货商品、数量或地址缺失/不一致 |
| ACTION_RESULT_UNKNOWN | 取消配货、退款、拒绝、买家留言、弃件、建工单或补发结果未知 |
| MANUAL_TAKEOVER | 检测到人工已进入或已处理 |
| LOGIN_OR_PAGE_ERROR | 登录失效、验证码、页面或接口异常 |
| AFTER_SALE_EXPIRED | 售后剩余时间<=0，停止自动动作并告警转人工 |
| RULE_NOT_MATCHED | 规则无法唯一匹配 |

## 21. 研发联调确认项

以下为技术与系统映射项，不改变已确认业务规则：

- [ ] 抖音任务获取方式、店铺切换方式及各字段稳定标识。
- [ ] 抖音“本次退款金额”、部分售后标记、售后截止时间和完成状态的字段映射。
- [ ] 抖音售后流程中“需进入OMS核验配货状态”的稳定触发字段或页面信号。
- [ ] OMS“未配货/全部配货/其他”状态映射、取消配货入口、取消原因、成功结果证据及幂等查询方式。
- [ ] OMS“低值品”字段的接口或页面标识，以及物流“弃件”动作的提交成功口径；不得等待快递确认后才退款。
- [ ] TMS创建拦截工单所需字段、工单去重查询和“待处理/已完成”状态码映射。
- [ ] 各店铺商家指定退货地址的配置来源、匹配字段和维护责任人。
- [ ] 指定退货地址版本、生效时间、多地址冲突和历史售后使用哪个地址版本；未完成UAT前关闭相关自动动作。
- [ ] 物流系统明确异常/停滞状态码；没有明确状态码时保持转人工。
- [ ] OMS补发单接口、商品/数量/地址映射和补发单号回执字段。
- [ ] 钉钉机器人接入方式，以及10位指定人员对应的userId或手机号。
- [ ] 钉钉接口是否支持客户端幂等键或消息查询；不支持时按outbox至少一次投递口径验收。
- [ ] 任务扫描间隔、复查间隔、锁超时和重试参数。
- [ ] 账号权限、凭证托管、日志保留时长和审计访问权限。
- [ ] 补充换货OMS创建补发单、生成补发单号的原始现状截图；截图仅限公司内部使用。该项是换货场景UAT前置条件，不阻塞其他退款场景研发。
- [ ] 在公司需求池补建或关联抖音退款Agent正式REQ编号；PRD已输出不等于已排期或已进入开发。

## 22. 上线与回滚

1. 先在测试账号或影子模式运行，只做判断和记录，不执行不可逆动作。
2. 使用本PRD验收场景完成测试和业务UAT。
3. 首批仅开启3家店铺，可按店铺独立开关。
4. 试运行期间重点监控转人工原因、系统异常、时效和幂等拦截。
5. 出现重复动作、高风险误处理、账号串店、完成状态无法确认或通知链路失效时，立即关闭对应店铺自动执行，保留只读扫描或全量转人工。
6. 回滚只停止后续Agent动作，不撤销已完成的退款、拒绝或补发；已执行任务交由人工核查。

## 23. 可追溯产物

| 产物 | 状态 | 用途 |
|---|---|---|
| 抖音退款SOP 2.0项目基线 | 已提供 | 客服现状与原始业务输入 |
| 抖音退款Agent规则确认稿V1.0 | 已业务确认 | 业务规则事实源 |
| 抖音退款Agent PRD V1.0 | 待研发评审 | 开发、测试和验收依据 |
| 原始现状流程截图 | 已整理 | 流程说明与联调参考，仅限公司内部使用 |
| OMS未发货配货状态与取消入口截图 | 已提供 | 未配货、全部配货及取消配货操作证据 |
| 字段映射表/API文档 | 待研发补充 | 系统联调依据 |
| UAT记录与试运行数据 | 待后续产生 | 上线决策证据 |
