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

6.3 KiB
Raw Blame History

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进行状态管理避免全局状态污染。

状态管理规范:

  • 每个任务列表页面独立管理自己的状态
  • 使用 refreactive 管理响应式数据
  • 组件销毁时清理所有副作用(定时器、事件监听器等)

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 有描述性的文本