# 4 前端状态审计报告 + 统一优化路线

**审计日期**: 2026-06-15
**审计人**: Claude
**关联**: [[阶段1-已实现盘点]] / [[Wingman设计]] / 风险跟踪表

---

## 📌 1. 4 前端总览

| 前端 | 路径 | UI 框架 | 角色 | 视图数 | dist 大小(估) | 路由前缀 |
|---|---|---|---|---|---|---|
| **admin** | `frontend-admin/` | Element Plus + Tailwind | 管理员 | 13+ | 大 | `/itadmin/` |
| **agent** | `frontend-agent/` | Element Plus | 坐席 | 2(主) | 中 | `/itagent/` |
| **h5** | `frontend-h5/` | Vant 4 | 员工 | 3 | 小 | `/itdesk/` |
| **portal** | `frontend-portal/` | Element Plus | 统一入口 | 2 | 小 | `/itportal/` |

**技术栈统一度**: 🟢 高(Vue 3 + Vite + TypeScript + Pinia + Vue Router + Axios)

---

## 📌 2. frontend-admin 管理端

### 2.1 视图清单

| 路径 | 名称 | 状态 | 备注 |
|---|---|---|---|
| `/login` | 管理员登录 | ✅ | |
| `/dashboard` | 运营总览 | ✅ | 统计卡片 |
| `/configs` | 功能开关 | ✅ | |
| `/agents` | 坐席管理 | ✅ | |
| `/roles` | 角色管理 | ✅ | |
| `/integrations` | 系统集成 | ✅ | 火绒/联软/aTrust/eHR |
| `/quick-replies` | 快速回复 | ✅ | |
| `/assignment-mode` | 分配模式 | ✅ | |
| `/flowcharts` | 流程图 | ✅ | |
| `/terminal-security` | 终端安全 | ✅ | |
| `/session-audit` | 会话审计 | ✅ | |
| `/system-logs` | 系统日志 | ✅ | |
| `/agent-performance` | 坐席绩效 | ✅ | 阶段 4 数据看板扩展 |
| `/monitor` | 监控 | ✅ | |

### 2.2 状态评估

- 🟢 **完成度高**:13+ 视图,功能齐全
- 🟢 **使用 Element Plus + Tailwind**:UI 统一
- 🟡 **缺失**:单元测试(Vitest 未配)
- 🟡 **缺失**:E2E 测试(Playwright 未配)
- 🟡 **缺失**:i18n(国际化)

### 2.3 已知问题

| # | 问题 | 严重度 | 解决 |
|---|---|---|---|
| A-1 | `/agent-performance` 是阶段 4 才有数据,目前空 | 🟡 | 阶段 4 实现 |
| A-2 | `/system-logs` 没用虚拟滚动,日志多时卡 | 🟡 | vue-virtual-scroller |
| A-3 | 角色管理权限粒度粗(没 RBAC) | 🟠 | 阶段 4 加 RBAC |
| A-4 | 集成页只展示无配置 | 🟡 | 加配置表单 |

---

## 📌 3. frontend-agent 坐席端

### 3.1 视图清单

| 路径 | 名称 | 状态 | 备注 |
|---|---|---|---|
| `/login` | 坐席登录 | ✅ | 用户ID + 姓名 + password |
| `/workspace` | 坐席工作台 | ✅ | 三栏(会话列表 / 对话 / 助手面板) |

### 3.2 组件清单(Workspace 包含)

| 组件 | 路径 | 状态 |
|---|---|---|
| ConversationList | `components/conversation/` | ✅ 6 分区 |
| MessageBubble | `components/chat/` | ✅ 4 种气泡 |
| ReplyBox | `components/chat/` | ✅ 输入框 + 草稿 |
| AiAssistantPanel | `components/assistant/` | ✅ AI 助手面板 |
| AiSuggestReply | `components/assistant/` | ✅ AI 草稿 |
| AiDraftBubble | `components/chat/` | ✅ AI 草稿气泡 |
| AiRecommendInline | `components/chat/` | ✅ AI 推荐内联 |
| OperationSteps | `components/assistant/` | ✅ 操作步骤 |
| RiskAlert | `components/assistant/` | ✅ 风险提示 |
| UserInfoPanel | `components/assistant/` | ✅ 用户信息 |
| QuickReplyPanel | `components/assistant/` | ✅ 快速回复 |
| TroubleshootBar | `components/chat/` | ✅ 排查栏 |
| TroubleshootProgress | (在 H5) | ✅ 员工端 |
| TroubleshootFlow | (在 H5) | ✅ 员工端 |
| FlowchartNode | `components/chat/` | ✅ 流程图节点 |
| ScreenshotEditor | `components/chat/` | ✅ 截图编辑 |
| InviteDialog | `components/conversation/` | ✅ 邀请弹窗 |
| ParticipantBar | `components/conversation/` | ✅ 参与者栏 |
| TodoPanel | `components/conversation/` | ✅ Todo 面板 |
| TaskDetailView | `components/chat/` | ✅ 任务详情 |
| TicketDetail | `components/chat/task/` | ✅ 工单详情 |
| DeviceDetail | `components/chat/task/` | ✅ 设备详情 |
| ApprovalDetail | `components/chat/task/` | ✅ 审批详情 |

