# 【修改接口·管理后台】核团详情出行人补充出生日期和年龄（#5068）

> **Issue**: [#5068](https://git.1814.love:8443/wx/HL/issues/5068) | **PR**: [#5069](https://git.1814.love:8443/wx/HL/pulls/5069) | **服务**: `hl-order-service-v3` | **更新时间**: 2026-07-19 11:23

## 1. 关键变化

- 核团详情 `travelers[]` 新增可空字段 `birthday` 和 `age`。
- `birthday` 为出行人出生日期，格式 `yyyy-MM-dd`。
- `age` 为按订单出发日期计算的周岁。
- 出生日期为空、订单出发日期为空，或出生日期晚于出发日期时，`age` 返回 `null`。
- 出行人手机号和证件号继续沿用原有脱敏规则。

## 2. 受影响接口

`GET /v3/admin/order/{orderId}/settlement/return-detail`

- HTTP 方法、URL、认证、路径参数及响应整体结构均不变。
- 本次只增加 `data.travelers[]` 的响应字段，不增加请求参数。

## 3. 新增响应字段

| 字段 | JSON 类型 | 是否可空 | 说明 |
|---|---|---|---|
| `data.travelers[].birthday` | string | 是 | 出生日期，格式 `yyyy-MM-dd` |
| `data.travelers[].age` | number | 是 | 以订单出发日期为基准计算的周岁 |

### 响应示例

```json
{
  "code": 200,
  "message": "成功",
  "data": {
    "travelers": [
      {
        "travelerId": "71001",
        "travelerName": "张三",
        "travelerType": "ADULT",
        "travelerTypeName": "成人",
        "birthday": "1990-07-20",
        "age": 36,
        "idType": "ID_CARD",
        "idTypeName": "身份证",
        "phone": "138****1234",
        "idCardNo": "110***********1234"
      }
    ]
  },
  "success": true
}
```

> 示例仅展示本次相关结构；核团详情中的订单、司机车辆、应收和收款等字段保持不变。

## 4. 年龄计算与空值边界

| 场景 | `birthday` | `age` |
|---|---|---|
| 出生日期和订单出发日期均有效 | 返回出生日期 | 返回两个日期之间的完整周岁 |
| 出生日期为空 | `null` | `null` |
| 订单出发日期为空 | 返回出生日期 | `null` |
| 出生日期晚于订单出发日期 | 返回出生日期 | `null` |

当前已合并实现不会在订单出发日期缺失时改用服务器当前日期。Issue #5068 初始描述中的“按当前日期兜底”尚未进入代码；若业务仍需要该口径，应另行变更后端实现和本通知。

## 5. 前端适配清单

- [ ] 在核团详情出行人列表展示 `birthday` 和 `age`。
- [ ] 对两个字段均做 `null` 兼容，不拼接 `null岁` 或展示无效日期。
- [ ] 年龄直接使用后端返回值，不在浏览器端按当前日期重新计算。
- [ ] 继续使用现有脱敏后的 `phone` 和 `idCardNo`，不要尝试恢复明文。
- [ ] 不改变接口 URL、请求参数和其他响应字段的解析逻辑。

## 6. 兼容性与发布边界

- 新增字段对忽略未知 JSON 字段的旧客户端向后兼容。
- 字段为可空值，前端不能把 `birthday` 或 `age` 设为必填。
- PR #5069 已于 2026-07-19 10:47 合并到 `dev-v3`，合并提交为 `1da9389fbbc567dfd8b98703a6b9ebbfb2ea1d69`。
- 测试环境公网网关已验证新字段返回，见下方验证证据。

## 7. 验证证据

- 后端定向测试：`mvn -pl hl-order-service-v3 -am -DfailIfNoTests=false -Dtest=SettlementReturnDetailQueryServiceTest,SettlementControllerTest test`。
- 测试环境公网网关验证：`GET https://web.test.1814.love:9443/v3/admin/order/2077233855281971202/settlement/return-detail` 连续 6 次返回 `code=200`。
- 实测订单出发日为 `2026-07-13`，首位出行人 `birthday=1991-05-27`，接口返回 `age=35`，与按订单出发日计算的周岁一致。
- 实测响应中 `phone`、`idCardNo` 仍为脱敏值。
