Files
sionrui/openspec/changes/refactor-task-management/specs/task-management/spec.md
2025-12-21 22:24:16 +08:00

180 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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 有描述性的文本