feat: 新增工作台我的技能和技能配置功能

新增功能:
- 我的技能页面:管理已订阅技能,支持启用/禁用/配置/删除
- 技能配置页面:为已订阅技能提供 key-value 变量配置能力
- 导航栏新增"我的技能"入口(使用 FiBox 图标)

重构内容:
- 技能市场页面:移除"全部技能/已订阅"切换,专注技能浏览和订阅
- 技能详情页面:移除订阅逻辑,统一使用"当前生效版本"布局
- 技能图标样式:移除渐变色背景,改为纯 emoji 显示

数据结构:
- 新增 userSubscriptions 数组(用户级订阅和配置数据)

状态显示:
- 我的技能列表状态改为纯文字(启用/禁用/已下架)
This commit is contained in:
2026-03-23 18:38:52 +08:00
parent e9e1bd7184
commit a576a5e40e
11 changed files with 1021 additions and 101 deletions

View 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 的已上架技能
- "已下架":仅显示已下架的技能