diff --git a/changelogs-v2/2026-08/22_6155_补全出行信息身份证国籍民族自动兜底非身份证需前端补输入框-修改接口-管理后台.md b/changelogs-v2/2026-08/22_6155_补全出行信息身份证国籍民族自动兜底非身份证需前端补输入框-修改接口-管理后台.md new file mode 100644 index 00000000..866c3002 --- /dev/null +++ b/changelogs-v2/2026-08/22_6155_补全出行信息身份证国籍民族自动兜底非身份证需前端补输入框-修改接口-管理后台.md @@ -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 验收评论。