refactor: 整理规范文件 - 合并冗余、优化命名(32→20)
- 删除 12 个规范:空目录、重复规范、被吸收的子集规范 - 合并 4 组规范:管理台页面、开发台页面、布局体系、组件+反馈 - 重命名 8 个规范:统一平台前缀、暴露可搜索关键词、消除语义冲突 - 新增 docs/规范整理.md:规范审查流程提示词模板
This commit is contained in:
128
openspec/specs/console-skill-config/spec.md
Normal file
128
openspec/specs/console-skill-config/spec.md
Normal file
@@ -0,0 +1,128 @@
|
||||
# Capability: 技能配置
|
||||
|
||||
## Purpose
|
||||
|
||||
提供技能配置功能,允许用户为已订阅的技能配置 key-value 变量。
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: 技能配置页面访问
|
||||
系统 SHALL 提供技能配置页面,允许用户为已订阅的技能配置 key-value 变量。
|
||||
|
||||
#### Scenario: 从我的技能进入配置
|
||||
- **WHEN** 用户在"我的技能"页面点击"配置"按钮
|
||||
- **THEN** 系统跳转到技能配置页面
|
||||
- **AND** 显示当前技能的基本信息
|
||||
- **AND** 显示当前技能的配置变量列表
|
||||
|
||||
#### Scenario: 返回我的技能
|
||||
- **WHEN** 用户点击"返回我的技能"链接
|
||||
- **THEN** 系统返回"我的技能"页面
|
||||
|
||||
### Requirement: 技能基本信息展示
|
||||
系统 SHALL 在配置页面顶部展示技能基本信息,布局和样式参考开发台"当前生效版本"卡片。
|
||||
|
||||
#### Scenario: 查看技能基本信息
|
||||
- **WHEN** 技能配置页面加载完成
|
||||
- **THEN** 系统在第一个卡片显示:
|
||||
- 技能图标(大尺寸,48px)
|
||||
- 技能公开名称(h3 标题样式)
|
||||
- 分类标签(蓝色高亮)和其他标签
|
||||
- 技能描述
|
||||
- 订阅数、评分和版本号(带图标)
|
||||
|
||||
### Requirement: 变量配置列表
|
||||
系统 SHALL 以表格形式展示技能的配置变量,每行包含 Key、Value 和操作列。
|
||||
|
||||
#### Scenario: 查看配置列表
|
||||
- **WHEN** 配置页面加载完成
|
||||
- **THEN** 系统在第二个卡片显示配置变量表格
|
||||
- **AND** 表格包含以下列:
|
||||
- Key 输入框
|
||||
- Value 输入框
|
||||
- 删除按钮(×)
|
||||
|
||||
#### Scenario: 空配置状态
|
||||
- **WHEN** 用户尚未添加任何配置变量
|
||||
- **THEN** 系统显示空表格或提示信息
|
||||
|
||||
### Requirement: 新增配置项
|
||||
系统 SHALL 允许用户新增配置项。
|
||||
|
||||
#### Scenario: 点击新增配置按钮
|
||||
- **WHEN** 用户点击右上角"+ 新增配置"按钮
|
||||
- **THEN** 系统在表格中新增一行
|
||||
- **AND** 新行包含空的 Key 输入框、空的 Value 输入框和删除按钮
|
||||
- **AND** Key 输入框自动获得焦点
|
||||
|
||||
### Requirement: 删除配置项
|
||||
系统 SHALL 允许用户删除配置项。
|
||||
|
||||
#### Scenario: 删除配置项
|
||||
- **WHEN** 用户点击某行的删除按钮(×)
|
||||
- **THEN** 系统从表格中移除该行
|
||||
- **AND** 不需要确认
|
||||
|
||||
#### Scenario: 删除最后一个配置项
|
||||
- **WHEN** 用户删除最后一个配置项
|
||||
- **THEN** 系统允许删除操作
|
||||
- **AND** 表格变为空状态
|
||||
|
||||
### Requirement: 配置输入校验
|
||||
系统 SHALL 对配置输入进行校验,确保 Key 和 Value 不能为空。
|
||||
|
||||
#### Scenario: Key 为空时保存
|
||||
- **WHEN** 用户点击"保存"按钮且存在 Key 为空的配置项
|
||||
- **THEN** 系统阻止保存操作
|
||||
- **AND** 显示错误提示"配置项的 Key 不能为空"
|
||||
- **AND** 高亮显示 Key 为空的输入框
|
||||
|
||||
#### Scenario: Value 为空时保存
|
||||
- **WHEN** 用户点击"保存"按钮且存在 Value 为空的配置项
|
||||
- **THEN** 系统阻止保存操作
|
||||
- **AND** 显示错误提示"配置项的 Value 不能为空"
|
||||
- **AND** 高亮显示 Value 为空的输入框
|
||||
|
||||
#### Scenario: 所有配置项填写完整
|
||||
- **WHEN** 用户点击"保存"按钮且所有配置项的 Key 和 Value 都不为空
|
||||
- **THEN** 系统允许保存操作
|
||||
|
||||
### Requirement: 保存配置
|
||||
系统 SHALL 允许用户保存配置到用户订阅数据中。
|
||||
|
||||
#### Scenario: 保存成功
|
||||
- **WHEN** 用户点击右下角"保存"按钮且校验通过
|
||||
- **THEN** 系统将配置数据保存到 userSubscriptions 的 config 字段
|
||||
- **AND** 显示保存成功提示
|
||||
- **AND** 返回"我的技能"页面
|
||||
|
||||
#### Scenario: 未修改直接返回
|
||||
- **WHEN** 用户未保存配置直接点击"返回我的技能"
|
||||
- **THEN** 系统直接返回"我的技能"页面
|
||||
- **AND** 不显示任何提示
|
||||
|
||||
### Requirement: 配置数据存储
|
||||
系统 SHALL 为每个用户订阅的技能独立存储配置数据。
|
||||
|
||||
#### Scenario: 配置数据结构
|
||||
- **WHEN** 系统保存配置数据
|
||||
- **THEN** 数据存储格式为:
|
||||
```javascript
|
||||
config: [
|
||||
{ key: "apiKey", value: "sk-xxxxx" },
|
||||
{ key: "model", value: "gpt-4" }
|
||||
]
|
||||
```
|
||||
|
||||
#### Scenario: 用户级配置隔离
|
||||
- **WHEN** 多个用户订阅同一技能
|
||||
- **THEN** 每个用户的配置数据独立存储
|
||||
- **AND** 互不影响
|
||||
|
||||
### Requirement: 配置页面禁用状态处理
|
||||
系统 SHALL 在技能下架后禁止访问配置页面。
|
||||
|
||||
#### Scenario: 下架技能无法配置
|
||||
- **WHEN** 技能状态为"已下架"
|
||||
- **THEN** "我的技能"页面不显示"配置"按钮
|
||||
- **AND** 用户无法访问配置页面
|
||||
Reference in New Issue
Block a user