feat: 添加三层级模型配置管理系统原型
新增三个层级的模型配置管理功能: - 平台级模型配置(管理台):配置列表、新增/编辑、删除(默认模型不允许删除)、设为默认(仅页面状态) - 项目级模型配置(工作台):配置列表、新增/编辑、删除(允许删除默认)、设为默认(仅页面状态) - 个人模型配置(工作台):配置列表、新增/编辑、删除(允许删除默认)、设为默认(仅页面状态) - 融合式模型选择器:在聊天输入框顶部集成,按层级分组展示模型列表(平台/项目/个人) 技术实现: - 新增项目级和个人级配置数据文件 - 扩展 api.js 数据访问层,添加 consoleModels.project 和 consoleModels.user 对象 - 新增 4 个页面组件(ProjectModelConfigsPage、AddProjectModelConfigPage、UserModelConfigsPage、AddUserModelConfigPage) - 修改 2 个现有页面(ModelConfigsPage、ChatPage、ConsoleLayout) - 修改 Modal 组件支持 cancelText 为空时隐藏取消按钮 - 在 App.jsx 中添加 6 条新路由 - 新增模型选择器样式文件(融合式设计、分组展示、响应式) - 更新 README.md 项目结构 样式特点: - 融合式模型选择器与输入框风格一致 - 下拉列表按层级分组(平台/项目/个人) - 默认标记使用渐变背景色 - 选中状态高亮(浅蓝色背景 + 左侧边框 + 右侧勾选) - 响应式设计(移动端适配) 数据示例: - 项目级:3 个示例配置(不同类型和状态) - 个人级:2 个示例配置(不同类型和状态)
This commit is contained in:
81
openspec/specs/user-model-config/spec.md
Normal file
81
openspec/specs/user-model-config/spec.md
Normal file
@@ -0,0 +1,81 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: 展示个人模型配置列表
|
||||
|
||||
系统 SHALL 在工作台侧边栏的个人模型配置页面展示所有个人模型配置的列表,每个配置项显示配置名称、配置类型、状态和操作按钮。
|
||||
|
||||
#### Scenario: 查看配置列表
|
||||
- **WHEN** 用户通过工作台侧边栏访问 `/console/user-models` 页面
|
||||
- **THEN** 系统显示所有个人模型配置的表格
|
||||
- **THEN** 每个配置项显示配置名称、配置类型、状态(生效中/未生效)和操作按钮
|
||||
- **THEN** 表格头部显示"新增配置"按钮
|
||||
|
||||
### Requirement: 新增个人模型配置
|
||||
|
||||
系统 SHALL 允许用户创建新的个人模型配置,配置包含基本信息、API 配置和参数配置(根据类型不同)。
|
||||
|
||||
#### Scenario: 打开新增配置页面
|
||||
- **WHEN** 用户点击"新增配置"按钮
|
||||
- **THEN** 系统导航到 `/console/user-models/add` 页面
|
||||
- **THEN** 页面显示配置名称、配置类型、API 配置和参数配置表单
|
||||
|
||||
#### Scenario: 选择配置类型
|
||||
- **WHEN** 用户在新增配置页面选择配置类型
|
||||
- **THEN** 系统根据选择的类型显示相应的配置字段
|
||||
- **WHEN** 用户选择"OpenAI 兼容接口"
|
||||
- **THEN** 系统显示 API 地址、API 密钥、模型名称、Temperature、Max Tokens、Top P 字段
|
||||
- **WHEN** 用户选择"智算管理平台"
|
||||
- **THEN** 系统显示 API 地址、App ID、App Secret 字段
|
||||
|
||||
#### Scenario: 保存新配置
|
||||
- **WHEN** 用户填写完整配置信息并点击"保存"按钮
|
||||
- **THEN** 系统验证表单数据
|
||||
- **WHEN** 表单验证通过
|
||||
- **THEN** 系统创建新配置并导航到配置列表页面
|
||||
- **THEN** 如果这是第一个配置,系统自动将其设为默认模型(`isActive = true`)
|
||||
|
||||
### Requirement: 编辑个人模型配置
|
||||
|
||||
系统 SHALL 允许用户编辑已存在的个人模型配置,但配置类型字段为只读。
|
||||
|
||||
#### Scenario: 打开编辑配置页面
|
||||
- **WHEN** 用户点击某个配置的"编辑"按钮
|
||||
- **THEN** 系统导航到 `/console/user-models/:id/edit` 页面
|
||||
- **THEN** 页面预填充该配置的所有信息
|
||||
- **THEN** 配置类型字段为只读状态,显示"配置类型不可修改"提示
|
||||
|
||||
#### Scenario: 保存编辑的配置
|
||||
- **WHEN** 用户修改配置信息并点击"保存"按钮
|
||||
- **THEN** 系统更新配置并导航到配置列表页面
|
||||
|
||||
### Requirement: 删除个人模型配置
|
||||
|
||||
系统 SHALL 允许用户删除任何个人模型配置,包括默认模型。
|
||||
|
||||
#### Scenario: 删除默认配置
|
||||
- **WHEN** 用户点击某个默认配置的"删除"按钮
|
||||
- **THEN** 系统显示删除确认弹窗
|
||||
- **WHEN** 用户确认删除
|
||||
- **THEN** 系统删除该配置并刷新配置列表
|
||||
- **THEN** 删除后该级别没有默认模型
|
||||
|
||||
#### Scenario: 删除非默认配置
|
||||
- **WHEN** 用户点击某个非默认配置的"删除"按钮
|
||||
- **THEN** 系统显示删除确认弹窗
|
||||
- **WHEN** 用户确认删除
|
||||
- **THEN** 系统删除该配置并刷新配置列表
|
||||
|
||||
### Requirement: 设为个人默认模型
|
||||
|
||||
系统 SHALL 允许用户将某个非默认配置设为个人默认模型,更新页面状态但不修改实际数据。
|
||||
|
||||
#### Scenario: 设为默认配置
|
||||
- **WHEN** 用户点击某个非默认配置的"设为默认"按钮
|
||||
- **THEN** 系统显示确认弹窗
|
||||
- **WHEN** 用户确认切换
|
||||
- **THEN** 系统更新页面状态,将原默认配置设为非默认,将目标配置设为默认
|
||||
- **THEN** 系统不修改实际数据文件(原型行为)
|
||||
|
||||
#### Scenario: 默认配置不显示设为默认按钮
|
||||
- **WHEN** 配置已经是默认模型(`isActive = true`)
|
||||
- **THEN** 系统不显示"设为默认"按钮
|
||||
Reference in New Issue
Block a user