{{ group.icon }} {{ group.label }}
{{ item.icon }} {{ item.label }}
```
**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