---
date: 2026-04-22
type: change
scope: mp-traveler
pr: "#1197"
issue: "#1196"
breaking: false
consumers: [mp-miniprogram]
---

# 小程序新增/编辑出行人接口移除 `travelerType` 入参，后端按字典实时计算

## 摘要

`POST /mp/user/traveler` 与 `PUT /mp/user/traveler/{id}` 的请求体**不再接收 `travelerType` 字段**。出行人类型（ADULT/CHILD/YOUNG_CHILD/BABY）由后端依据 `birthday` + 字典 `traveler_type_age_rule` **实时计算**，且**不落库**——字典规则后续调整时历史数据口径会自动跟随，无须数据迁移。

## 前端需要做什么

### 1. 新增 / 编辑出行人

- **删除请求体里的 `travelerType` 字段**。即使偷传也会被后端忽略（字段已从 DTO 删除，JSON 反序列化静默丢弃）。
- `birthday` 仍可选；不传则后端兜底 `ADULT`。

**之前**：

```json
POST /mp/user/traveler
{
  "name": "张三",
  "travelerType": "CHILD",         // ← 删掉
  "birthday": "2020-05-01",
  "idCardType": "PASSPORT",
  "idCardNo": "E12345678"
}
```

**之后**：

```json
POST /mp/user/traveler
{
  "name": "张三",
  "birthday": "2020-05-01",
  "idCardType": "PASSPORT",
  "idCardNo": "E12345678"
}
```

### 2. 响应字段不变

`travelerType` 仍出现在所有响应 VO（POST/PUT/GET/GET list）里，值由后端按 birthday + 字典实时算：

```json
{
  "code": 200,
  "data": {
    "travelerId": 2046901540208214018,
    "name": "张三",
    "birthday": "2020-05-01",
    "travelerType": "CHILD",   // 实时计算
    ...
  }
}
```

## 年龄分段规则（来自字典 `traveler_type_age_rule`）

| 类型 | 年龄范围（含下限不含上限） |
|---|---|
| BABY | 0 ≤ age < 2 |
| YOUNG_CHILD | 2 ≤ age < 5 |
| CHILD | 5 ≤ age < 12 |
| ADULT | 12 ≤ age |
| 无 birthday | → ADULT（兜底） |

> 规则由管理端「字典管理 → traveler_type_age_rule」配置，后端缓存到 Redis `cache:dict:data:traveler_type_age_rule`，改动后自动生效。

## 兼容性

- **非 breaking**：旧前端仍带 `travelerType` 不会报错，字段被静默忽略。
- 下单路径 `MpOrderTravelerSaveReqVO` **暂不涉及**（仍接受 `travelerType`），只改「常用出行人」页的 `MpTravelerRequest`。

## 相关

- 后端 PR: https://git.1814.love:8443/wx/HL/pulls/1197
- 工单: https://git.1814.love:8443/wx/HL/issues/1196
