Files
sionrui/openspec/changes/refactor-task-management/specs/task-management/spec.md

180 lines
6.3 KiB
Markdown
Raw Normal View History

2025-12-21 22:24:16 +08:00
## ADDED Requirements
### Requirement: 任务中心布局
任务管理系统 SHALL 提供统一的左右分栏布局,用于管理不同类型的任务。
布局规范:
- 左侧导航区域:宽度固定为 240px显示任务类型切换菜单
- 右侧内容区域:自适应宽度,显示对应的任务列表页面
- 左侧导航 SHALL 支持以下任务类型:
- 混剪视频任务
- 数字人视频任务
#### Scenario: 显示任务中心布局
- **WHEN** 用户访问 `/system/task-management` 路径
- **THEN** 页面显示左右分栏布局
- **AND** 左侧显示任务类型导航菜单
- **AND** 右侧显示默认的任务列表(混剪视频任务)
#### Scenario: 切换任务类型
- **WHEN** 用户点击左侧导航中的「数字人视频任务」
- **THEN** 右侧内容区域切换到数字人任务列表页面
- **AND** 左侧导航中「数字人视频任务」项高亮显示
### Requirement: 路由配置
任务中心 SHALL 使用 Vue Router 的子路由机制,实现不同任务类型页面的切换。
路由规范:
- 根路径:`/system/task-management`
- 子路径:
- `/system/task-management/mix-task` - 混剪任务列表
- `/system/task-management/digital-human-task` - 数字人任务列表
- 默认重定向:访问 `/system/task-management` 时自动跳转到 `/system/task-management/mix-task`
#### Scenario: 默认路由跳转
- **WHEN** 用户访问 `/system/task-management`
- **THEN** 系统自动重定向到 `/system/task-management/mix-task`
- **AND** 显示混剪任务列表页面
#### Scenario: 直接访问子路径
- **WHEN** 用户直接访问 `/system/task-management/digital-human-task`
- **THEN** 显示数字人任务列表页面
- **AND** 左侧导航中「数字人视频任务」项高亮
### Requirement: 导航高亮
左侧导航 SHALL 高亮显示当前激活的任务类型。
高亮规范:
- 当前激活的导航项 SHALL 使用主色调背景色(`var(--color-primary)`
- 非激活项 SHALL 使用默认背景色
- 鼠标悬停时 SHALL 显示悬停效果
#### Scenario: 高亮当前任务类型
- **WHEN** 用户在混剪任务列表页面
- **THEN** 左侧导航中「混剪视频任务」项高亮显示
- **AND** 「数字人视频任务」项保持默认状态
### Requirement: 响应式适配
任务中心布局 SHALL 支持响应式设计,在不同屏幕尺寸下正常显示。
适配规范:
- 桌面端≥1200px左侧 240px右侧自适应
- 平板端768px-1199px保持左右分栏适当缩小左侧宽度
- 移动端(<768px左侧导航可折叠或隐藏右侧全屏显示
#### Scenario: 平板端显示
- **WHEN** 用户在平板设备上访问任务中心
- **THEN** 左侧导航宽度调整为 200px
- **AND** 右侧内容区域相应调整宽度
#### Scenario: 移动端显示
- **WHEN** 用户在手机设备上访问任务中心
- **THEN** 左侧导航默认隐藏
- **AND** 显示汉堡菜单按钮,点击后弹出导航菜单
- **OR** 左侧导航固定在底部,作为标签栏显示
### Requirement: 过渡动画
任务类型切换时 SHALL 使用平滑的过渡动画。
动画规范:
- 使用 Vue Transition 组件实现
- 动画时长200-300ms
- 动画类型淡入淡出fade或滑动slide
#### Scenario: 页面切换动画
- **WHEN** 用户从混剪任务切换到数字人任务
- **THEN** 右侧内容区域使用平滑过渡动画
- **AND** 动画时长约 250ms
- **AND** 动画效果为淡入淡出
### Requirement: 组件化设计
任务中心 SHALL 采用组件化设计,提高代码复用性和可维护性。
组件规范:
- Layout 组件:`TaskLayout.vue` - 布局容器
- 通用组件:
- `TaskFilterBar.vue` - 筛选栏
- `TaskStatusTag.vue` - 状态标签
- `TaskActionButtons.vue` - 操作按钮
- Composable
- `useTaskList.js` - 列表通用逻辑
- `useTaskOperations.js` - 操作通用逻辑
- `useTaskPolling.js` - 轮询通用逻辑
#### Scenario: 使用通用组件
- **WHEN** 开发混剪任务列表页面
- **THEN** 使用 `TaskFilterBar` 组件实现筛选功能
- **AND** 使用 `TaskStatusTag` 组件显示任务状态
- **AND** 使用 `TaskActionButtons` 组件实现操作按钮
- **AND** 使用 `useTaskList` Composable 处理列表逻辑
### Requirement: 状态管理
任务中心 SHALL 使用组合式 APIComposition API进行状态管理避免全局状态污染。
状态管理规范:
- 每个任务列表页面独立管理自己的状态
- 使用 `ref``reactive` 管理响应式数据
- 组件销毁时清理所有副作用(定时器、事件监听器等)
#### Scenario: 独立状态管理
- **WHEN** 用户在混剪任务列表页面进行操作
- **THEN** 操作只影响混剪任务列表的状态
- **AND** 不影响数字人任务列表的状态
#### Scenario: 清理副作用
- **WHEN** 用户离开任务中心页面
- **THEN** 所有定时器 SHALL 被清理
- **AND** 所有事件监听器 SHALL 被移除
- **AND** 避免内存泄漏
### Requirement: 错误处理
任务中心 SHALL 提供完善的错误处理机制,提升用户体验。
错误处理规范:
- API 调用失败时显示错误提示
- 网络异常时显示重试按钮
- 操作失败时显示具体错误信息
- 加载状态使用骨架屏或加载动画
#### Scenario: API 调用失败
- **WHEN** 获取任务列表时 API 返回错误
- **THEN** 显示错误提示信息
- **AND** 提供「重试」按钮
- **AND** 用户点击重试后重新发起请求
#### Scenario: 网络异常
- **WHEN** 网络连接中断
- **THEN** 显示网络异常提示
- **AND** 自动检测网络恢复
- **AND** 网络恢复后提示用户刷新页面
### Requirement: 无障碍访问
任务中心 SHALL 遵循 Web 无障碍访问标准,支持键盘导航和屏幕阅读器。
无障碍规范:
- 所有交互元素支持键盘访问Tab 键导航)
- 提供适当的 ARIA 标签
- 颜色对比度符合 WCAG 2.1 AA 标准
- 焦点状态清晰可见
#### Scenario: 键盘导航
- **WHEN** 用户使用 Tab 键浏览任务中心页面
- **THEN** 焦点 SHALL 按逻辑顺序移动
- **AND** 所有交互元素都可以通过键盘访问
- **AND** 焦点状态清晰可见
#### Scenario: 屏幕阅读器支持
- **WHEN** 用户使用屏幕阅读器访问任务中心
- **THEN** 页面结构 SHALL 被正确朗读
- **AND** 任务状态 SHALL 有适当的 ARIA 标签
- **AND** 操作按钮 SHALL 有描述性的文本