docs(changelog): #6155 补全出行信息身份证国籍/民族自动兜底(非身份证需前端补输入框)
changelog-filename-gate / validate (push) Successful in 2s

Co-Authored-By: Claude <noreply@anthropic.com>
这个提交包含在:
API Changelog Bot
2026-08-22 07:35:54 +00:00
共同撰写人 Claude
父节点 3c0a8ce1a7
当前提交 acf586b8f3
@@ -0,0 +1,43 @@
---
schema: "hl-changelog/v2"
ticket: "6155"
title: "补全出行信息:身份证国籍/民族自动兜底,非身份证需前端增加输入框"
consumer: "admin"
author: "wx"
change_type: "修改接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "pending"
frontend_owner: "mmg"
frontend_ref: ""
target_release: ""
verified_at: "2026-08-22"
status_note: "订单详情「补全出行信息」表单:身份证(ID_CARD)出行人提交时国籍/民族传空字符串不再被 581101 拒绝,后端自动兜底为「中国/汉族」;非身份证证件(护照等)仍要求国籍/民族非空,前端需在证件类型非身份证时增加国籍/民族输入框。"
updated_at: "2026-08-22"
base: "dev-v3"
---
# 补全出行信息:身份证国籍/民族自动兜底,非身份证需前端增加输入框(#6155)
## ⚠️ 关键变化
- **之前**:`PUT /v3/admin/orders/{id}/traveler-info`(补全出行信息)与 `POST /v3/admin/orders/{id}/traveler/batch-edit`(批量编辑)对国籍/民族**空字符串一律抛 581101**(12301 必报字段缺失)。前端表单无国籍/民族输入框,身份证出行人补全提交被拒。
- **现在**:证件类型 = 身份证(ID_CARD)时,国籍/民族空字符串放行,后端兜底为「中国/汉族」落库;**证件类型 ≠ 身份证时维持原行为**(空串仍抛 581101)。
## 变更接口清单
| # | 接口 | 方法 | 路径 | 变更类型 | 说明 |
|---|------|------|------|----------|------|
| 1 | 补全出行信息 | PUT | `/v3/admin/orders/{id}/traveler-info` | 校验行为变更 | ID_CARD 时 nationality/race 空串不再抛 581101,兜底「中国/汉族」;非身份证仍抛 |
| 2 | 批量编辑出行人 | POST | `/v3/admin/orders/{id}/traveler/batch-edit` | 校验行为变更 | 同上(两处共用 `validate12301Fields`,行为一致) |
## 前端动作(非身份证场景)
- 身份证场景:**前端无需改动**,空串提交即可,后端兜底。
- 非身份证(护照等)场景:**前端需增加国籍/民族输入框**,用户显式填写后再提交,否则仍报 581101。
- 字段说明:`nationality`(国籍)、`race`(民族)传空字符串时——身份证兜底「中国/汉族」;非身份证报 581101「12301 必报字段缺失(国籍 / 民族不能为空字符串)」。
## 验证证据
- 单测:`TravelerServiceTest` +3(身份证空串放行 / 非身份证 nationality 空串仍抛 / 非身份证 race 空串仍抛)、`TravelerConverterTest` +4(新增空串兜底 / 新增 null 兜底 / 更新空串不覆盖原值 / 更新 null 不覆盖原值),全绿。
- TEST 网关实测:见工单 #6155 验收评论。