# 出行人新增（单加）拦截未来出生日期 — 修改接口 — 管理后台

> 变更类型：⚠️ 校验增强（新增 `@PastOrPresent` 守卫，未来出生日期被拒）
> 端类型：管理后台（订单 → 出行人 → 单个新增）
> 日期：2026-06-18
> 服务：hl-order-service-v3（traveler 模块）
> PR：https://git.1814.love:8443/wx/HL/pulls/4018 （每日定时代码审查发现，无关联工单）

---

## ⚠️ 关键说明

出行人类型（成人/儿童/小童/幼童）今日改为**后端按出生日期自动派生**（#3981），不再由前端传 `travelerType`。此前**单个新增**路径 `birthday` 仅校验 `@NotNull`，未拦截「未来日期」——传一个未来出生日期会被静默派生成「幼童(BABY)」，与批量编辑路径（已显式抛 `581114 出生日期不能晚于今天`）口径不一。

本次给单加请求 `birthday` 补 `@PastOrPresent` 守卫对齐：**允许「今天」、只拒「未来」**。

**前端影响：** 调 `POST /v3/admin/order/{id}/traveler` 时若 `birthday` 晚于今天，现返回 **400 参数校验失败**（message：`出生日期不能晚于今天`），不再静默落库为幼童。请前端日期选择器侧限制出生日期 ≤ 今天（与既有批量编辑校验一致）。

---

## 1. 受影响接口

**`POST /v3/admin/order/{id}/traveler`**（单个出行人新增，路径与出入参结构均不变）

请求体 `birthday` 字段校验规则变化：

| 字段 | 旧规则 | 新规则 |
|------|--------|--------|
| `birthday` | `@NotNull`（仅非空） | `@NotNull` + `@PastOrPresent`（非空且 ≤ 今天） |

### 反例（未来日期）请求

```json
POST /v3/admin/order/123456/traveler
{ "name": "测试", "birthday": "2099-01-01", "idType": "ID_CARD", "idNo": "..." }
```

响应（400，Bean 校验失败）：

```json
{ "code": 400, "message": "出生日期不能晚于今天", "data": null }
```

合法日期（今天及以前）行为不变。批量编辑路径 `PUT .../travelers/batch` 早已有等价拦截，本次仅补齐单加路径。