### 3.3 Composables

- `useWebSocket.ts` (在别处)
- `useTheme.ts` ✅
- `useKeyboardShortcuts.ts` ✅
- `useScreenCapture.ts` ✅

### 3.4 状态评估

- 🟢 **完成度极高**:23 组件 + 4 composables
- 🟢 **三栏工作台**:会话 + 对话 + 助手,布局清晰
- 🟢 **AI 集成**:AiSuggestReply / AiDraftBubble / AiRecommendInline 三个 AI 组件
- 🟡 **缺失**:Vitest 单元测试
- 🟡 **缺失**:操作步骤/风险提示数据源(等后端字段)
- 🟡 **缺失**:坐席绩效统计(阶段 4)

### 3.5 已知问题

| # | 问题 | 严重度 | 解决 |
|---|---|---|---|
| A-5 | `useWebSocket.ts` token 用 subprotocol(P0 修复已加) | 🟢 | 已修 |
| A-6 | ReplyBox 大量重渲染(200+ 消息卡) | 🟡 | 虚拟列表 |
| A-7 | ScreenshotEditor 依赖 `html2canvas-pro` 体积大 | 🟡 | 改用 `dom-to-image` |
| A-8 | mock 数据仍在用(`mock/data.ts`) | 🟡 | 删,接真实 API |

---

## 📌 4. frontend-h5 员工端

### 4.1 视图清单

| 路径 | 名称 | 状态 | 备注 |
|---|---|---|---|
| `/` | ChatView(聊天) | ✅ | 默认首页 |
| `/login` | 降级登录 | ✅ | 本地开发用 |
| `/wework-only` | 企微拦截 | ✅ | 非企微环境显示 |

### 4.2 组件清单

| 组件 | 状态 |
|---|---|
| ChatPanel | ✅ |
| ShakeButton(敲桌子) | ✅ 7 种 SVG |
| TroubleshootProgress | ✅ |
| TroubleshootFlow | ✅ |
| ScreenshotEditor | ✅ |
| ParticipantList | ✅ |
| AiHelperPanel | ✅ |
| ApprovalLinks | ✅ |
| SoftwareDownloads | ✅ |
| RightPanel | ✅ |
| ComingSoon | ✅ 占位 |

### 4.3 状态评估

- 🟢 **完成度高**:11 组件
- 🟢 **Vant 4 移动端 UI**:适配好
- 🟡 **缺失**:Vitest 单元测试
- 🟡 **缺失**:摇人按钮(阶段 2 加)
- 🟡 **缺失**:满意度评价(阶段 2 加)
- 🟡 **缺失**:AI 回复展示(等 Dify 集成)

### 4.4 已知问题

| # | 问题 | 严重度 | 解决 |
|---|---|---|---|
| A-9 | OAuth2 callback 路径二次校验缺失(风险跟踪表 H-9 衍生) | 🟠 | 加 state 参数 |
| A-10 | H5 不支持长连接(用轮询降级) | 🟡 | 优先 WS |
| A-11 | Vant 4 vs Vant 3 API 差异,部分组件可能错版 | 🟡 | 走通测试 |

---

## 📌 5. frontend-portal 统一入口

### 5.1 视图清单

| 路径 | 名称 | 状态 | 备注 |
|---|---|---|---|
| `/select` | 角色选择 | ✅ | 跳 admin / agent |
| `/loading` | 加载中 | ✅ | 中转页 |

### 5.2 状态评估

- 🟢 **简单但有效**:2 视图
- 🟢 **集成 OAuth2**(走 admin/agent 的 token 传递)
- 🟡 **缺失**:跳过 Portal 直跳有问题(必须先 select)

### 5.3 已知问题

| # | 问题 | 严重度 | 解决 |
|---|---|---|---|
| A-12 | token 传递用 URL ?token= 风险(同 WS) | 🟠 | 改 sessionStorage |
| A-13 | `/loading` 没超时,卡死无 fallback | 🟡 | 10s 后回 `/select` |

---

## 📌 6. 跨前端共性问题

### 6.1 主题

