提案以及归档
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m39s

This commit is contained in:
2026-04-18 09:10:29 +08:00
parent 6caf0f6141
commit 4aab0bcbf2
40 changed files with 936 additions and 8 deletions

View File

@@ -0,0 +1,56 @@
### Requirement: 超级管理员可设置和修改全局操作密码
系统 SHALL 提供 `POST /api/admin/super-admin/operation-password` 接口,仅允许 `user_type=1`(超级管理员)调用,用于设置或修改全局操作密码。密码以 bcrypt 哈希值存储于 Redis。
#### Scenario: 超级管理员首次设置操作密码
- **WHEN** 超级管理员调用 `POST /api/admin/super-admin/operation-password`,传入合法的 `password``confirm_password`(两者一致)
- **THEN** 系统将 bcrypt 哈希后的密码写入 Redis返回 200 成功
#### Scenario: 超级管理员修改已有操作密码
- **WHEN** 操作密码已存在,超级管理员重新调用设置接口传入新密码
- **THEN** 系统覆盖 Redis 中的旧哈希值,返回 200 成功
#### Scenario: 非超级管理员调用被拒绝
- **WHEN** `user_type != 1` 的账号调用 `POST /api/admin/super-admin/operation-password`
- **THEN** 系统返回 403错误消息"仅超级管理员可设置操作密码"
#### Scenario: 两次密码不一致
- **WHEN** 超级管理员传入的 `password``confirm_password` 不一致
- **THEN** 系统返回 400错误消息"两次输入的密码不一致"
### Requirement: 可查询操作密码设置状态
系统 SHALL 提供 `GET /api/admin/super-admin/operation-password/status` 接口,返回操作密码是否已设置(布尔值),不返回密码本身,仅超级管理员可调用。
#### Scenario: 查询已设置状态
- **WHEN** 操作密码已设置,超级管理员调用状态查询接口
- **THEN** 返回 `{"is_set": true}`
#### Scenario: 查询未设置状态
- **WHEN** 操作密码未设置Redis 中无对应 key超级管理员调用状态查询接口
- **THEN** 返回 `{"is_set": false}`
### Requirement: 操作密码验证使用全局操作密码
系统 SHALL 将所有需要操作密码验证的接口(目前为 `agent-recharges` 线下充值确认)改为验证全局操作密码,而非当前登录用户的登录密码。
#### Scenario: 操作密码正确时通过验证
- **WHEN** 调用需要操作密码的接口,传入正确的全局操作密码
- **THEN** 验证通过,接口正常执行后续业务逻辑
#### Scenario: 操作密码错误时拒绝
- **WHEN** 调用需要操作密码的接口,传入错误的密码
- **THEN** 系统返回 400错误消息"操作密码错误"
#### Scenario: 操作密码未设置时拒绝
- **WHEN** Redis 中无操作密码,调用需要操作密码的接口
- **THEN** 系统返回 400错误消息"操作密码未设置,请联系超级管理员"