# 天工智能体平台 — 用户体验改进落地文档 > 版本: 1.0 | 日期: 2026-06-21 | 基于: 天工平台工程团队 UX 审计报告 --- ## 总览 本次 UX 审计覆盖平台全部 34 条路由,识别出 **22 个具体问题**(3 严重 + 5 高危 + 10 中危 + 4 低危)。按 6 个阶段、24 个任务组织执行计划。 | 优先级 | 阶段 | 任务数 | 预计工时 | 目标 | |--------|------|--------|----------|------| | **P0** | 1. 导航与信息架构 | 4 | M | 菜单瘦身 + 面包屑 + 全局搜索 | | **P0** | 2. 工作流设计器交互增强 | 4 | L | undo/redo + 未保存提示 + 画布辅助 | | **P1** | 3. 全局反馈与加载体验 | 4 | M | 通知中心 + 骨架屏 + 空状态 | | **P1** | 4. 登录与新手引导 | 3 | M | 渐进式登录提示 + 引导向导 | | **P2** | 5. 响应式与可访问性 | 4 | L | 暗色模式 + 移动端 + i18n 框架 | | **P2** | 6. 效率提升与反馈闭环 | 4 | M | 偏好持久化 + 反馈收集 | --- ## Phase 1: 导航与信息架构优化 (P0) ### 问题现状 `frontend/src/components/MainLayout.vue` 使用 `el-menu` 水平排列 22 个菜单项(实际代码中 45 个 el-menu-item/el-sub-menu),在 1366px 屏幕即溢出隐藏。全平台无面包屑导航,深层页面(如 `/agents/:id/design`)无返回路径。 ### 1.1 重构菜单为二级分组结构 **文件**: `frontend/src/components/MainLayout.vue` ```vue ``` **5 个菜单分组**: | 分组 | 包含 | 目标项数 | |------|------|----------| | 核心功能 | 主控台 / 工作流 / Agent 管理 | 3 | | AI 交互 | 对话 / 编排 / 测试 / 团队 | 4 | | 市场与资源 | 模板市场 / 技能商店 / 工具 / 节点模板 | 4 | | 运维管理 | 监控 / 告警 / 日志 | 3 | | 系统设置 | 工作区 / 权限 / 模型配置 / 数据源 | 4 | ### 1.2 添加面包屑导航 **文件**: `frontend/src/components/BreadcrumbNav.vue`(新建)+ `MainLayout.vue`(修改) 基于 `route.matched` 自动生成,无需手动维护。在 MainLayout 的 `el-main` 顶部嵌入。 ```typescript // 核心逻辑 const breadcrumbs = computed(() => route.matched .filter(r => r.meta?.title && !r.meta?.hidden) .map((r, i, arr) => ({ label: r.meta!.title as string, path: i < arr.length - 1 ? r.path : undefined, isLast: i === arr.length - 1, })) ) ``` 参考规格: `D:\aaa\aiagent\team_projects\a3760fbb-8b9b-45ed-adba-db6f809b89d3\D-aaa-aiagent\breadcrumb_spec.md` ### 1.3 菜单去重与合并 **文件**: `frontend/src/views/Monitoring.vue`, `AgentDashboard.vue`, `MainLayout.vue`, `frontend/src/router/index.ts` | 合并项 | 方案 | |--------|------| | AgentDashboard + Monitoring | 统一监控面板,tab 切换 Agent 视角/系统视角 | | DigitalEmployeeFactory + TeamBuilder | 合并入口为"虚拟团队" | | DataSources + KnowledgeDashboard | 合并为"知识库管理中心" | 目标:菜单项从 22 → ≤16 个。 ### 1.4 全局搜索 (Ctrl+K) **文件**: `frontend/src/components/GlobalSearch.vue`(新建)+ `MainLayout.vue`(修改) - `Ctrl+K` 唤起,ESC 关闭 - 搜索范围:页面导航 > Agent > 工作流 > 知识库 > 飞书机器人 > 帮助 - 全键盘操作:↑↓ 选择,Enter 跳转 - 150ms debounce,本地即时检索 参考规格: `D:\aaa\aiagent\team_projects\a3760fbb-8b9b-45ed-adba-db6f809b89d3\D-aaa-aiagent\global_search_spec.md` **验收标准**: - [ ] 菜单项 ≤16 个,1366px 屏幕无溢出 - [ ] 所有页面显示面包屑,可点击跳转 - [ ] Ctrl+K 唤起全局搜索,500ms 内返回结果 - [ ] Agent 监控和系统监控合并为统一面板 - [ ] 所有现有路由保持可访问 --- ## Phase 2: 工作流设计器交互增强 (P0) ### 问题现状 `frontend/src/components/WorkflowEditor/` 是平台核心高频页面,但缺失撤销/重做、未保存变更提示、画布辅助功能。UI 文案已写了 Ctrl+Z/Ctrl+Shift+Z(工具栏),但功能未实现。 ### 2.1 撤销/重做系统 **文件**: `frontend/src/components/WorkflowEditor/composables/useUndoRedo.ts`(新建)+ `WorkflowEditor.vue`(修改) 基于 Command Pattern 实现,参考产出代码: ``` D:\aaa\aiagent\team_projects\a3760fbb-8b9b-45ed-adba-db6f809b89d3\D-aaa-aiagent\frontend\src\ ├── composables/useCommandHistory.ts ← undo/redo 状态管理 ├── commands/index.ts ← 命令注册 ├── commands/AddNodeCommand.ts ├── commands/DeleteNodeCommand.ts ├── commands/MoveNodeCommand.ts ├── commands/AddEdgeCommand.ts ├── commands/DeleteEdgeCommand.ts └── commands/UpdateNodeConfigCommand.ts ``` 关键设计: - 历史栈深度 50 - 支持 node add/remove/move、edge add/remove、node data change - `canUndo`/`canRedo` 计算属性驱动工具栏按钮状态 - dirty tracking 标记保存状态 ### 2.2 未保存变更提示 **文件**: `frontend/src/views/WorkflowDesigner.vue`, `frontend/src/views/AgentConfig.vue` ```typescript // 路由守卫 import { onBeforeRouteLeave } from 'vue-router' import { ElMessageBox } from 'element-plus' onBeforeRouteLeave((to, from) => { if (isDirty.value) { return ElMessageBox.confirm('你有未保存的更改,确定要离开吗?', '提示', { confirmButtonText: '离开', cancelButtonText: '留下', type: 'warning', }).then(() => true).catch(() => false) } return true }) // 浏览器关闭 window.addEventListener('beforeunload', (e) => { if (isDirty.value) { e.preventDefault() e.returnValue = '' } }) ``` ### 2.3 画布辅助功能 **文件**: `frontend/src/components/WorkflowEditor/WorkflowEditor.vue`, `CanvasToolbar.vue`(新建) - 小地图(可折叠 `@vue-flow/minimap`) - 网格/吸附切换按钮 - 自动布局按钮(dagre) - 缩放到适配按钮(fit-view) - 节点搜索/定位输入框 以浮动工具栏形式在画布左下角展示。 ### 2.4 节点配置面板优化 **文件**: `frontend/src/components/WorkflowEditor/NodeConfigPanel.vue` - 增加节点类型搜索/筛选 - LLM 节点 prompt 实时预览 - 配置项 help tooltip - 一键复制节点配置 **验收标准**: - [ ] Ctrl+Z 可撤销最近 50 步操作 - [ ] 有未保存变更时离开页面弹出确认提示 - [ ] 画布小地图可折叠,缩放/适配按钮正常 - [ ] 节点配置面板有实时预览和 tooltip --- ## Phase 3: 全局反馈与加载体验 (P1) ### 问题现状 全平台使用 `v-loading` 指令,页面加载时大面积空白。`ElMessage` 通知消失后不可回溯。空状态和错误状态使用裸 `el-empty`,文案不一致。 ### 3.1 通知中心 **文件**: `frontend/src/components/NotificationCenter.vue`(新建)+ `frontend/src/stores/notification.ts`(新建)+ `MainLayout.vue`(修改) - 收集 ElMessage/ElNotification 到持久化队列(最多 100 条) - 顶部铃铛图标 + 红点未读数 - 下拉面板分类(全部/成功/警告/错误) - 单条已读、全部已读、清空 - 点击通知跳转到相关页面 ### 3.2 骨架屏加载 **文件**: `frontend/src/views/Agents.vue`, `Home.vue`, `Executions.vue`, `TemplateMarket.vue` 替换列表加载时的 `v-loading` 为定制骨架屏: ```vue ``` 封装 `useSkeleton` composable 统一加载状态管理。 ### 3.3 统一空状态/错误状态 **文件**: `frontend/src/components/EmptyState.vue`(新建)+ `ErrorState.vue`(新建) ```vue ``` 全局替换裸用的 `el-empty` 和 `el-alert`。 ### 3.4 操作确认与进度反馈 **文件**: `frontend/src/components/ConfirmDialog.vue`(新建) - 危险操作展示被删除对象的**具体信息**(名称、关联资源数) - 批量操作增加进度条(已处理 x/y) - 长时间操作使用非阻塞通知代替阻塞弹窗 **验收标准**: - [ ] 通知中心可查看最近 100 条通知,支持分类和跳转 - [ ] 4 个主要列表页使用骨架屏 - [ ] 所有空/错误状态使用统一组件 - [ ] 批量操作有实时进度反馈 - [ ] 网络断开时自动显示离线横幅 --- ## Phase 4: 登录与新手引导 (P1) ### 问题现状 `Login.vue` 在 5 次失败后直接进入 60 秒冷却,缺乏渐进式提示。新用户无引导流程,平台 34 条路由 + 56 个工具对新手极不友好。 ### 4.1 登录页渐进式错误提示 **文件**: `frontend/src/views/Login.vue`(修改 line 276-285 附近) | 失败次数 | 行为 | |----------|------| | 第 1-2 次 | 通用错误提示:"用户名或密码错误" | | 第 3 次 | 增加"忘记密码?"链接 | | 第 4 次 | 显示验证码输入 | | 第 5 次 | 15 秒短冷却(非 60 秒)+ "联系管理员"入口 | ### 4.2 新用户引导向导 **文件**: `frontend/src/components/OnboardingWizard.vue`(新建)+ `frontend/src/stores/user.ts`(修改) 5 步引导: 1. **欢迎** — 平台能力概览(~1 min) 2. **选择身份** — 开发者 / 业务用户 / 管理员(~1 min) 3. **创建第一个 Agent** — 从模板创建(~3 min) 4. **体验对话** — 发送第一条消息(~2 min) 5. **完成** — 个性化快捷入口 + 徽章(~1 min) 首次登录自动弹出,支持"跳过"和"稍后再说",完成后可从头像菜单重新进入。 ### 4.3 上下文帮助系统 **文件**: `frontend/src/components/ContextHelp.vue`(新建)+ `HelpPanel.vue`(新建) - 每个页面顶部可折叠帮助横幅(3-5 个 FAQ) - 表单字段 help tooltip - 右下角悬浮"?"帮助按钮 → 侧边帮助面板 - 0 个 Agent 的新用户突出显示"快速上手"按钮 **验收标准**: - [ ] 登录失败 3 次显示忘记密码,第 5 次仅 15 秒冷却 - [ ] 新用户首次登录看到 5 步引导 - [ ] 所有页面有帮助横幅 - [ ] 引导完成率 ≥ 60% --- ## Phase 5: 响应式与可访问性 (P2) ### 5.1 核心页面响应式 **文件**: `frontend/src/views/Agents.vue`, `Home.vue`, `Monitoring.vue`, `AgentChat.vue`, `MainLayout.vue` - 表格在 ≤768px 转为卡片布局 - MainLayout 菜单在小屏转为汉堡菜单(el-drawer) - 监控图表在小屏堆叠排列 ### 5.2 暗色模式 **文件**: `frontend/src/stores/theme.ts`(新建)+ `frontend/src/styles/dark-theme.css`(新建)+ `MainLayout.vue`(修改) - 利用 Element Plus 2.x 原生 CSS 变量暗色支持 - 主题切换按钮:浅色 / 暗色 / 跟随系统 - 暗色变量适配:画布背景、消息气泡、卡片 - 用户偏好持久化 localStorage - 默认跟随 `prefers-color-scheme` ### 5.3 键盘无障碍与 ARIA | 项目 | 说明 | |------|------| | Tab 导航 | 所有交互元素可通过 Tab 访问,焦点样式可见 | | Focus Trap | 模态对话框焦点不逃逸 | | ARIA | 表格/菜单/选项卡添加 role 和 label | | Skip Link | 键盘用户可跳过导航直达内容 | | 颜色 | 错误状态同时使用图标 + 颜色(不只依赖颜色) | ### 5.4 国际化框架 **文件**: `frontend/src/i18n/index.ts`(新建)+ `frontend/src/locales/zh-CN.json` + `en-US.json` - 引入 vue-i18n - 提取中文硬编码到 zh-CN.json - 创建 en-US.json(优先核心页面:登录、主控台、Agent 管理) - 语言切换下拉菜单 **验收标准**: - [ ] 375px 移动端宽度下 Agent/工作流列表正常显示 - [ ] 暗色模式切换后全页面颜色正常 - [ ] Tab 可导航所有交互元素 - [ ] 语言切换为英文后登录页/主控台显示英文 --- ## Phase 6: 效率提升与反馈闭环 (P2) ### 6.1 用户偏好持久化 **文件**: `frontend/src/stores/userPreferences.ts`(新建) - 表格列可见性和顺序(每页独立) - 分页大小偏好(10/20/50) - 侧边栏折叠状态 - 持久化到 localStorage,按 workspace 隔离 - 首页"最近使用"快捷入口(最近 5 个 Agent/工作流) ### 6.2 Agent 列表行内快速预览 **文件**: `frontend/src/views/Agents.vue`(修改)+ `frontend/src/components/AgentQuickPreview.vue`(新建) - 表格行展开显示简易聊天输入框,不离开列表即可发送一条测试消息 - 收藏功能(星标 Agent) - Popover 悬浮预览 Agent 配置摘要 - 批量操作工具栏(批量部署/停止/导出) ### 6.3 用户反馈收集 **文件**: `frontend/src/components/FeedbackWidget.vue`(新建)+ `MainLayout.vue`(修改) - 右下角悬浮反馈按钮 - 反馈类型:Bug 报告 / 功能建议 / 使用体验 - 自动附带 URL、浏览器信息、用户 ID - 支持截图标注(可选) - 后端 `POST /api/v1/feedback` 端点 ### 6.4 执行历史体验优化 **文件**: `frontend/src/views/Executions.vue`, `ExecutionDetail.vue`(修改)+ `frontend/src/components/ExecutionTimeline.vue`(新建) - 时间范围筛选(今天/近7天/近30天/自定义) - 执行耗时分布图表 - 节点执行时间线可视化(el-timeline) - 失败执行一键重试(相同参数) **验收标准**: - [ ] 表格列配置和分页大小刷新后保持 - [ ] Agent 列表行展开快速测试 - [ ] 反馈 Widget 可提交 Bug/建议 - [ ] 执行历史支持时间筛选和一键重试 - [ ] 执行详情展示节点时间线 --- ## 22 个 UX 问题总清单 | ID | 严重度 | 类别 | 问题 | 文件位置 | |----|--------|------|------|----------| | F01 | 🔴 Critical | 导航 | 22 个横向菜单项严重溢出 | `MainLayout.vue:50-140` | | F02 | 🔴 Critical | 导航 | 全平台无面包屑导航 | 全局 | | F03 | 🔴 Critical | 编辑器 | 工作流设计器无撤销/重做 | `WorkflowEditor/` | | F04 | 🟠 High | 编辑器 | 无未保存变更提示 | `WorkflowDesigner.vue` | | F05 | 🟠 High | 加载 | 全平台 v-loading 无骨架屏 | `Agents.vue` 等 | | F06 | 🟠 High | 通知 | ElMessage 消失后无法回溯 | 全局 | | F07 | 🟠 High | 信息架构 | 菜单功能重叠 | `router/index.ts` | | F08 | 🟠 High | 搜索 | 无全局搜索 | 全局 | | F09 | 🟡 Medium | 登录 | 登录失败 60 秒冷却无渐进提示 | `Login.vue:276-285` | | F10 | 🟡 Medium | 引导 | 新用户无引导流程 | 全局 | | F11 | 🟡 Medium | 主题 | 无暗色模式 | 全局样式 | | F12 | 🟡 Medium | 响应式 | 除 MobileChat 外无移动端适配 | 全局 | | F13 | 🟡 Medium | 表格 | Agent/Home 操作列过宽导致横向滚动 | `Agents.vue:109` | | F14 | 🟡 Medium | 测试 | Agent 测试需跳转到设计器 | `Agents.vue` | | F15 | 🟡 Low | 偏好 | 用户偏好不持久化 | 全局 store | | F16 | 🟡 Low | 反馈 | 无用户反馈收集渠道 | 全局 | | F17 | 🟡 Low | 可访问性 | 无键盘导航和 ARIA | 全局 | | F18 | 🟡 Low | 执行 | 执行历史缺少时间筛选和重试 | `Executions.vue` | | F19 | 🟢 Low | 节点 | 节点配置无实时预览 | `NodeConfigPanel.vue` | | F20 | 🟢 Low | 菜单 | 菜单无 ARIA 属性 | `MainLayout.vue` | | F21 | 🟢 Low | 通知 | 长时间操作无进度反馈 | 全局 | | F22 | 🟢 Low | 帮助 | 表单字段无 help tooltip | 全局 | --- ## 实现顺序建议 ``` Week 1-2: Phase 1 (导航) → Phase 2 (设计器) ← P0 必须交付 Week 3-4: Phase 3 (反馈) → Phase 4 (登录引导) ← P1 核心体验 Week 5-8: Phase 5 (响应式/暗色) → Phase 6 (效率) ← P2 完善体验 ``` ### 技术栈对齐 - **前端**: Vue 3 + TypeScript + Pinia + Element Plus + Vue Router - **后端**: FastAPI + SQLAlchemy + Pydantic - **代码规范**: 使用 `frontend/src/composables/` 模式,Pinia stores 按领域拆分 - **新文件放置**: 遵循现有目录结构(components 新组件、stores 新 store) ### 复用现有基础设施 | 现有模块 | 可复用场景 | |----------|-----------| | `useWorkflowStore` | undo/redo 系统依赖 | | `MainLayout.vue` | 面包屑、搜索、通知中心嵌入点 | | `router/index.ts` | 面包屑和全局搜索的数据源 | | `Login.vue` | 忘记密码对话框已有,扩展渐进式提示 | | Element Plus 2.x | 暗色模式原生支持,骨架屏组件 | | `el-dialog` / `el-drawer` | 引导向导、帮助面板 UI 基础 | --- ## 参考资料 - 完整审计报告: `D:\aaa\aiagent\team_projects\a3760fbb-8b9b-45ed-adba-db6f809b89d3\D-aaa-aiagent\` - UX 执行计划: `ux_improvement_plan.json` (6 阶段 24 任务) - 导航审计: `navigation_audit.md` (34 路由全覆盖) - 菜单去重: `menu_dedup_report.md` - 面包屑规格: `breadcrumb_spec.md` - 全局搜索规格: `global_search_spec.md` - 新手引导规格: `onboarding_product_spec.json` - 参考前端代码: `frontend/src/` (composables/components/stores) - 参考后端代码: `backend/app/` (routers/models/schemas)