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 修改当前运行配置
|
||||
|
||||
@@ -374,13 +374,54 @@ TBD - 提供供应商、模型配置和用量统计的前端管理界面
|
||||
|
||||
### Requirement: 提供设置页面
|
||||
|
||||
前端 SHALL 提供设置页面。
|
||||
前端 SHALL 提供设置页面,并在设置页面中以独立 Card 展示启动参数设置。
|
||||
|
||||
#### Scenario: 显示设置页面
|
||||
|
||||
- **WHEN** 用户访问设置页面
|
||||
- **THEN** 前端 SHALL 显示设置页面
|
||||
- **THEN** 开发中提示文字颜色 SHALL 使用 \`var(--td-text-color-placeholder)\` Token
|
||||
- **THEN** 前端 SHALL 显示标题为“启动参数设置”的 Card
|
||||
- **THEN** 启动参数设置 Card SHALL 与未来其他设置 Card 在视觉结构上保持独立
|
||||
|
||||
#### Scenario: Desktop 模式显示可编辑启动参数
|
||||
|
||||
- **WHEN** 后端返回启动参数设置 `editable` 为 true
|
||||
- **THEN** 前端 SHALL 在“启动参数设置” Card 中显示可编辑表单
|
||||
- **THEN** 表单 SHALL 覆盖 `server`、`database`、`log` 配置分组
|
||||
- **THEN** 前端 SHALL 提示“Desktop 模式下此页面编辑的是启动配置文件,保存后重启 Desktop 生效”
|
||||
- **THEN** 前端 SHALL 显示保存按钮
|
||||
- **THEN** 前端 SHALL 在保存成功后提示“配置已保存到配置文件。当前运行中的服务仍使用启动时配置,重启 Desktop 后生效”
|
||||
|
||||
#### Scenario: Server 模式显示只读启动参数
|
||||
|
||||
- **WHEN** 后端返回启动参数设置 `editable` 为 false
|
||||
- **THEN** 前端 SHALL 在“启动参数设置” Card 中显示只读表单
|
||||
- **THEN** 所有启动参数字段 SHALL 不可编辑
|
||||
- **THEN** 前端 SHALL 隐藏或禁用保存按钮
|
||||
- **THEN** 前端 SHALL 提示“Server 模式下启动参数仅支持查看,不支持从前端编辑”
|
||||
|
||||
#### Scenario: 启动参数展示内容
|
||||
|
||||
- **WHEN** 前端渲染启动参数设置表单
|
||||
- **THEN** 前端 SHALL 直接展示后端返回的启动参数设置值
|
||||
- **THEN** 前端 SHALL NOT 区分当前运行值和配置文件值
|
||||
- **THEN** 前端 SHALL NOT 展示配置来源标签
|
||||
- **THEN** 前端 SHALL 直接展示 `database.password` 字段值
|
||||
|
||||
#### Scenario: 数据库驱动表单切换
|
||||
|
||||
- **WHEN** 启动参数设置中的 `database.driver` 为 `sqlite`
|
||||
- **THEN** 前端 SHALL 允许配置 SQLite 数据库路径
|
||||
- **THEN** 前端 SHALL 弱化或禁用 MySQL 专属字段
|
||||
- **WHEN** 启动参数设置中的 `database.driver` 为 `mysql`
|
||||
- **THEN** 前端 SHALL 允许配置 MySQL host、port、user、password、dbname 字段
|
||||
- **THEN** 前端 SHALL 弱化或禁用 SQLite 专属路径字段
|
||||
|
||||
#### Scenario: 启动参数保存失败
|
||||
|
||||
- **WHEN** 用户保存启动参数且后端返回验证错误或保存错误
|
||||
- **THEN** 前端 SHALL 显示用户可理解的错误提示
|
||||
- **THEN** 前端 SHALL 保持用户当前填写内容,便于修正后重新保存
|
||||
|
||||
|
||||
### Requirement: 显示统一模型 ID
|
||||
|
||||
Reference in New Issue
Block a user