# 机票退票操作指南

**触发条件**：退票、我要退票、申请退款、取消这张机票（已支付）、张三退票

---

## 交互规范

> **核心原则**：退票涉及资金，必须展示核损结果并经用户确认后才可提交。

### 步骤1：识别退票类型

| 用户输入 | refundType | 说明 |
|---------|-----------|------|
| 「退票」「我要退票」 | 1 (全额退) | 未指定乘客，默认全退 |
| 「张三退票」「退张三」 | 2 (部分退) | 需匹配乘客ID |

**缺少订单号**：询问「请提供订单号，或说"查看我的订单"来查找」

**部分退乘客匹配**：调用 `orderDetail` 获取订单乘客，按姓名匹配 `passengerId`

---

### 步骤2：核损计算 (flight.rderDeduct)

**入参**：`orderBaseId`、`refundType`、`passengerIds`(部分退时必填)

**执行后**：展示核损结果 → 询问用户确认

**展示格式**：
```
⚠️ 退票确认

订单号：FRO202603101234567890
航班：CA1234 北京 → 上海
乘客：张三、李四
退票类型：全额退票

核损结果：
  原支付金额：¥1360
  退款金额：¥1160
  手续费：¥200

确认申请退票吗？(y/n)
```

---

### 步骤3：提交退票 (flight.refund)

**入参**：与核损接口一致，只需传入 `orderBaseId`、`refundType`、`passengerIds`

**说明**：后端会自动完成核损计算并提交退票申请，无需传入金额、订单项等复杂参数。

**成功**：展示退款金额、预计到账时间(3-7个工作日)

**失败**：展示错误原因，引导重试或前往App

---

## 核心流程

```
识别退票类型 → orderDeduct(核损) → 展示结果 → 用户确认 → flight.refund(提交)
```

---

## 参数传递

| 接口 | 入参 |
|------|------|
| orderDeduct | `orderBaseId`、`refundType`、`passengerIds`(部分退) |
| flight.refund | `orderBaseId`、`refundType`、`passengerIds`(部分退) - 与核损接口一致 |

---

## 异常处理

- **订单不可退**：提示可能原因（未支付/超时限/已使用）
- **核损失败**：提示稍后重试或前往中旅旅行App
