Files
wecom_it_smart_desk/docs/01-产品文档/04-坐席工作台/PRD-REQ-坐席-009-会话状态Tab筛选-v1.0.md
T
Simon 22909fb3bd docs: 补充 #134 相关 PRD-009 + 技术方案 #002 交叉引用 (#134)
**新增**
- `docs/01-产品文档/04-坐席工作台/PRD-REQ-坐席-009-会话状态Tab筛选-v1.0.md`
  - 7 段结构:背景与目标 / 需求说明(5 个 FR + 状态映射规则 + 跨段渲染)/ 用户故事 & 10 项 AC / 交互示意 / 不在本 PRD 范围 / 关联文档 / 变更记录
  - 明确边界:未实现"Tab 数量徽章 + 空状态文案",后续 #135 候选

**修改**
- `docs/02-技术文档/技术架构/技术方案-REQ-坐席-002-AI辅助消息框-v1.0.md`
  - §3.1 组件架构图:ConversationList.vue 增加 2 行注释(说明筛选 Tab + 数据源)
  - 文末追加"📌 增量变更记录(不破坏 v1.0 原结构)"段:交叉引用 PRD #009 / 任务 #134 / 原型 v1.2 / commit 566bb46

**未改**
- 不动架构图层级 / 不动其他组件的描述 / 不破坏 v1.0 原 §1-§12 结构
- 不在 #002 中重写需求细节(这些都在 PRD #009 集中管理,避免文档冗余)
- `docs/04-运维文档/部署运维/01-项目总览与部署手册-20260704.md` / `开发交付概览.md` grep 通过无相关描述,无需更新

**关联**
- #134 落地代码:commit `566bb46`
- 已同步文档:PRD #009(新建)+ 技术方案 #002(增量段)

