Files
wecom_it_smart_desk/docs/01-产品文档/04-坐席工作台/PRD-REQ-坐席-009-会话状态Tab筛选-v1.0.md
T
Simon facc04aa65 chore: docs 结构整改 + compose 双目录对齐(合并重建提交)
本提交为 .git 对象库损坏后的重建提交,内容等价于原先三个本地提交
(5e2fd4c2 / 57a53c98 / 5d7e1873)的累积结果,未做任何额外改动。

一、docs 结构整改(整改 #14)
根因:重构时新结构为 untracked 文件,执行 git stash(未带 -u)未纳入,
随后 git reset 拉回 HEAD 旧 tracked 树,导致旧树复活、新旧两棵目录
树并存于 docs/,共 791 文件、双分类体系冲突。

修复动作:
- b2 同名异主题文件改名迁移保全 9 个
- C 类 39 个孤立文件按主题正确归类
- A/B1 类 222 个重复文件删除(新结构已有内容副本)
- 9 个旧独有空目录删除
- 270 处内部引用按 verified 映射改写
- 整改记录 #14 登记于 04-运维文档/部署运维

结果:docs 791 → 569 文件,顶层仅规范 8 类 + 治理文件,单树恢复。
残留:约 20 处指向从未存在文件的陈旧死链,归入独立文档卫生任务。

二、compose 双目录对齐(消除踩坑 A)
- docker-compose.yml:nginx 前端挂载全部由根目录 frontend-*/dist
  改为 src/frontend-*/dist(h5 / agent / admin / terminal)
- docker-compose.dev.yml:dev 服务 build context 与卷同步改 src/
- 效果:本地 docker compose up 不再把根目录 stale dist 挂回,
  与线上一致,分叉隐患消除(已 docker compose config 校验通过)

防复发铁律:
- 重构须提交;仓库修复须 git stash -u 或先 commit
- 新结构须 git add 并提交,避免再次 untracked 复活
- H5 改动只动 src/frontend-h5/,禁改根目录遗留 frontend-*/
2026-08-07 22:31:32 +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 加入交叉引用 宋献