## ADDED Requirements ### Requirement: 后台新登录密码统一校验 后台既有设置新登录密码的表单 SHALL 按用户最新确认使用专用统一校验:长度 8~12 位,仅允许 ASCII 英文字母和数字,必须同时包含大写字母、小写字母和数字。特殊符号、空白、中文、emoji 和其他非英文字母数字字符 MUST 拒绝;用户确认 MUST 优先于原对接说明的四类字符规则。 #### Scenario: 有效新密码 - **WHEN** 用户在后台本人改密、账号创建、店铺初始账号、企业创建或企业改密入口输入 `Abc12345` - **THEN** 新密码校验 MUST 通过 - **AND** 新密码/确认密码输入限制及说明 MUST 为 8~12 位,仅英文字母和数字,且大写、小写和数字三类均必需 - **AND** 需要确认密码的表单 MUST 验证其与新密码一致 #### Scenario: 无效新密码 - **WHEN** 用户输入 7 位、13 位、缺少大写/小写/数字任一类的密码,或包含特殊符号、空白、中文、emoji 等非法字符的密码 - **THEN** 前端 MUST 阻止提交并展示具体规则提示 - **AND** MUST NOT 静默 trim 密码后当作合法值提交 #### Scenario: 字符类别齐全但含特殊符号 - **WHEN** 用户输入 `Abc1234!`,长度符合且已包含大写、小写和数字 - **THEN** 前端 MUST 因 `!` 是禁止的特殊符号拒绝该密码 - **AND** MUST 提示只允许英文字母和数字,不能按原四类字符规则放行 #### Scenario: 修改账号未设置新密码 - **WHEN** 既有账号修改操作未提供可选 `password` - **THEN** 页面 MUST NOT 因缺少密码阻止其他字段修改 - **AND** MUST NOT 提交空密码覆盖原值 - **AND** 本批次 MUST NOT 仅为接口清单补建当前没有的账号密码编辑入口 ### Requirement: 后台密码接口字段与旧密码兼容 后台密码服务 SHALL 保持各接口规定的请求字段;本人改密和账号独立改密的新密码使用 `new_password`,账号创建/可选修改及企业创建/改密使用 `password`,店铺初始密码使用 `init_password`。后端字段级错误 MUST 以既有 `msg` 或提供的 `message` 展示,不替换为笼统提示,不记录密码。 #### Scenario: 独立修改账号密码 - **WHEN** 既有服务调用 `PUT /api/admin/accounts/{id}/password` - **THEN** 请求体 MUST 按本批次说明使用 `new_password`,而不是当前旧封装的 `password` - **AND** 本批次 MUST NOT 将其他账号接口的 `password` 改名 #### Scenario: 使用旧密码登录和本人改密 - **WHEN** 用户使用仍被后端接受的旧密码登录或填写本人改密 `old_password` - **THEN** 前端 MUST NOT 对这些旧密码输入套用新的 8~12 位/三类/禁止特殊符号限制 - **AND** 本人改密成功后的清理表单、清理登录态和返回登录页行为 MUST 保留 #### Scenario: 非登录密码与 C 端保持不变 - **WHEN** 实施本批次密码适配 - **THEN** 操作密码、WiFi 密码和通用校验器其他调用行为 MUST 保持不变 - **AND** 本仓库公开扫码注册页面和所有 `/api/c/v1` 服务 MUST 不修改 #### Scenario: 展示后端字段级原因 - **WHEN** 密码相关请求返回包含具体校验原因的 `msg` 或 `message` - **THEN** 页面 MUST 展示该原因且不重复弹错 - **AND** 请求、日志和错误反馈 MUST NOT 输出输入的密码值