**操作失误修复**
- 起草时通过 Write 工具误将 PRD #009 写到了 `D:\资料\03-产品文档\` 而非项目内的 `D:\资料\03-项目开发\wecom_it_smart_desk\docs\01-产品文档\`(少了一个目录层级 + 中文章段编号错位)
- 修复:用 PowerShell `Move-Item` 把文件移到正确路径,递归清理空目录 `D:\资料\03-产品文档\`(只含我自己刚建的 1 个文件 + 2 个空目录,无误删任何个人文件)
2026-08-03 17:58:22 +08:00

10 KiB
Raw Blame History

坐席端会话状态 Tab 筛选 — 产品需求文档 (PRD)

版本: v1.0
日期: 2026-08-03
作者: 宋献
状态: 已落地(生产版本 index-BK_U7e10.js
子系统: 04-坐席工作台
模块: 会话列表筛选
关联任务: #134(坐席端左栏会话状态 Tab 顺序调整 + 默认显示待处理)
关联原型: 原型-REQ-坐席-000-坐席工作台-v1.2.html


1. 背景与目标

1.1 现状分析

坐席工作台左栏会话窗口已具备 Tab 筛选能力(v1.0 起即存在),但 v1.1 存在两个影响日常效率的问题:

问题 表现 影响
Tab 顺序不合理 「全部」Tab 排在第一位(按字母 + 全集概念) 高频 Tab(待处理)被埋在其他标签后面
默认激活错位 默认进入页面激活「全部」 坐席每天首次进入要先点 1 下切到「待处理」才看到工作队列
筛选粒度不足 「全部」Tab 混排 待处理 + 进行中 + 已完成 + 同事会话 + 历史会话 视觉噪音多,重点不突出

1.2 用户痛点

核心痛点:坐席每日首次进入坐席工作台 → 应立即看到「我现在该处理的待办队列」。

但当前版本默认显示「全部」,坐席需要:

  1. 看完整列表 → 识别哪些是新分派的
  2. 或点击「待处理」Tab → 才看到工作队列

多点击 + 视觉噪音:每天 8 小时 × 多次重入 = 累计损失明显。

1.3 目标

通过最小改动(仅 Tab 顺序调整 + 默认激活态变更),实现:

  1. 默认即工作队列 — 打开坐席工作台,第一眼就是待处理
  2. 顺序符合使用频次 — 高频 Tab 在前、低频 Tab 在后
  3. 「全部」沉底 — 仅作"全部查看"用,不作为默认入口

1.4 设计原则

原则 体现
最小改动 仅顺序 + 初值,不动 store / 不动样式 / 不动 key 名
后向兼容 保留 activeFilter 的 4 个 key'pending' | 'active' | 'done' | 'all'),switch 逻辑、API 调用、URL 参数都不变
数据准确 status 映射规则保留:pending→queuedactive→serving/ai_handlingdone→resolved
协同不干扰 同事会话(colleagueConversations)和历史会话(historyConversations仅在「全部」Tab 下可见,其他 Tab 按 applyFilters 自然归零

2. 需求说明

2.1 核心功能(FR

FR ID 功能描述 优先级
FR-01 左栏会话窗口顶部展示 4 个 Tab顺序为「待处理 → 进行中 → 已完成 → 全部」 P0
FR-02 默认进入页面激活「待处理」Tab(无需点击) P0
FR-03 切换 Tab 时列表实时过滤,按 applyFilters 规则(见 §2.3 P0
FR-04 搜索框 + Tab 为 AND 关系(关键词 ∧ 状态) P1
FR-05 「全部」Tab 下展示所有会话(含同事 + 历史) P1

2.2 详细说明

4 个 Tab 排序逻辑(高频在前,低频在后):

  1. 待处理 — 每日最高频(队列分派 / 求助举手 / 新分派会话)
  2. 进行中 — 高频(已回复待用户反馈的会话)
  3. 已完成 — 中频(结单归档的会话)
  4. 全部 — 低频(异常排查 / 数据回顾)

激活态与默认行为

  • 默认 activeFilter = 'pending'
  • 用户切换后,组件不持久化 Tab 选择(刷新即回到「待处理」)— 这是设计选择,避免历史 Tab 状态导致坐席看不到最新队列

2.3 状态映射规则(与 Store API 保持一致)

Tab 显示文案 activeFilter 对应 conv.status Store 归属
待处理 'pending' queued(待接单) myConversations
进行中 'active' serving(服务中)或 ai_handlingAI 处理中) myConversations / colleagueConversations
已完成 'done' resolved90 天内) historyConversations
全部 'all' 不限定 三段全部

注:activeFilter key 名 'active'(不是 'in-progress')保持后向兼容;store status 命名(如 serving / ai_handling)不变。

2.4 跨段渲染规则

Tab 我的会话(mine 同事会话(colleague 历史会话(history
待处理 显示 pending 自然为空(store 隔离) 自然为空
进行中 显示 active 自然为空 自然为空
已完成 显示 done(跨段渲染 from history 自然为空 显示 resolved
全部 显示 all 显示 all 显示 all

「同事会话」在所有筛选 Tab 下都不出现(store 中 colleagueConversations 仅含 serving+!is_mine+!is_collaboratorai_handling,不满足 pending/active/done 的任意状态)— 用户确认接受该行为。


3. 用户故事 & 验收标准

3.1 用户故事

US ID 角色 故事 优先级
US-01 坐席 作为坐席,我希望打开坐席工作台立即看到待处理会话列表,这样能马上开始工作 P0
US-02 坐席 作为坐席,我希望 Tab 按使用频次排序(待处理在最左),这样切换更顺手 P1
US-03 坐席 作为坐席,我希望「全部」沉到底部(不是默认入口),避免误点 P1
US-04 资深坐席 作为坐席,我希望切换到「全部」Tab 还能看到同事会话和历史会话,便于排查 P1

3.2 验收标准(AC

AC ID 验证项 验收方法 预期结果
AC-01 Tab 顺序 视觉确认 从左到右:待处理 → 进行中 → 已完成 → 全部
AC-02 默认激活 刷新页面 「待处理」Tab 蓝色高亮
AC-03 默认列表 刷新页面 左侧仅展示 status=queued 的会话(来自 myConversations 自然过滤)
AC-04 Tab 切换「进行中」 点击 列表展示 status in {serving, ai_handling}
AC-05 Tab 切换「已完成」 点击 列表展示 status=resolved(来自 historyConversations
AC-06 Tab 切换「全部」 点击 三段(my + colleague + history)全部展示
AC-07 搜索 + Tab 联动 输入关键词后切换 Tab 关键词 ∧ 状态过滤均生效
AC-08 同事会话隐藏(非全 Tab 切到「待处理」 赵敏/周芳/吴明(同事区)不显示
AC-09 接手会话流转 同事会话点击「接手」 接手后会话归入 myConversations,「全部」Tab 下可见
AC-10 无数据容错 DB 清空全部会话 「待处理」激活,左侧显示 el-empty description="暂无会话" 占位

4. 交互示意

4.1 默认进入页面

┌─────────────────────────────────┐
│ [🔍 搜索用户、关键词...]           │
│                                  │
│ [● 待处理 5] [进行中 1] ... [全部 10] │  ← Tab 行:默认 ● 待处理
│                                  │
│ 头像  张伟  10:25  待回复   张    │  ← 左侧会话语义化分区
│       VPN 连接失败                │
│ 头像  陈芳  09:42  待回复   陈    │
│       系统卡顿                    │
│ ...                              │
└─────────────────────────────────┘

4.2 切到「全部」Tab

┌─────────────────────────────────┐
│ [● 全部 10] ... [● 待处理 5]      │  ← 切到全部 Tab
│                                  │
│ --- 我的会话 ---                  │
│ 头像  张伟  10:25  待回复   张    │
│ ...                              │
│ --- 同事会话(刘明/王强/李静)--- │
│ 头像  赵敏  OA 审批流程报错 [接手]│
│ ...                              │
│ --- 历史会话 ---                  │
│ 头像  周杰  昨日  VPN 证书过期—已解决 │
└─────────────────────────────────┘

5. 不在本 PRD 范围(明确边界)

为避免范围蔓延,以下问题由后续独立 PRD 处理:

说明 后续 PRD 候选
Tab 数量徽章(待处理 5 等) v1.2 原型里有该设计,但需要 store 新增 4 个 computed 计算实时数量 #135 候选
空状态文案("暂无待处理会话") 当前复用 el-empty description="暂无会话",已能覆盖空场景 视真实使用反馈决定是否独立 PRD
持久化 Tab 选择(localStorage 当前切换刷新即回默认;若坐席希望保留,可加 1 行 localStorage 视需求反馈

6. 关联文档

文档 路径 说明
原型 v1.2(最新版) docs/01-产品文档/04-坐席工作台/原型-REQ-坐席-000-坐席工作台-v1.2.html UI 设计基准
技术方案(会话列表) docs/02-技术文档/技术架构/技术方案-REQ-坐席-002-AI辅助消息框-v1.0.md 新增 §X.Y 段(commit 时同步)
任务说明书 #134 docs/07-项目管理/任务说明书/任务说明书-134-坐席端左栏会话状态Tab顺序调整+默认显示待处理.md 落地过程记录
前端源码 src/frontend-agent/src/components/conversation/ConversationList.vue filterTags + activeFilter 2 处改动
Pinia Store src/frontend-agent/src/stores/conversation.ts myConversations / colleagueConversations / historyConversations 数据分区(未改)
Git commit 566bb46 feat(agent): 坐席端左栏会话状态 Tab 顺序调整 + 默认显示待处理 (#134) 单一原子提交

7. 变更记录

日期 变更内容 变更人
2026-08-03 创建 PRD #009,承接 #134 落地需求 宋献
2026-08-03 同步技术方案 #002 加入交叉引用 宋献