feat: 新增工作台我的技能和技能配置功能
新增功能: - 我的技能页面:管理已订阅技能,支持启用/禁用/配置/删除 - 技能配置页面:为已订阅技能提供 key-value 变量配置能力 - 导航栏新增"我的技能"入口(使用 FiBox 图标) 重构内容: - 技能市场页面:移除"全部技能/已订阅"切换,专注技能浏览和订阅 - 技能详情页面:移除订阅逻辑,统一使用"当前生效版本"布局 - 技能图标样式:移除渐变色背景,改为纯 emoji 显示 数据结构: - 新增 userSubscriptions 数组(用户级订阅和配置数据) 状态显示: - 我的技能列表状态改为纯文字(启用/禁用/已下架)
This commit is contained in:
124
openspec/specs/my-skills/spec.md
Normal file
124
openspec/specs/my-skills/spec.md
Normal file
@@ -0,0 +1,124 @@
|
||||
# Capability: 我的技能
|
||||
|
||||
## Purpose
|
||||
|
||||
提供我的技能管理功能,允许用户查看、启用/禁用、配置和取消订阅已订阅的技能。
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: 我的技能页面访问
|
||||
系统 SHALL 在工作台导航栏提供"我的技能"入口,用户点击后进入我的技能管理页面。
|
||||
|
||||
#### Scenario: 进入我的技能页面
|
||||
- **WHEN** 用户点击导航栏"我的技能"入口
|
||||
- **THEN** 系统显示我的技能管理页面
|
||||
- **AND** 页面包含搜索/筛选卡片
|
||||
- **AND** 页面展示已订阅技能列表
|
||||
|
||||
### Requirement: 技能列表展示
|
||||
系统 SHALL 以表格形式展示已订阅的技能,包括技能名称、描述、分类、状态和操作列。
|
||||
|
||||
#### Scenario: 查看技能列表
|
||||
- **WHEN** 我的技能页面加载完成
|
||||
- **THEN** 系统显示表格,包含以下列:
|
||||
- 技能名称(带图标)
|
||||
- 描述
|
||||
- 分类
|
||||
- 状态
|
||||
- 操作
|
||||
|
||||
#### Scenario: 列表数据来源
|
||||
- **WHEN** 我的技能页面加载
|
||||
- **THEN** 系统显示 userSubscriptions 中的所有订阅记录
|
||||
- **AND** 根据 skillId 关联获取技能的 currentVersion 信息
|
||||
|
||||
### Requirement: 技能状态显示
|
||||
系统 SHALL 根据技能上架状态和用户启用状态显示不同的状态标识。
|
||||
|
||||
#### Scenario: 已上架且启用的技能
|
||||
- **WHEN** 技能状态为 published 且 enabled 为 true
|
||||
- **THEN** 状态列显示"●启用"(绿色)
|
||||
|
||||
#### Scenario: 已上架但禁用的技能
|
||||
- **WHEN** 技能状态为 published 且 enabled 为 false
|
||||
- **THEN** 状态列显示"○禁用"(灰色)
|
||||
|
||||
#### Scenario: 已下架的技能
|
||||
- **WHEN** 技能状态为 unlisting、unlisted 或 dev
|
||||
- **THEN** 状态列显示"▣已下架"(红色/警告色)
|
||||
|
||||
### Requirement: 技能启用/禁用
|
||||
系统 SHALL 允许用户启用或禁用已上架的技能。
|
||||
|
||||
#### Scenario: 启用技能
|
||||
- **WHEN** 用户点击"启用"按钮
|
||||
- **THEN** 系统显示确认弹框
|
||||
- **AND** 弹框标题为"确认启用"
|
||||
- **AND** 弹框内容为"确定要启用"<技能名称>"吗?"
|
||||
- **AND** 用户确认后将 enabled 设置为 true
|
||||
- **AND** 显示启用成功提示
|
||||
|
||||
#### Scenario: 禁用技能
|
||||
- **WHEN** 用户点击"禁用"按钮
|
||||
- **THEN** 系统显示确认弹框
|
||||
- **AND** 弹框标题为"确认禁用"
|
||||
- **AND** 弹框内容为"确定要禁用"<技能名称>"吗?"
|
||||
- **AND** 用户确认后将 enabled 设置为 false
|
||||
- **AND** 显示禁用成功提示
|
||||
|
||||
#### Scenario: 下架技能禁用启用按钮
|
||||
- **WHEN** 技能状态为"已下架"
|
||||
- **THEN** 操作列不显示启用/禁用按钮
|
||||
- **AND** 仅显示删除按钮
|
||||
|
||||
### Requirement: 技能配置入口
|
||||
系统 SHALL 为已订阅的技能提供配置入口。
|
||||
|
||||
#### Scenario: 配置按钮显示
|
||||
- **WHEN** 技能状态为"已上架"
|
||||
- **THEN** 操作列显示"配置"按钮
|
||||
|
||||
#### Scenario: 下架技能禁用配置按钮
|
||||
- **WHEN** 技能状态为"已下架"
|
||||
- **THEN** 操作列不显示"配置"按钮
|
||||
|
||||
#### Scenario: 进入配置页面
|
||||
- **WHEN** 用户点击"配置"按钮
|
||||
- **THEN** 系统跳转到技能配置页面
|
||||
- **AND** 传递当前技能的订阅信息
|
||||
|
||||
### Requirement: 取消订阅
|
||||
系统 SHALL 允许用户取消订阅(删除)技能。
|
||||
|
||||
#### Scenario: 删除已订阅技能
|
||||
- **WHEN** 用户点击"删除"按钮
|
||||
- **THEN** 系统显示确认弹框
|
||||
- **AND** 弹框标题为"确认取消订阅"
|
||||
- **AND** 弹框内容为"确定要取消订阅"<技能名称>"吗?取消后将无法使用该技能,且配置数据将被删除。"
|
||||
- **AND** 用户确认后从 userSubscriptions 中移除该订阅记录
|
||||
- **AND** 显示删除成功提示
|
||||
|
||||
#### Scenario: 删除下架技能
|
||||
- **WHEN** 技能状态为"已下架"且用户点击"删除"按钮
|
||||
- **THEN** 系统执行相同的删除流程
|
||||
- **AND** 删除后技能不再显示在列表中
|
||||
|
||||
### Requirement: 搜索和筛选
|
||||
系统 SHALL 支持按关键词、分类和状态筛选已订阅的技能。
|
||||
|
||||
#### Scenario: 关键词搜索
|
||||
- **WHEN** 用户在搜索框输入关键词
|
||||
- **THEN** 系统实时过滤显示匹配的技能
|
||||
- **AND** 匹配范围包括技能名称和描述
|
||||
|
||||
#### Scenario: 按分类筛选
|
||||
- **WHEN** 用户选择分类下拉框中的分类
|
||||
- **THEN** 系统仅显示该分类下的已订阅技能
|
||||
|
||||
#### Scenario: 按状态筛选
|
||||
- **WHEN** 用户选择状态下拉框中的选项
|
||||
- **THEN** 系统根据选择显示相应状态的技能:
|
||||
- "全部":显示所有已订阅技能
|
||||
- "启用":仅显示 enabled 为 true 的已上架技能
|
||||
- "禁用":仅显示 enabled 为 false 的已上架技能
|
||||
- "已下架":仅显示已下架的技能
|
||||
Reference in New Issue
Block a user