feat: 新增启动参数设置页面,区分 desktop 可编辑与 server 只读
This commit is contained in:
@@ -467,3 +467,105 @@ server 入口 SHALL 支持通过环境变量设置所有配置项,符合 serve
|
||||
- **WHEN** desktop 启动时存在 `NEX_SERVER_PORT`、`NEX_DATABASE_PATH`、`NEX_LOG_LEVEL` 或其他 `NEX_*` 环境变量
|
||||
- **THEN** SHALL NOT 读取这些环境变量作为配置源
|
||||
- **THEN** SHALL 使用 `~/.nex/config.yaml` 和默认值加载配置
|
||||
|
||||
### Requirement: 启动参数设置查询
|
||||
|
||||
系统 SHALL 提供面向前端设置页的启动参数查询能力,按入口返回用于展示的启动参数设置视图和当前入口的可编辑状态。
|
||||
|
||||
#### Scenario: Desktop 查询配置文件编辑视图
|
||||
|
||||
- **WHEN** desktop 入口收到启动参数查询请求
|
||||
- **THEN** 后端 SHALL 使用 desktop 配置语义读取 `~/.nex/config.yaml` 和默认值
|
||||
- **THEN** 后端 SHALL 返回用于编辑配置文件的启动参数设置视图
|
||||
- **THEN** 后端 SHALL NOT 将查询结果应用到当前运行配置快照
|
||||
- **THEN** 返回配置 SHALL 包含 `server`、`database`、`log` 配置分组
|
||||
- **THEN** 返回配置 SHALL 覆盖现有配置结构中的全部启动参数字段
|
||||
- **THEN** 返回配置 SHALL 直接包含 `database.password` 字段值
|
||||
|
||||
#### Scenario: Server 查询当前有效启动参数
|
||||
|
||||
- **WHEN** server 入口收到启动参数查询请求
|
||||
- **THEN** 后端 SHALL 返回当前运行进程启动后使用的有效配置
|
||||
- **THEN** 返回配置 SHALL 包含 `server`、`database`、`log` 配置分组
|
||||
- **THEN** 返回配置 SHALL 覆盖现有配置结构中的全部启动参数字段
|
||||
- **THEN** 返回配置 SHALL 直接包含 `database.password` 字段值
|
||||
|
||||
#### Scenario: 查询返回入口模式元数据
|
||||
|
||||
- **WHEN** 前端请求启动参数设置
|
||||
- **THEN** 后端 SHALL 返回当前入口模式,取值为 `server` 或 `desktop`
|
||||
- **THEN** 后端 SHALL 返回 `editable` 表示当前入口是否允许前端保存启动参数
|
||||
- **THEN** 后端 SHALL 返回配置文件路径
|
||||
- **THEN** 后端 SHALL 返回 `restart_required` 表示保存后是否需要重启生效
|
||||
|
||||
#### Scenario: Desktop 查询返回可编辑元数据
|
||||
|
||||
- **WHEN** desktop 入口收到启动参数查询请求
|
||||
- **THEN** 后端 SHALL 返回 `mode` 为 `desktop`
|
||||
- **THEN** 后端 SHALL 返回 `editable` 为 true
|
||||
- **THEN** 后端 SHALL 返回配置文件路径为默认配置文件 `~/.nex/config.yaml`
|
||||
- **THEN** 后端 SHALL 返回 `restart_required` 为 true
|
||||
|
||||
#### Scenario: 查询不返回来源追踪信息
|
||||
|
||||
- **WHEN** 前端请求启动参数设置
|
||||
- **THEN** 后端 SHALL NOT 要求返回每个字段的配置来源标签
|
||||
- **THEN** 后端 SHALL NOT 要求区分当前运行值和配置文件值
|
||||
|
||||
### Requirement: Desktop 启动参数保存
|
||||
|
||||
desktop 入口 SHALL 允许前端通过设置页保存启动参数到默认配置文件,并保持当前运行时配置快照不变。
|
||||
|
||||
#### Scenario: Desktop 保存有效启动参数
|
||||
|
||||
- **WHEN** desktop 入口收到有效的启动参数保存请求
|
||||
- **THEN** 后端 SHALL 验证请求配置符合现有配置验证规则
|
||||
- **THEN** 后端 SHALL 将配置保存到 `~/.nex/config.yaml`
|
||||
- **THEN** 保存的配置文件权限 SHALL 符合现有配置文件安全要求
|
||||
- **THEN** 后端 SHALL 返回保存后的启动参数设置
|
||||
|
||||
#### Scenario: Desktop 保存时创建配置文件
|
||||
|
||||
- **WHEN** desktop 入口收到有效的启动参数保存请求
|
||||
- **AND** `~/.nex/config.yaml` 不存在
|
||||
- **THEN** 后端 SHALL 创建配置文件并写入提交的配置
|
||||
- **THEN** 后端 SHALL NOT 在查询启动参数时自动创建配置文件
|
||||
|
||||
#### Scenario: Desktop 保存不动态应用配置
|
||||
|
||||
- **WHEN** desktop 入口成功保存启动参数
|
||||
- **THEN** 当前运行中的配置快照 SHALL 保持不变
|
||||
- **THEN** 当前运行中的 HTTP server、数据库连接、日志器和请求处理 SHALL NOT 因保存操作而重建或中断
|
||||
- **THEN** 保存后的配置 SHALL 在下一次 desktop 启动时生效
|
||||
- **THEN** 后端 SHALL NOT 自动重启 desktop
|
||||
|
||||
#### Scenario: Desktop 拒绝无效启动参数
|
||||
|
||||
- **WHEN** desktop 入口收到无效的启动参数保存请求
|
||||
- **THEN** 后端 SHALL 返回验证错误
|
||||
- **THEN** 后端 SHALL NOT 写入无效配置到 `~/.nex/config.yaml`
|
||||
|
||||
### Requirement: Server 启动参数只读
|
||||
|
||||
server 入口 SHALL 允许前端查看当前有效启动参数,但 SHALL NOT 允许前端保存或修改启动参数。
|
||||
|
||||
#### Scenario: Server 查询只读元数据
|
||||
|
||||
- **WHEN** server 入口收到启动参数查询请求
|
||||
- **THEN** 后端 SHALL 返回 `mode` 为 `server`
|
||||
- **THEN** 后端 SHALL 返回 `editable` 为 false
|
||||
- **THEN** 后端 SHALL 返回 `restart_required` 为 false
|
||||
- **THEN** 后端 SHALL 返回 server 启动时实际解析到的配置文件路径
|
||||
|
||||
#### Scenario: Server 查询返回自定义配置文件路径
|
||||
|
||||
- **WHEN** server 入口使用 `--config /path/to/custom.yaml` 启动
|
||||
- **AND** server 入口收到启动参数查询请求
|
||||
- **THEN** 后端 SHALL 返回配置文件路径 `/path/to/custom.yaml`
|
||||
|
||||
#### Scenario: Server 拒绝保存启动参数
|
||||
|
||||
- **WHEN** server 入口收到启动参数保存请求
|
||||
- **THEN** 后端 SHALL 返回禁止修改错误
|
||||
- **THEN** 后端 SHALL NOT 写入配置文件
|
||||
- **THEN** 后端 SHALL NOT 修改当前运行配置
|
||||
|
||||
Reference in New Issue
Block a user