Files
work-1 01f43d8da5 feat: v3.1 - 统一规约视图、项目树导航、移动端支持
主要更新:
- 统一规约管理视图(全局/项目规约共享表格)
- 项目树形导航(看板/项目规约子菜单)
- 智能高亮与状态持久化
- 移动端响应式支持(汉堡菜单)
- 规约类型更新为7个专业分类
- 文件清理(85→15文件,减少82%)

修复问题:
- 修复创建项目功能(JavaScript语法错误)
- 修复协作规约错误高亮
- 修复看板需要点击2次才高亮
- 修复项目树自动收起问题

新增工具:
- debug.html(项目创建测试)
- test.html(移动端测试)
- status.html(系统诊断)

技术改进:
- 上下文状态管理(currentRuleContext)
- 展开状态持久化(projectExpandedState)
- 触摸事件支持
- 移除console.log提升兼容性
2026-02-24 15:04:25 +08:00

40 KiB
Raw Permalink Blame History

多智能体任务管理系统 v3.0 界面设计文档

📋 文档信息

  • 版本: v3.0
  • 设计日期: 2026-02-15
  • 技术栈: Vue 3 + Vite + Element Plus + Pinia
  • 设计师: AI Assistant
  • 审核状态: 🔄 待审核

🎯 设计目标

