# 增量设计:坐席端布局优化 v2.0 > **文档版本**:v2.0 > **创建日期**:2026-07-11 > **文档类型**:增量架构设计(前端重构) > **技术栈**:Vue 3 + Element Plus + TypeScript + Pinia + CSS Variables > **代码位置**:`frontend-agent/` > **预估工期**:7 天(5 个 Phase) --- ## 目录 1. [实现方案概述](#1-实现方案概述) 2. [文件列表](#2-文件列表) 3. [数据结构和接口](#3-数据结构和接口) 4. [程序调用流程](#4-程序调用流程) 5. [任务列表](#5-任务列表) 6. [依赖包列表](#6-依赖包列表) 7. [共享知识](#7-共享知识) 8. [待明确事项](#8-待明确事项) --- ## 1. 实现方案概述 ### 1.1 背景与核心矛盾 坐席端当前三栏布局(左栏 280px 会话列表 + 中栏 flex-1 聊天区 + 右栏 320px AI 面板)存在四个核心矛盾: | 编号 | 矛盾 | 现状 | 影响 | |------|------|------|------| | P1 | ReplyBox 工具栏拥挤 | 单行 6 按钮,新增 4 个 AI 按钮后达 10 个 | 按钮无层次,操作效率低 | | P2 | 右栏信息密度过载 | 320px 承载 5 个功能区(Wingman/AI推荐/标注/快速回复/草稿) | 坐席视线频繁切换 | | P3 | 中栏可用高度不足 | 固定高度层过多,1080p 屏幕消息区仅剩 ~400px | 消息浏览体验差 | | P4 | AI 交互入口分散 | 9+ 个入口分布在 3 个位置 | 认知负担重 | ### 1.2 重构策略:功能重新分类 + 布局精简 本次重构采用 **"先清理后建设"** 的增量策略,分两条主线推进: **主线 A — 功能重新分类(解决 P2/P4)** 将 AI 功能按使用时机分为两类,分别归入中栏和右栏: ``` ┌─────────────────────────────────────────────────────────────────┐ │ 回复前用(放中栏) │ 回复后用/训练用(放右栏) │ ├───────────────────────────────┼─────────────────────────────────┤ │ · AI 草稿生成/展示 │ · 智能标注(原"排查流程"重命名) │ │ · 知识库引用 │ · 质量反馈(AI回复有用/无用) │ │ · AI 推荐回复 │ · 知识贡献(提交知识建议) │ │ · 快速回复 │ · 使用统计 │ │ · 排查导航 │ │ │ · 自动补齐/语气/润色/改写 │ │ └───────────────────────────────┴─────────────────────────────────┘ ``` **主线 B — 布局精简(解决 P1/P3)** - 左栏 280px → 260px(释放 20px 给中栏) - 右栏 320px → 260px(正常)/ 560px(放大模式,新增开关) - UserInfoBar 详情默认折叠(节省 ~150px 高度) - TroubleshootBar 默认收起为图标条(节省 ~36px 高度) - ReplyBox 工具栏重构为左右分区(常规工具 | AI 工具) ### 1.3 功能重复清理(5 处) | 编号 | 重复问题 | 清理方案 | |------|---------|---------| | R1 | AI 草稿双展示(中栏气泡 + 右栏 Wingman) | 统一到中栏 ReplySuggestArea | | R2 | AI 推荐回复三处展示(右栏卡片 + 内联 + 草稿气泡) | 合并到 AiRecommendBar.vue | | R3 | 排查流程命名混淆 | 右栏按钮重命名为"智能标注" | | R4 | 标签建议双入口 | 合并为单一"智能标注"面板 | | R5 | 孤儿组件 AiRecommendInline.vue | 删除 | ### 1.4 风险控制 | 风险 | 等级 | 控制措施 | |------|------|---------| | 功能迁移期间出现入口缺失 | 高 | T02 先完成清理并验证无残留引用,再进入 T03/T04 建设 | | 右栏放大模式挤压中栏 | 中 | 放大模式设置 560px 上限,中栏 min-width: 400px 保底 | | CSS 变量改动影响暗色主题 | 中 | 新增变量同步在 `[data-theme="dark"]` 中定义对应值 | | 拖拽手柄与新宽度冲突 | 低 | 拖拽范围下限从 220px 调整为 200px,上限保持 500px | | 删除组件导致其他模块编译错误 | 中 | T02 中执行全局 Grep 搜索引用,确保无残留 import | ### 1.5 框架选型 本项目不引入新框架,完全基于现有技术栈实现: | 技术 | 用途 | 选型理由 | |------|------|---------| | Vue 3 Composition API | 组件逻辑组织 | 现有项目统一使用 `