6.1 KiB
6.1 KiB
ADDED Requirements
Requirement: 后台新登录密码统一校验
后台既有设置新登录密码的表单 SHALL 按 2026-10-14 用户修正规则校验:长度 8~12 位,大写字母、小写字母、数字、半角特殊符号四类至少包含三类。可打印 ASCII 标点符号 MUST 允许;空白、中文、控制字符、emoji 等非 ASCII 字符 MUST 拒绝,不静默 trim。
Scenario: 有效新密码
- WHEN 用户在后台本人改密、账号创建、店铺初始账号、企业创建或企业改密入口输入
Abc12345 - THEN 新密码校验 MUST 通过
- AND 新密码/确认密码输入限制及说明 MUST 为 8~12 位,四类字符至少包含三类,允许半角特殊符号
- AND 需要确认密码的表单 MUST 验证其与新密码一致
Scenario: 无效新密码
- WHEN 用户输入 7 位、13 位、只包含两类字符的密码,或包含空白、中文、emoji 等非法字符的密码
- THEN 前端 MUST 阻止提交并展示具体规则提示
- AND MUST NOT 静默 trim 密码后当作合法值提交
Scenario: 含特殊符号且满足三类
- WHEN 用户输入
Admin@12345、ABC1234!、abc1234!或Abcdefg! - 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 除用户明确追加的代理扫码注册密码校验及失败提示外,其余 C 端页面和
/api/c/v1服务 MUST 不修改
Scenario: 展示后端字段级原因
- WHEN 密码相关请求返回包含具体校验原因的
msg或message - THEN 页面 MUST 展示该原因且不重复弹错
- AND 请求、日志和错误反馈 MUST NOT 输出输入的密码值
Requirement: 本人改密遮罩覆盖整个后台
本人修改密码弹窗 SHALL 使用 append-to-body 脱离顶栏堆叠上下文;遮罩 MUST 覆盖左侧菜单、顶栏和内容区,避免白色菜单压在遮罩上层,同时保留原表单、确认和关闭行为。
Scenario: 从顶栏打开改密弹窗
- WHEN 已登录用户打开本人修改密码弹窗
- THEN 弹窗遮罩 MUST 挂载到 body,左侧菜单 MUST 与页面其他背景一起变暗且不可点击
- AND 弹窗 MUST 继续支持 375px 视口,规则说明与错误提示不得重叠
Requirement: 代理扫码注册密码复用统一规则
公开代理扫码注册表单及注册服务 SHALL 按用户明确追加范围复用后台新密码规则:8~12 位,大写字母、小写字母、数字、半角特殊符号至少三类,禁止空格和中文等非法字符,不静默 trim。注册路径、其他字段、短信验证码和免 Token 行为 MUST 保持不变,不扩大到其他 C 端功能。
Scenario: 输入有效注册密码
- WHEN 用户输入
Abc12345、ABC1234!、abc1234!或Abcdefg! - THEN 表单及服务 MUST 校验通过,原样发送
password至既有注册接口 - AND 页面 MUST 展示完整规则、12 位输入上限和「密码符合规则」反馈
Scenario: 输入无效注册密码
- WHEN 用户输入过短、过长、仅两类字符,或带空格/中文的密码
- THEN 表单及服务 MUST 阻止注册提交
- AND 页面 MUST 展示具体校验原因,不能把空格/中文显示为满足规则
- AND 规则说明和长错误文本 MUST 正常换行,不覆盖下一个表单项
Requirement: 代理扫码注册失败仅提示一次
原公开代理注册请求 SHALL 关闭公共错误消息,由扫码注册页面统一处理失败;后台接口、短信及其他请求 MUST 保留原错误处理。错误码 1050/1001 MUST 显示「注册失败, 请联系管理员」,不暴露企业微信审批场景/模板配置细节。
Scenario: 企业微信模板错误阻止注册
- WHEN 注册接口以业务响应或 HTTP 错误返回 1050/1001
- THEN 每次失败 MUST 只显示一次「注册失败, 请联系管理员」
- AND 表单 MUST 保留供重试,不能显示提交成功或再显示「分销码不可用」
Scenario: 其他注册错误
- WHEN 注册失败不是 1050/1001,且后端提供可读
msg或message - THEN 页面 MUST 只提示一次具体业务原因,不一律错误归因于分销码
- AND 无业务消息的网络错误 MUST 使用既有安全降级提示,不记录密码
Scenario: 注册提交仍在进行
- WHEN 用户重复点击提交,且上一次注册请求尚未完成
- THEN 页面 MUST 阻止并行重复提交,避免重复申请和重复失败提示