Files
luo 0d77a7d55b
All checks were successful
构建并部署前端到测试环境 / deploy (push) Successful in 55s
fix: some
2026-10-14 17:08:32 +08:00

6.1 KiB
Raw Permalink Blame History

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 阻止并行重复提交,避免重复申请和重复失败提示