# identity-ocr-face Specification ## Purpose 定义 PRI-MP-USER-003 实名认证、证件 OCR、人脸列表与人脸采集能力。OCR、实名核身和人脸保存须严格使用旧版字段与交互顺序,并由用户明确确认后执行。 ## Requirements ### Requirement: REQ-USER-003-01 USER-003 实名 OCR 人脸能力 系统 MUST 按 PRI-MP-USER-003 上下文包、功能点专项矩阵和集成队列裁定口径实现本模块能力,并保留跨模块契约、真实接口边界和人工联调边界。 - 历史追溯:本模块最初从 `develop@9a529fc` 的 `feature/PRI-MP-USER-003-identity-ocr-face` 分支开发;该记录不构成当前业务或验收要求。 - MUST:覆盖当前模块功能点专项矩阵,并对每个功能点给出已实现、暂缓、划归其他模块、待确认或不属于本模块的结论。 - MUST:记录契约与依赖闭环,未完成依赖必须使用待开放、禁用态或安全兜底。 - MUST:自检报告包含新版设计基线、旧源码功能基线、视觉布局基线、真实接口与禁止模拟业务数据检查。 - MUST:提交待集成时列出共享文件清单、固定检查结果和人工联调项。 - MUST NOT:子 Agent 自行合并或推送 `develop`。 - MUST NOT:使用 mock、本地假接口、硬编码业务返回或静态业务数据替代真实接口。 - MUST NOT:在页面加载、显示、回跳或刷新时自动触发真实支付、医保、退款、订单创建、预约提交、实名/OCR/人脸、IM/TRTC 等高风险写操作;真实写操作必须通过用户确认、授权和旧版接口字段校验。 #### Scenario: 模块提交待集成 - Given PRI-MP-USER-003 模块开发完成 - When 子 Agent 提交待集成材料 - Then OpenSpec strict、功能点矩阵闭环、契约与依赖闭环、共享文件清单、禁止 mock/硬编码扫描、人工联调项和固定检查结果 MUST 齐全。 ### Requirement: REQ-USER-003-02 实名认证入口与上下文承接 系统 MUST 在“我的”页提供实名认证与人脸识别入口,并基于当前登录态、医院上下文和当前就诊人生成受控参数,不得绕过 USER-002 就诊人维护契约。生产页面仅可渲染最小化、非敏感状态;不得渲染身份证号、手机号、`openID`、验证码、就诊人标识、完整请求对象或本地证件图片路径。 #### Scenario: 从我的页进入实名认证 - Given 用户已登录、已选择医院并存在当前就诊人 - When 用户点击“实名认证” - Then 系统 MUST 进入 `pages/mine/identity/identityVerify/identityVerify` - And 页面 MUST 仅展示实名资料就绪、待补齐或人工联调边界等最小化状态,不得展示当前就诊人、医院、手机号或身份证字段值。 #### Scenario: 当前上下文不足 - Given 用户未登录、未选择医院或未选择当前就诊人 - When 用户点击实名认证或人脸识别入口 - Then 系统 MUST 使用 toast 提示补齐前置条件 - And 系统 MUST NOT 发起 OCR、实名核身或人脸接口调用。 ### Requirement: REQ-USER-003-03 OCR 与实名核身受控契约 系统 MUST 按旧源码真实链路提供 OCR、短信验证码与实名核身能力。生产页面只可显示证件已选择、未选择、资料待补齐和执行结果等最小化状态;不得展示 OCR 或实名核身完整参数、验证码、`openID`、证件号、手机号或本地临时文件路径。 #### Scenario: 选择证件图片 - Given 用户进入实名认证页面 - When 用户选择证件图片 - Then 系统 MUST 仅记录本地临时图片路径作为未上传的页面控制状态,并仅展示非敏感的“证件图片已选择”状态 - And 系统 MUST NOT 渲染路径、图片元数据或 `01020017` 请求参数 - And 系统 MUST NOT 自动调用 `wx.uploadFile` 或上传证件图片。 #### Scenario: 用户确认后执行 OCR 与实名核身 - Given 当前医院、就诊人、证件图片和必要身份字段有效 - When 用户在页面明确确认识别或实名核验 - Then 系统 MUST 按旧源码顺序使用图片上传、`01020017`、`01020014`、`01020015`、`01020023` 执行对应真实链路 - And 系统 MUST 在缺少用户确认或必要业务字段时拒绝提交,不得以 mock 或静态成功替代服务端结果。 ### Requirement: REQ-USER-003-04 人脸列表、采集准备与接口冲突闭环 系统 MUST 提供人脸列表和采集页面,并按旧源码顺序执行 `88030003`、相机拍照、`88010021`、`88030002`。页面只能展示采集准备、处理、保存与失败状态;不得展示采集前校验、图片处理或保存的完整参数对象,也不得渲染 `openID`、身份证号、手机号、验证码、就诊人标识或本地图片路径。 #### Scenario: 查询人脸列表 - Given 用户进入人脸识别列表页面 - When 当前上下文可用 - Then 系统 MAY 调用只读接口 `88030001` 查询人脸列表 - And 系统 MUST 对空列表、网络错误和业务错误提供页面态兜底。 #### Scenario: 用户确认采集人脸 - Given 当前医院和就诊人信息有效 - When 用户点击开始采集并明确确认 - Then 系统 MUST 依次执行 `88030003` 患者校验、相机拍照、`88010021` 图片处理和 `88030002` 人脸保存 - And 系统 MUST NOT 渲染这些接口的请求对象或任何敏感参数 - And 用户未确认、取消相机或必要字段缺失时系统 MUST 停止后续步骤并显示真实失败状态。 #### Scenario: 接口语义冲突 - Given 旧源码与接口材料对 `88010021` 和 `88030002` 语义存在不一致 - When 系统展示或封装人脸能力 - Then 系统 MUST 记录 `88010021` 暂按人脸图片处理/转换理解、`88030002` 暂按人脸采集保存理解 - And 最终语义 MUST 列入真机人工联调裁定。 ### Requirement: REQ-USER-003-05 实名与人脸二级页响应式布局 实名认证、人脸列表和人脸采集页 MUST 在微信原生导航栏下保持单一导航层级,且固定底部操作区 MUST 在小屏和安全区设备上无横向溢出、屏外按钮或内容遮挡。 #### Scenario: 实名认证页显示四个操作 - **GIVEN** 用户进入实名认证页 - **WHEN** 页面渲染选择证件图片、识别身份证、拍照实名核验和人脸识别四个操作 - **THEN** 四个操作 MUST 以两列等宽布局完整显示 - **AND** 任一按钮 MUST NOT 被推出可见区域或遮挡页面内容。 #### Scenario: 人脸页使用原生导航 - **GIVEN** 页面 JSON 已配置微信原生导航标题 - **WHEN** 用户进入人脸列表或采集页 - **THEN** 页面 MUST NOT 重复渲染页内返回按钮和同名导航标题 - **AND** 刷新操作 MUST 保留为尺寸受控的内容操作。