57 lines
2.2 KiB
Markdown
57 lines
2.2 KiB
Markdown
## ADDED Requirements
|
||
|
||
### Requirement: 受控系统配置列表
|
||
|
||
系统 SHALL 在设置管理提供受控系统配置列表,支持按 `module` 筛选和分页,并展示后端返回的配置元数据及当前值。
|
||
|
||
#### Scenario: 查询系统配置
|
||
|
||
- **WHEN** 用户进入系统配置页面或执行刷新
|
||
- **THEN** 前端调用 `GET /api/admin/system-configs`
|
||
- **AND** 使用响应中的 `data.list`、`data.page`、`data.page_size` 和 `data.total` 渲染列表
|
||
- **AND** 展示配置 Key、模块、说明、值、控件提示、注册状态、只读状态、敏感状态和更新时间
|
||
|
||
#### Scenario: 按模块筛选
|
||
|
||
- **WHEN** 用户选择 `carrier_callback` 或 `c2b.payment`
|
||
- **THEN** 查询请求携带对应的 `module` 参数
|
||
- **AND** 页面从第一页展示筛选后的配置
|
||
|
||
### Requirement: 动态配置编辑
|
||
|
||
系统 SHALL 根据配置返回的 `control`、`value_type`、`enum_values`、`min` 和 `max` 元数据渲染编辑控件并进行前端基础校验;更新请求 SHALL 统一提交字符串形式的 `value`。
|
||
|
||
#### Scenario: 更新可编辑配置
|
||
|
||
- **WHEN** 用户修改非只读配置并提交
|
||
- **THEN** 前端调用 `PUT /api/admin/system-configs/{key}`
|
||
- **AND** 请求体为 `{ "key": "配置Key", "value": "字符串化配置值" }`
|
||
- **AND** 成功后使用接口返回的配置数据更新列表
|
||
|
||
#### Scenario: bool 和 int 配置
|
||
|
||
- **WHEN** 配置类型分别为 `bool` 或 `int`
|
||
- **THEN** 页面分别使用开关或数字输入控件
|
||
- **AND** bool 提交 `true`/`false` 字符串,int 提交十进制数字字符串
|
||
- **AND** int 值违反 `min` 或 `max` 时阻止提交
|
||
|
||
#### Scenario: 枚举配置
|
||
|
||
- **WHEN** 配置返回非空 `enum_values`
|
||
- **THEN** 页面使用枚举选择控件
|
||
- **AND** 只能提交允许的枚举值
|
||
|
||
### Requirement: 只读和敏感配置保护
|
||
|
||
系统 SHALL 禁止前端编辑只读配置;敏感配置 SHALL 展示接口返回的脱敏值,用户未主动输入新值时不得将该脱敏值再次提交。
|
||
|
||
#### Scenario: 只读配置
|
||
|
||
- **WHEN** 配置的 `readonly` 为 `true`
|
||
- **THEN** 页面禁用编辑控件和保存操作
|
||
|
||
#### Scenario: 敏感配置未修改
|
||
|
||
- **WHEN** 敏感配置仅展示脱敏值且用户未输入新值
|
||
- **THEN** 页面不提交该配置的更新请求
|