# 微信小程序 · 出发准备清单「接送机」拆成「到达」+「离开」两项 + 按出行人覆盖三态

- **变更日期**: 2026-04-23
- **PR**: #1289
- **端**: 微信小程序（管理端不涉及）
- **影响面**: 行前准备清单（出发倒计时聚合接口）
- **兼容性**: **需要前端同步调整**（清单项数量从 6 变 7，单项 key 新增，状态值新增 `WARNING`）

---

## 变化一：清单项数量 6 → 7

| 之前 | 现在 |
|---|---|
| 6 项：`DEPOSIT_PAID` / `TRAVELER_INFO` / **`ARRIVAL_INFO`**（接送机合一）/ `CONTRACT_SIGN` / `INSURANCE` / `CHECKLIST_CONFIRMED` | 7 项：`DEPOSIT_PAID` / `TRAVELER_INFO` / **`ARRIVAL_INFO`**（到达）/ **`DEPARTURE_INFO`**（离开）/ `CONTRACT_SIGN` / `INSURANCE` / `CHECKLIST_CONFIRMED` |

### `ChecklistItemKey` 取值对照

| 新 key | 之前文案 | 现在文案 |
|---|---|---|
| `ARRIVAL_INFO` | `接送机信息` | **`到达信息`** |
| `DEPARTURE_INFO`（新增） | — | **`离开信息`** |

前端如果用 `ARRIVAL_INFO` 这个枚举值做判断：逻辑保留即可，但文案"接送机"需要改为"到达"；新增 `DEPARTURE_INFO` 需要渲染一项。

---

## 变化二：状态新增 `WARNING`（黄色提示态）

之前单项状态只有两个：`DONE / PENDING`；现在在到达/离开两项上新增 **`WARNING`**。

### 到达 / 离开项的三态判断

| 状态 | 触发条件 | 文案示例（title + subtitle） |
|---|---|---|
| `DONE` | 订单有至少 1 批到达/离开，且**所有出行人都已被某个批次覆盖** | 「到达信息已填」 · 「N 批 · 全员已覆盖」 |
| `WARNING`（新）| 有批次但**漏填了部分出行人** | 「到达信息未填全」 · 「还有 X 人未安排」 |
| `PENDING` | **0 批次** | 「填写到达信息」 · 「司机将根据此信息接机」 |

离开项同理，文案里"到达 / 接机" → "离开 / 送机"。

> 前端如果沿用「DONE=绿色 / PENDING=灰色」两色方案，新增一个"黄色"（`WARNING`）即可。

---

## 变化三：`actionPayload` 新增 `section` 字段

点击「到达 / 离开」项跳转表单时，`actionPayload` 新增 `section` 区分是到达还是离开：

```json
{
  "title": "填写到达信息",
  "status": "PENDING",
  "actionType": "NAVIGATE",
  "actionPayload": {
    "target": "arrival_form",
    "orderId": 1900001,
    "section": "arrival"          // ← 新增，取值 arrival | departure
  }
}
```

前端跳到达/离开表单页时，可用 `section` 定位默认展开的 tab。

---

## 接口

路径不变（以 Swagger 为准）。返回体结构：

```json
{
  "code": 200,
  "data": {
    "items": [
      { "key": "DEPOSIT_PAID",        "status": "DONE",    "title": "...", "subtitle": "..." },
      { "key": "TRAVELER_INFO",       "status": "PENDING", "title": "...", "subtitle": "..." },
      { "key": "ARRIVAL_INFO",        "status": "WARNING", "title": "到达信息未填全", "subtitle": "还有 1 人未安排",
        "actionType": "NAVIGATE", "actionPayload": { "target": "arrival_form", "orderId": 1900001, "section": "arrival" } },
      { "key": "DEPARTURE_INFO",      "status": "PENDING", "title": "填写离开信息", "subtitle": "司机将根据此信息送机",
        "actionType": "NAVIGATE", "actionPayload": { "target": "arrival_form", "orderId": 1900001, "section": "departure" } },
      { "key": "CONTRACT_SIGN",       "status": "DONE" },
      { "key": "INSURANCE",           "status": "DONE" },
      { "key": "CHECKLIST_CONFIRMED", "status": "PENDING" }
    ]
  },
  "success": true
}
```

---

## 前端需要做的事

1. 清单项渲染循环：从 6 项改为按后端返回 `items` 数组长度渲染（避免硬编码数量）
2. 新增 `DEPARTURE_INFO` 的 icon / 文案映射
3. 新增 `WARNING` 状态的颜色 / 图标样式
4. 点击到达/离开项跳转时，从 `actionPayload.section` 判断 tab 默认态

---

## 不影响范围

- 其它 5 项（`DEPOSIT_PAID / TRAVELER_INFO / CONTRACT_SIGN / INSURANCE / CHECKLIST_CONFIRMED`）行为**零变化**
- 到达 / 离开信息的 CRUD 接口（`/mp/order/{orderId}/arrival` 等）**零变化**
- 管理端行前清单（若有）**不涉及**

---

## 相关

- PR：[wx/HL#1289](https://git.1814.love:8443/wx/HL/pulls/1289)
- 部署：`hl-order-service-v2`（8094）