核心目标

  1. 提升用户体验 - 采用现代项目管理工具的经典布局(类似 Jira / Trello
  2. 可视化流程 - 通过 Kanban 看板清晰展示任务流转过程
  3. 减少跳转 - 利用侧边栏、浮层减少页面跳转,提高操作效率
  4. 层级管理 - 充分利用项目→任务→子任务的层级关系
  5. 智能交互 - 支持拖拽、快捷键、实时更新等高级交互

用户角色

  • 人类用户 - 项目管理者,创建项目、分配任务、审核结果
  • 智能体 - 任务执行者,领取任务、完成工作、上传成果

🏗️ 整体架构

布局结构

┌─────────────────────────────────────────────────────────────────┐
│  Header (固定顶部,60px)                                         │
│  🤖 系统名 | 📁项目3  📋任务15  🤖智能体5/8 | 📜规约  🔔通知   │
├────────────┬────────────────────────────────────────────────────┤
│            │                                                    │
│  Sidebar   │              Main Content Area                     │
│  (240px)   │              (自适应宽度)                          │
│            │                                                    │
│ 📁 项目    │  ┌──────────────────────────────────────────────┐ │
│  • 项目A   │  │                                              │ │
│  • 项目B   │  │   动态路由内容区                             │ │
│  • 项目C   │  │   - Dashboard 仪表盘                         │ │
│            │  │   - TaskBoard 任务看板                       │ │
│ ─────────  │  │   - ProjectDetail 项目详情                   │ │
│            │  │   - AgentList 智能体管理                     │ │
│ 🤖 智能体  │  │                                              │ │
│  ⚪ 空闲:3  │  └──────────────────────────────────────────────┘ │
│  🟢 工作:2  │                                                    │
│            │                                                    │
│ [折叠按钮] │                                                    │
└────────────┴────────────────────────────────────────────────────┘
                                                       
                            ┌──────────────────────────┐
                            │  TaskDetail Sidebar      │
                            │  (右侧滑出,480px)       │
                            │                          │
                            │  任务详情、编辑、附件    │
                            │  子任务管理              │
                            │                          │
                            └──────────────────────────┘

技术架构

┌─────────────────────────────────────────────────────┐
│                    Vue 3 Application                │
├─────────────────────────────────────────────────────┤
│                                                     │
│  Presentation Layer (视图层)                        │
│  ┌─────────────┬─────────────┬──────────────┐      │
│  │  Layouts    │   Views     │  Components  │      │
│  │  MainLayout │  Dashboard  │  TaskCard    │      │
│  │             │  TaskBoard  │  MarkdownEd  │      │
│  │             │  AgentList  │  FileUpload  │      │
│  └─────────────┴─────────────┴──────────────┘      │
│                                                     │
├─────────────────────────────────────────────────────┤
│                                                     │
│  State Management (状态管理 - Pinia)                │
│  ┌──────────┬──────────┬──────────┬──────────┐    │
│  │ project  │  task    │  agent   │  stats   │    │
│  │  store   │  store   │  store   │  store   │    │
│  └──────────┴──────────┴──────────┴──────────┘    │
│                                                     │
├─────────────────────────────────────────────────────┤
│                                                     │
│  API Layer (接口层)                                 │
│  ┌──────────────────────────────────────────┐      │
│  │  axios instance + interceptors           │      │
│  │  project.js  task.js  agent.js  ...      │      │
│  └──────────────────────────────────────────┘      │
│                                                     │
├─────────────────────────────────────────────────────┤
│                                                     │
│  Utilities (工具层)                                 │
│  ┌──────────────────────────────────────────┐      │
│  │  constants  date  markdown  helpers      │      │
│  └──────────────────────────────────────────┘      │
│                                                     │
└─────────────────────────────────────────────────────┘
                         ↓ HTTP
┌─────────────────────────────────────────────────────┐
│              Backend API (Node.js)                  │
│         /api/projects  /api/tasks  ...              │
└─────────────────────────────────────────────────────┘

🎨 页面详细设计

1. Dashboard - 仪表盘

路由: /

功能: 全局数据概览,快速访问入口

布局:

┌─────────────────────────────────────────────────────────┐
│  📊 仪表盘                                              │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  ┌────────┐  ┌────────┐  ┌────────┐  ┌────────┐       │
│  │📁      │  │📋      │  │🟡      │  │✅      │       │
│  │项目总数│  │任务总数│  │进行中  │  │已完成  │       │
│  │   8    │  │   45   │  │   12   │  │   28   │       │
│  └────────┘  └────────┘  └────────┘  └────────┘       │
│                                                         │
├──────────────────────────┬──────────────────────────────┤
│                          │                              │
│  📊 任务状态分布          │  📈 任务类型分布             │
│  ┌────────────────────┐  │  ┌────────────────────┐     │
│  │                    │  │  │                    │     │
│  │   饼图 (ECharts)   │  │  │   饼图 (ECharts)   │     │
│  │                    │  │  │                    │     │
│  │ • 初始 5          │  │  │ • 需求 8          │     │
│  │ • 进行中 12       │  │  │ • 设计 6          │     │
│  │ • 待测试 3        │  │  │ • 开发 18         │     │
│  │ • 测试中 2        │  │  │ • 测试 7          │     │
│  │ • 完成 28         │  │  │ • 部署 6          │     │
│  └────────────────────┘  │  └────────────────────┘     │
│                          │                              │
└──────────────────────────┴──────────────────────────────┘
│                                                         │
│  📁 最近活跃项目                                        │
│  ┌───────────────────────────────────────────────────┐ │
│  │ 项目名称        │ 描述           │ 创建时间       │ │
│  ├───────────────────────────────────────────────────┤ │
│  │ 智能客服系统    │ AI客服...      │ 2天前   [查看]│ │
│  │ 数据分析平台    │ 大数据...      │ 5天前   [查看]│ │
│  │ 用户画像系统    │ 用户标签...    │ 1周前   [查看]│ │
│  └───────────────────────────────────────────────────┘ │
│                                                         │
└─────────────────────────────────────────────────────────┘

组件:

  • el-statistic - 统计卡片
  • v-chart (ECharts) - 饼图
  • el-table - 项目列表

交互:

  • 点击统计卡片 → 跳转到对应筛选的任务列表
  • 点击图表区域 → 高亮对应数据
  • 点击项目名称 → 跳转到项目详情

2. TaskBoard - 任务看板(Kanban

路由: /tasks/board/:projectId

功能: 可视化任务流转,拖拽改变状态

布局:

┌─────────────────────────────────────────────────────────────────┐
│  📋 任务看板 - 智能客服系统                                     │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │ [+ 新建任务]  [🔍 搜索...]  [类型▼]  [优先级▼]  [筛选▼] │   │
│  └──────────────────────────────────────────────────────────┘   │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌────────┐  ┌────────┐  ┌────────┐  ┌────────┐  ┌────────┐   │
│  │ 初始   │  │进行中  │  │待测试  │  │测试中  │  │ 完成   │   │
│  │  (5)   │  │ (12)   │  │  (3)   │  │  (2)   │  │ (28)   │   │
│  ├────────┤  ├────────┤  ├────────┤  ├────────┤  ├────────┤   │
│  │        │  │        │  │        │  │        │  │        │   │
│  │ ┌────┐ │  │ ┌────┐ │  │ ┌────┐ │  │ ┌────┐ │  │ ┌────┐ │   │
│  │ │任务│ │  │ │任务│ │  │ │任务│ │  │ │任务│ │  │ │任务│ │   │
│  │ │卡片│ │  │ │卡片│ │  │ │卡片│ │  │ │卡片│ │  │ │卡片│ │   │
│  │ │ 1  │ │  │ │ 3  │ │  │ │ 7  │ │  │ │ 9  │ │  │ │10 │ │   │
│  │ └────┘ │  │ └────┘ │  │ └────┘ │  │ └────┘ │  │ └────┘ │   │
│  │        │  │        │  │        │  │        │  │        │   │
│  │ ┌────┐ │  │ ┌────┐ │  │ ┌────┐ │  │ ┌────┐ │  │ ┌────┐ │   │
│  │ │任务│ │  │ │任务│ │  │ │任务│ │  │ │任务│ │  │ │任务│ │   │
│  │ │卡片│ │  │ │卡片│ │  │ │卡片│ │  │ │卡片│ │  │ │卡片│ │   │
│  │ │ 2  │ │  │ │ 4  │ │  │ │ 8  │ │  │ │    │ │  │ │11 │ │   │
│  │ └────┘ │  │ └────┘ │  │ └────┘ │  │ └────┘ │  │ └────┘ │   │
│  │   ...  │  │   ...  │  │        │  │        │  │   ...  │   │
│  │        │  │        │  │        │  │        │  │        │   │
│  └────────┘  └────────┘  └────────┘  └────────┘  └────────┘   │
│    可拖拽 ──────────→                                           │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

任务卡片设计:

┌──────────────────────────────────────┐
│  实现用户登录功能                    │  ← 标题 (14px, 加粗)
│  ─────────────────────────────────  │
│  [开发] [高优先级]                   │  ← 徽章 (类型 + 优先级)
│  ─────────────────────────────────  │
│  🤖 Agent-001    🔗 3/5  📎 2       │  ← 底部信息
└──────────────────────────────────────┘
   ↑ 分配的智能体  ↑子任务  ↑附件数

卡片颜色规范:

  • 任务类型徽章:

    • 需求: 紫色 #9C27B0
    • 设计: 蓝色 #2196F3
    • 开发: 绿色 #4CAF50
    • 测试: 橙色 #FF9800
    • 部署: 红色 #F44336
  • 优先级徽章:

    • 高: 红色背景
    • 普通: 默认
    • 低: 灰色背景

组件:

  • draggable (vuedraggable) - 拖拽容器
  • TaskCard - 自定义任务卡片组件
  • el-input - 搜索框
  • el-select - 筛选下拉

交互:

  1. 拖拽 - 拖动任务卡片到其他列改变状态
  2. 点击卡片 - 打开右侧任务详情 Sidebar
  3. 筛选 - 按类型、优先级、关键词筛选
  4. 搜索 - 实时搜索任务标题和描述

3. TaskDetail Sidebar - 任务详情侧边栏

触发方式: 点击任务卡片

位置: 从右侧滑入,覆盖在主内容区上方

宽度: 480px

布局:

                        ┌──────────────────────────────┐
                        │  ×                           │
                        │  实现用户登录功能            │
                        │  ─────────────────────────  │
                        │  [编辑] [删除]              │
                        ├──────────────────────────────┤
                        │                              │
                        │  📊 基本信息                 │
                        │  状态:    [进行中 ▼]        │
                        │  类型:    [开发 ▼]          │
                        │  优先级:  [高 ▼]            │
                        │  创建者:  人类               │
                        │  分配给:  Agent-001          │
                        │  创建时间: 2天前             │
                        │                              │
                        │  ─────────────────────────  │
                        │                              │
                        │  📝 描述                     │
                        │  ┌──────────────────────┐   │
                        │  │                      │   │
                        │  │  ## 需求             │   │
                        │  │  实现用户登录...     │   │
                        │  │                      │   │
                        │  │  ## 技术要求         │   │
                        │  │  - JWT认证           │   │
                        │  │  - 密码加密          │   │
                        │  │                      │   │
                        │  └──────────────────────┘   │
                        │  [编辑描述]                  │
                        │                              │
                        │  ─────────────────────────  │
                        │                              │
                        │  📎 附件 (2)                 │
                        │  [设计图.png]      [下载] ✕ │
                        │  [API文档.pdf]     [下载] ✕ │
                        │  [+ 上传附件]                │
                        │                              │
                        │  ─────────────────────────  │
                        │                              │
                        │  🔀 子任务 (3/5 完成)        │
                        │  ✓ 前端登录页面              │
                        │  ✓ 后端API接口               │
                        │  ☐ 单元测试                  │
                        │  ☐ 集成测试                  │
                        │  ☐ 文档更新                  │
                        │  [+ 添加子任务]              │
                        │                              │
                        │  ─────────────────────────  │
                        │                              │
                        │  💬 评论 (即将上线)          │
                        │                              │
                        └──────────────────────────────┘

组件:

  • el-drawer - 抽屉组件
  • el-select - 下拉选择器
  • MarkdownEditor - 自定义 Markdown 编辑器
  • FileUpload - 自定义文件上传组件
  • SubtaskList - 自定义子任务列表

交互:

  • 点击 × 或点击遮罩层关闭
  • 下拉选择器即时更新(带防抖)
  • 附件拖拽上传
  • 子任务点击切换状态

4. ProjectDetail - 项目详情

路由: /projects/:id

功能: 查看项目详情、规约、共享笔记

布局:

┌─────────────────────────────────────────────────────────┐
│  📁 智能客服系统                      [编辑] [归档]     │
│  一个基于AI的智能客服系统...                            │
├─────────────────────────────────────────────────────────┤
│  [概览]  [任务列表]  [协作规约]  [共享笔记]  [统计]    │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  Tab 1 - 概览                                          │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐            │
│  │ 总任务   │  │ 进行中   │  │ 已完成   │            │
│  │   45     │  │   12     │  │   28     │            │
│  └──────────┘  └──────────┘  └──────────┘            │
│                                                         │
│  最近任务                                              │
│  • [开发] 实现用户登录   Agent-001  进行中            │
│  • [设计] 数据库设计     Agent-002  待测试            │
│  • [测试] 单元测试       Agent-003  完成              │
│                                                         │
│  [查看完整看板]                                        │
│                                                         │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  Tab 2 - 协作规约 (Markdown)                           │
│  ┌───────────────────────────────────────────────────┐ │
│  │ # 协作规约                                        │ │
│  │                                                   │ │
│  │ ## 代码规范                                       │ │
│  │ - 遵循 PEP 8                                      │ │
│  │ - 提交前必须通过 lint                             │ │
│  │                                                   │ │
│  │ ## 提交规范                                       │ │
│  │ - 使用 conventional commits                       │ │
│  │                                                   │ │
│  └───────────────────────────────────────────────────┘ │
│  [编辑规约]                                            │
│                                                         │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  Tab 3 - 共享笔记                                      │
│  ┌───────────────────────────────────────────────────┐ │
│  │ 📝 数据库选型确定                    Agent-001     │ │
│  │    PostgreSQL 15 + Redis              2天前       │ │
│  ├───────────────────────────────────────────────────┤ │
│  │ 📝 API设计完成                       人类          │ │
│  │    RESTful API设计文档已上传          3天前       │ │
│  └───────────────────────────────────────────────────┘ │
│  [+ 新建笔记]                                          │
│                                                         │
└─────────────────────────────────────────────────────────┘

组件:

  • el-tabs - 选项卡
  • el-statistic - 统计卡片
  • MarkdownViewer - Markdown 渲染器
  • el-timeline - 时间线(笔记列表)

5. AgentList - 智能体管理

路由: /agents

功能: 查看智能体状态、注册新智能体

布局:

┌─────────────────────────────────────────────────────────┐
│  🤖 智能体管理                       [注册新智能体]     │
├─────────────────────────────────────────────────────────┤
│  [全部(8)]  [空闲(3)]  [工作中(5)]                     │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  名称          状态    当前任务        完成数  最后心跳│
│  ────────────────────────────────────────────────────  │
│  Agent-001     🟢工作   实现登录         12     1分钟前│
│  Agent-002     🟢工作   数据库设计        8     2分钟前│
│  Agent-003     ⚪空闲   -                15     5分钟前│
│  Agent-004     🟢工作   单元测试          6     1分钟前│
│  Agent-005     ⚪空闲   -                 9     3分钟前│
│  Agent-006     🟢工作   前端开发         11     1分钟前│
│  Agent-007     ⚪空闲   -                13     4分钟前│
│  Agent-008     🟢工作   API开发           7     2分钟前│
│                                                         │
└─────────────────────────────────────────────────────────┘

选中某个智能体后,右侧显示详情:

┌────────────────────────────┐
│  Agent-001                 │
│  ─────────────────────────│
│  类型: 开发                │
│  能力:                     │
│  • backend                 │
│  • python                  │
│  • database                │
│                            │
│  当前任务:                 │
│  实现用户登录功能          │
│                            │
│  历史统计:                 │
│  • 总完成: 12              │
│  • 平均用时: 2.3小时       │
│  • 成功率: 95%             │
│                            │
│  最后心跳: 1分钟前         │
│  注册时间: 2周前           │
└────────────────────────────┘

组件:

  • el-table - 智能体列表表格
  • el-tag - 状态标签
  • el-descriptions - 详情描述列表

🎨 视觉设计规范

颜色系统

// 主题色
$primary: #667eea;           // 主色(渐变起点)
$primary-dark: #764ba2;      // 主色(渐变终点)

// 状态色
$success: #67C23A;           // 成功/完成
$warning: #E6A23C;           // 警告/进行中
$danger: #F56C6C;            // 危险/删除
$info: #909399;              // 信息/初始

// 任务状态色
$status-initial: #3498db;          // 初始 - 蓝色
$status-in-progress: #f39c12;      // 进行中 - 橙色
$status-testing-pending: #9b59b6;  // 待测试 - 紫色
$status-testing: #e67e22;          // 测试中 - 深橙
$status-completed: #27ae60;        // 完成 - 绿色

// 任务类型色
$type-requirement: #9C27B0;   // 需求 - 紫色
$type-design: #2196F3;        // 设计 - 蓝色
$type-development: #4CAF50;   // 开发 - 绿色
$type-testing: #FF9800;       // 测试 - 橙色
$type-deployment: #F44336;    // 部署 - 红色

// 灰度色
$text-primary: #303133;
$text-regular: #606266;
$text-secondary: #909399;
$text-placeholder: #C0C4CC;

$border-base: #DCDFE6;
$border-light: #E4E7ED;
$border-lighter: #EBEEF5;
$border-extra-light: #F2F6FC;

$bg-base: #FFFFFF;
$bg-light: #F5F7FA;
$bg-dark: #F0F2F5;

间距系统

$spacing-xs: 4px;
$spacing-sm: 8px;
$spacing-md: 16px;
$spacing-lg: 24px;
$spacing-xl: 32px;
$spacing-xxl: 48px;

圆角

$radius-sm: 4px;
$radius-md: 8px;
$radius-lg: 12px;
$radius-xl: 16px;

阴影

$shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.08);
$shadow-md: 0 4px 8px rgba(0, 0, 0, 0.12);
$shadow-lg: 0 8px 16px rgba(0, 0, 0, 0.15);

字体

$font-family-base: 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
$font-family-mono: 'Consolas', 'Monaco', 'Courier New', monospace;

$font-size-xs: 12px;
$font-size-sm: 13px;
$font-size-md: 14px;
$font-size-lg: 16px;
$font-size-xl: 18px;
$font-size-xxl: 20px;

🔄 交互设计

拖拽交互(Kanban

流程:

  1. 用户按住任务卡片
  2. 卡片变为半透明,跟随鼠标移动
  3. 经过其他列时,列高亮显示
  4. 松开鼠标,卡片落入目标列
  5. 发送 API 请求更新状态
  6. 成功: 提示"任务状态已更新"
  7. 失败: 卡片恢复原位,提示错误

视觉反馈:

.task-card {
  transition: transform 0.2s, box-shadow 0.2s;
  
  &.dragging {
    opacity: 0.5;
    transform: rotate(3deg);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
  }
  
  &:hover {
    transform: translateY(-2px);
    box-shadow: $shadow-md;
  }
}

.kanban-column {
  transition: background-color 0.2s, border 0.2s;
  
  &.drag-over {
    background: rgba(102, 126, 234, 0.05);
    border: 2px dashed $primary;
  }
}

侧边栏动画

TaskDetail Sidebar:

.task-detail-sidebar {
  position: fixed;
  right: 0;
  top: 60px;
  width: 480px;
  height: calc(100vh - 60px);
  background: white;
  box-shadow: -4px 0 16px rgba(0, 0, 0, 0.15);
  transform: translateX(100%);
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  z-index: 1000;

  &.active {
    transform: translateX(0);
  }
}

.overlay {
  position: fixed;
  top: 60px;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.3);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s;
  
  &.active {
    opacity: 1;
    pointer-events: auto;
  }
}

加载状态

Skeleton 骨架屏:

  • 列表加载时显示骨架屏,避免白屏
  • 使用 el-skeleton 组件
<el-skeleton :rows="5" animated v-if="loading" />

按钮加载:

<el-button :loading="submitting" @click="submit">
  提交
</el-button>

Toast 提示

成功提示:

ElMessage.success('任务状态已更新')

错误提示:

ElMessage.error('更新失败,请重试')

警告提示:

ElMessage.warning('文件大小不能超过 10MB')

📱 响应式设计

断点设置

$breakpoint-xs: 480px;   // 手机
$breakpoint-sm: 768px;   // 平板竖屏
$breakpoint-md: 992px;   // 平板横屏
$breakpoint-lg: 1200px;  // 桌面
$breakpoint-xl: 1920px;  // 大屏

适配策略

移动端 (< 768px):

  • Sidebar 自动收起,通过汉堡菜单展开
  • TaskDetail Sidebar 全屏显示
  • Kanban 看板横向滚动
  • 统计卡片 2列布局

平板 (768px - 992px):

  • Sidebar 保持展开
  • TaskDetail Sidebar 占 50% 宽度
  • Kanban 看板可视化 3 列
  • 统计卡片 4列布局

桌面 (> 992px):

  • 完整布局
  • 所有功能正常使用

性能优化

1. 组件懒加载

const Dashboard = () => import('@/views/Dashboard.vue')
const TaskBoard = () => import('@/views/TaskBoard.vue')

2. 虚拟滚动

对于超过 100 条的任务列表,使用虚拟滚动:

<el-virtual-list
  :data="tasks"
  :item-size="60"
  :height="600"
>
  <template #default="{ item }">
    <TaskCard :task="item" />
  </template>
</el-virtual-list>

3. 防抖节流

搜索防抖:

import { debounce } from 'lodash-es'

const handleSearch = debounce((keyword) => {
  taskStore.setFilters({ keyword })
}, 300)

状态更新节流:

import { throttle } from 'lodash-es'

const updateStatus = throttle(async (taskId, status) => {
  await taskApi.updateTask(taskId, { status })
}, 1000)

4. 图片懒加载

附件图片使用懒加载:

<el-image :src="attachment.url" lazy />

5. Keep-Alive 缓存

缓存频繁切换的页面:

<router-view v-slot="{ Component }">
  <keep-alive :include="['Dashboard', 'TaskBoard']">
    <component :is="Component" />
  </keep-alive>
</router-view>

🔐 安全考虑

1. XSS 防护

  • Markdown 渲染使用 DOMPurify 过滤
  • 用户输入统一转义
import DOMPurify from 'dompurify'

export function renderMarkdown(content) {
  const dirty = marked(content)
  return DOMPurify.sanitize(dirty)
}

2. CSRF 防护

  • Axios 默认携带 CSRF Token
  • 关键操作二次确认
ElMessageBox.confirm(
  '确定要删除这个任务吗?',
  '警告',
  {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
  }
).then(() => {
  deleteTask(taskId)
})

3. 文件上传安全

  • 限制文件类型
  • 限制文件大小(10MB
  • 后端验证文件内容

🧪 测试策略

1. 单元测试

使用 Vitest + Vue Test Utils:

import { mount } from '@vue/test-utils'
import TaskCard from '@/components/TaskCard.vue'

describe('TaskCard', () => {
  it('renders task title', () => {
    const wrapper = mount(TaskCard, {
      props: {
        task: {
          id: '1',
          title: '测试任务',
          status: 'initial'
        }
      }
    })
    expect(wrapper.text()).toContain('测试任务')
  })
})

2. 集成测试

测试关键用户流程:

  • 创建项目 → 创建任务 → 拖拽任务 → 查看详情

3. E2E 测试

使用 Playwright 或 Cypress:

describe('Task Board', () => {
  it('can drag and drop tasks', () => {
    cy.visit('/tasks/board/1')
    cy.get('[data-task-id="task-1"]')
      .drag('[data-status="in_progress"]')
    cy.contains('任务状态已更新')
  })
})

📊 数据流示例

创建任务流程

用户点击 [+ 新建任务]
    ↓
打开 TaskFormDialog
    ↓
填写表单(标题、描述、类型、优先级)
    ↓
点击 [提交]
    ↓
taskStore.createTask(formData)
    ↓
POST /api/tasks
    ↓
后端验证 → 插入数据库
    ↓
返回新任务对象
    ↓
taskStore.tasks.push(newTask)
    ↓
关闭对话框 + 成功提示
    ↓
看板自动刷新显示新任务

拖拽更新任务状态流程

用户拖动任务卡片
    ↓
onDragEnd 事件触发
    ↓
获取 taskId 和 newStatus
    ↓
taskStore.updateTask(taskId, { status: newStatus })
    ↓
PUT /api/tasks/:id { status: 'in_progress' }
    ↓
后端验证状态流转规则
    ↓
更新数据库
    ↓
返回更新后的任务
    ↓
taskStore 更新本地状态
    ↓
UI 重新渲染(任务移动到新列)
    ↓
显示成功提示

🎯 开发优先级

P0 (核心功能 - 第一周)

  1. 项目初始化和基础配置
  2. 路由和状态管理
  3. API 封装
  4. 主布局(Header + Sidebar + Main
  5. TaskBoard 任务看板 + 拖拽
  6. TaskCard 任务卡片组件
  7. TaskDetail Sidebar 任务详情

P1 (重要功能 - 第二周)

  1. Dashboard 仪表盘
  2. ProjectDetail 项目详情
  3. MarkdownEditor 编辑器
  4. FileUpload 文件上传
  5. 实时更新功能

P2 (扩展功能 - 第三周)

  1. AgentList 智能体管理
  2. 全局规约管理
  3. 共享笔记功能
  4. 响应式适配
  5. 性能优化
  6. 单元测试

P3 (锦上添花 - 后续)

  1. 快捷键支持
  2. 暗黑模式
  3. 国际化(i18n
  4. 通知中心
  5. 评论系统
  6. 工作流自动化

验收标准

功能完整性

  • 用户可以创建项目
  • 用户可以创建任务(支持 Markdown 描述)
  • 用户可以在看板中拖拽任务改变状态
  • 用户可以点击任务查看详情
  • 用户可以上传附件(最大 10MB
  • 用户可以管理子任务
  • 用户可以设置和查看协作规约
  • 用户可以添加共享笔记
  • 智能体可以注册并领取任务
  • 统计数据实时更新

交互体验

  • 拖拽流畅,无明显延迟
  • 路由切换有过渡动画
  • 加载状态友好(骨架屏/Loading)
  • 错误提示清晰明确
  • 成功操作有即时反馈
  • 表单验证完善

视觉规范

  • 使用 Element Plus 组件库
  • 颜色符合设计系统
  • 间距、圆角、阴影统一
  • 字体大小和行高合理
  • 移动端适配良好

性能指标

  • 首屏加载 < 2 秒
  • API 响应时间 < 500ms
  • 拖拽延迟 < 100ms
  • 列表渲染流畅(60fps
  • 组件懒加载和代码分割

代码质量

  • 使用 Composition API
  • 状态管理清晰(Pinia
  • 组件职责单一
  • API 封装合理
  • 错误处理完善
  • 关键功能有单元测试

📝 开发日志

2026-02-15 22:50

  • 完善设计文档
  • 定义页面布局和组件
  • 制定视觉规范
  • 规划交互流程
  • 确定开发优先级
  • 🔄 待审核...

🔗 相关文档


📞 审核意见

请审核以下方面:

  1. 布局设计 - 是否符合现代项目管理工具的风格?
  2. 交互流程 - 拖拽、侧边栏等交互是否合理?
  3. 视觉规范 - 颜色、间距、字体是否统一?
  4. 功能完整性 - 是否覆盖所有核心需求?
  5. 性能考虑 - 优化策略是否足够?
  6. 开发优先级 - 排期是否合理?

审核状态: 🔄 待审核

审核结果: 待填写

修改意见: 待填写


文档版本: v3.0
最后更新: 2026-02-15 22:50
状态: 待审核