# 出行人补全：身份证号自动回填「性别 / 出生日期」（前端对接）

> 模块：订单 · 补全出行信息弹窗（管理后台）
> 类型：**前端对接说明（纯前端逻辑，后端无改动）**
> 日期：2026-06-28
> 背景：「补全出行信息」弹窗里，出行人填了身份证号后，性别、出生日期目前还要手动再填一遍。这两项本就编码在身份证号里，前端可在输入证件号后**自动解析回填**，减少手填和填错。证件号本身已正常入库，后端无需改动。

---

## 一、触发条件

- **仅当「证件类型 = 身份证」** 时启用自动回填；其它证件类型（护照 / 港澳台通行证等）无法从证件号推导，保持手填。
- 在「证件号」输入变化 / 失焦时，证件号长度为 **18 位**（现行）或 **15 位**（旧版）且校验通过，则解析并回填「性别」「出生日期」。
- 回填后两个字段**仍允许手动修改**（极个别证件号与实际不符时可人工覆盖）。

## 二、解析规则

### 18 位身份证（现行标准，绝大多数）
- **出生日期** = 第 7~14 位（`YYYYMMDD`）→ 格式化为 `YYYY-MM-DD`
- **性别** = 第 17 位：**奇数 = 男，偶数 = 女**

示例：`150782199502081450`
- 第 7~14 位 = `19950208` → 出生日期 `1995-02-08`
- 第 17 位 = `5`（奇数）→ 性别 `男`

### 15 位身份证（旧版，少量历史证件）
- **出生日期** = 第 7~12 位（`YYMMDD`），年份前补 `19` → `19YY-MM-DD`
- **性别** = 第 15 位（末位）：**奇数 = 男，偶数 = 女**

## 三、建议的健壮性处理（前端自行把控）

- 长度不足 / 非 18·15 位 / 非身份证类型：不回填，不报错（用户继续手填）。
- 建议顺带校验 18 位的**校验码（第 18 位）**与出生日期合法性（月 1~12、日 1~31、不晚于今天）；校验不过则不自动回填，可给轻提示「身份证号格式有误」。
- 第 18 位可能是 `X/x`，按 18 位身份证规则正常处理（不影响性别取第 17 位、出生日期取第 7~14 位）。
- 回填策略：识别到合法身份证号即覆盖回填这两项；用户手改后以用户值为准。

## 四、范围

- 涉及页面：订单详情 →「补全出行信息」弹窗的每个出行人卡片。
- 后端：**无改动**。性别 / 出生日期 / 证件号字段及保存接口均不变，前端回填后按原样提交即可。