- 🟢 **统一**: 都有 `useTheme.ts`
- 🟡 主题切换没持久化(刷新丢)
- 🟡 没暗色模式

### 6.2 错误处理

- 🟡 4 前端**都没全局错误边界**(try-catch 不一致)
- 🟡 4 前端**错误码体系不统一**(各端自行处理)
- 🟢 4 前端**都接 axios + 拦截器**

### 6.3 状态管理

- 🟢 **统一 Pinia**
- 🟡 stores 命名不一致(有些用 `useXxxStore`,有些 `useXxx`)

### 6.4 构建产物

| 前端 | dist 大小(估) | Gzip 后 | 首屏 |
|---|---|---|---|
| admin | 2-3 MB | ~500KB | 慢 |
| agent | 1.5-2 MB | ~400KB | 中 |
| h5 | 1-1.5 MB | ~300KB | 快 |
| portal | 200KB | ~50KB | 极快 |

**优化空间**:
- Element Plus 按需引入(全量 vs tree-shaking)
- 拆 vendor chunk
- 图片用 WebP

### 6.5 测试覆盖

| 前端 | Vitest | Playwright | E2E |
|---|---|---|---|
| admin | ❌ 0% | ❌ 0% | ❌ 0% |
| agent | ❌ 0% | ❌ 0% | ❌ 0% |
| h5 | ❌ 0% | ❌ 0% | ❌ 0% |
| portal | ❌ 0% | ❌ 0% | ❌ 0% |

**全是 0%** —— 严重问题,workbuddy W-3 加 pytest 后端测试,前端 Vitest 也要加。

---

## 📌 7. 统一优化路线

### 7.1 P1 优先(2 周)

| # | 任务 | 影响 |
|---|---|---|
| U-1 | 4 前端加 Vitest(基础测试框架) | 提升质量 |
| U-2 | 全局错误边界 + 错误码体系 | 统一错误处理 |
| U-3 | Pinia store 命名规范 | 一致性 |
| U-4 | 主题持久化(localStorage) | UX 改进 |
| U-5 | 删 agent `mock/data.ts`,接真实 API | 真实数据 |

### 7.2 P2 重要(4 周)

| # | 任务 | 影响 |
|---|---|---|
| U-6 | admin `/system-logs` 虚拟滚动 | 性能 |
| U-7 | agent ReplyBox 消息虚拟化 | 性能 |
| U-8 | 4 前端加 ESLint + Prettier 一致 | 代码质量 |
| U-9 | agent ScreenshotEditor 换库 | 体积 |
| U-10 | h5 OAuth2 state 校验 | 安全 |
| U-11 | portal token 走 sessionStorage | 安全 |

### 7.3 P3 体验(2 月)

| # | 任务 | 影响 |
|---|---|---|
| U-12 | 暗色模式(全 4 前端) | UX |
| U-13 | i18n(中/英) | 国际化 |
| U-14 | PWA(offline 支持) | 体验 |
| U-15 | Storybook 组件库 | 开发效率 |
| U-16 | E2E 测试(Playwright) | 回归 |

### 7.4 性能优化(持续)

- Element Plus 按需引入
- 图片 WebP + lazy load
- Code Splitting 拆 vendor chunk
- HTTP/2 + Brotli
- 路由级代码分割(已有)

---

## 📌 8. 实施路径

### 8.1 阶段 1(本周)

- U-1 Vitest 基础(每个前端 1 模板测试)
- U-5 删 mock data

### 8.2 阶段 2(下周)

- U-2 全局错误边界 + 错误码
- U-3 Pinia 命名规范
- U-4 主题持久化

### 8.3 阶段 3(下月)

- U-6 / U-7 性能优化
- U-8 ESLint
- U-10 / U-11 安全加固

### 8.4 阶段 4(季度)

- U-12 暗色模式
- U-13 i18n
- U-14 PWA
- U-15 Storybook
- U-16 E2E

---

## 📌 9. 风险与依赖

| 风险 | 等级 | 缓解 |
|---|---|---|
| 测试覆盖 0% → 重构风险 | 🟠 高 | 强制 Vitest 模板,新代码必带测试 |
| 4 前端重复代码 | 🟡 中 | 抽公共组件库(Stage 4) |
| 性能问题(Response 卡) | 🟡 中 | 虚拟列表 + 分页 |
| 主题/暗色模式分歧 | 🟢 低 | 统一 theme store |

---

## 📌 10. 关联文档

- [[阶段1-已实现盘点]] §2.1/2.2/2.3
- [[Wingman设计]] §4 前端设计
- [[风险跟踪表]] H-9 / M-1 等
- [[外部系统集成]] - portal/agent 集成

---

*本审计是 2026-06-15 Claude 满载跑批产出,待评审*
