Files
luo b2a76adc9a
All checks were successful
构建并部署前端到测试环境 / deploy (push) Successful in 55s
fix: some
2026-10-13 11:25:03 +08:00

60 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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 输出输入的密码值