Appearance
PRD:群发 broadcast
一句话:三师按群组圈选对象,用文字或知识库内容群发消息,并可查看已发送记录。
0. 快速评审卡
| 项 | 内容 |
|---|---|
| 产品 | funde-im |
| 模块 | 群发 |
| 页面/功能 | 群发 |
| 路由 | /broadcast |
| 页面类型 | 聚合页 |
| 状态 | 已实现 / PRD 初版 |
| 产品负责人 | [待确认] |
| 研发负责人 | [待确认] |
| 测试负责人 | [待确认] |
| 关联原型 | funde-im/prototype/src/views/BroadcastView.vue |
| 关联 page-spec | funde-im/docs/page-specs/broadcast.page.yaml |
| 关联 mock | funde-im/prototype/src/mock/broadcast.ts |
1. 为什么做
1.1 背景
需要对一组客户发送同一条提醒时,如果走单聊输入区,容易误发且无法回溯。群发是独立一级入口:左侧选群组,右侧写内容,发送后进入已发送列表。
1.2 目标
- 业务目标:让三师在独立页面完成圈选、编辑和群发,不混入单聊
- 用户/运营目标:选群组、写文字或引用知识库,立即发送或定时发送;事后可查记录、看对象、按规则撤回
- 交付目标:跑通新建群发与已发送两个 Tab
1.3 不解决的问题
- 群发审核流
- 模板消息配置后台
- 按标签或风险圈选
- 不在单聊输入区提供群发
2. 当前交付切片
这里只写当前准备评审、开发和测试的内容。
2.1 做什么
| 能力 | 说明 | 优先级 |
|---|---|---|
| Tab 切换 | 新建群发消息、已发送 | P0 |
| 群发对象 | 左右穿梭选择群组;左侧未选、右侧已选;两侧可搜索;中间箭头把勾选的群组移到已选 | P0 |
| 内容类型 | 文字、知识库 | P0 |
| 文字编辑 | 输入区、表情、占位「输入内容」 | P0 |
| 知识库 | 展示「选择知识库」虚线框,点击后弹出分类弹窗选择图片、视频或文件并引用到发送内容 | P0 |
| 定时发送 | 勾选后必须选择发送时间;不勾选则立即发送 | P0 |
| 群发按钮 | 未选群组或无内容时禁用;勾选定时但未选时间时禁用 | P0 |
| 已发送筛选 | 发送时间起止、发送内容关键词、搜索 | P0 |
| 已发送列表 | 发送内容、发送对象、状态、发送时间、撤回 | P0 |
| 查看对象 | 发送对象列「查看」打开该次群发的群组名单 | P0 |
| 撤回 | 仅发送后短时间内可撤回,超时禁用 | P0 |
2.2 后续候选
| 候选能力 | 触发条件 |
|---|---|
| [待确认] | [待确认] |
3. 谁来用,怎么用
| 角色 | 场景 | 目标 |
|---|---|---|
| 三师 | 在左侧勾选群组,点箭头加入已选,输入文字后点群发 | 一次触达多个会话群 |
| 三师 | 切到已发送,按时间或关键词搜索,点查看看这次发给了哪些群 | 核对发送记录 |
4. 主流程与页面入口
4.1 入口与出口
| 类型 | 内容 |
|---|---|
| 从哪里进入 | 群发 |
| 可以去哪里 | 我负责 /workbench |
| 依赖数据 | 会话群组 mock、知识库分类与文件 mock |
4.2 主流程
4.3 异常场景
| 场景 | 系统表现 | 提示 |
|---|---|---|
| 未选群组或未填内容 | 群发按钮禁用 | - |
| 勾选定时发送但未选时间 | 群发按钮禁用 | - |
| 已选列表为空 | 右侧展示「暂无数据」 | - |
| 撤回超时 | 撤回按钮禁用 | - |
| 筛选无结果 | 列表为空 | - |
5. 页面结构与字段
5.1 页面区块
| 区块 | 内容 | 说明 |
|---|---|---|
| 筛选区 | 发送时间起、发送时间止、发送内容 | 支持查询和重置 |
| 顶部操作区 | 群发 | 展示页面级操作 |
| 列表区 | 主表格字段 | 展示当前查询结果 |
| 操作区 | 查看、撤回 | 展示当前可用操作 |
筛选区
| 控件 | 类型 | 说明 |
|---|---|---|
| 发送时间起 | date | 开始日期 |
| 发送时间止 | date | 结束日期 |
| 发送内容 | text | 请输入关键词 |
默认提供:查询
5.2 字段说明
| 字段 | 展示名 | 来源 | 说明 |
|---|---|---|---|
preview | 发送内容 | page-spec / mock | 列表摘要 |
recipients | 发送对象 | page-spec / mock | action |
status | 状态 | page-spec / mock | 已发送 / 已撤回 / 待发送 |
sentAt | 发送时间 | page-spec / mock | datetime |
操作说明
| 操作 | 说明 |
|---|---|
| 群发 | 页面顶部操作 |
| 查看 | 当前页面操作 |
| 撤回 | 当前页面操作 |
5.3 页面功能说明
列出本页全部功能点,含说明、跳转目标、特殊情况与业务限制。
| 功能 | 说明 | 跳转/触发 | 特殊情况 | 特殊限制 |
|---|---|---|---|---|
| 发送时间起 | 列表筛选条件 | - | - | - |
| 发送时间止 | 列表筛选条件 | - | - | - |
| 发送内容 | 列表筛选条件 | - | - | - |
| 群发 | 工具栏操作 | - | - | - |
| 查看 | 表格行内操作 | - | - | - |
| 撤回 | 表格行内操作 | - | - | - |
5.4 后续字段候选
| 字段 | 为什么暂不进入当前交付 |
|---|---|
| [待确认]、[待确认] | 进入后续字段口径确认 |
6. 业务规则
| ID | 规则 | 说明 |
|---|---|---|
| R1 | 群发不复用单聊输入区,必须走独立入口 | 当前交付切片需遵守 |
| R2 | 群发对象是会话群组,名称为客户名-医生团队 | 当前交付切片需遵守 |
| R3 | 至少选一个群组且内容非空才能发送 | 当前交付切片需遵守 |
| R4 | 定时发送必须填写不早于当前的发送时间 | 当前交付切片需遵守 |
| R5 | 已发送内容展示为 [文字] 或 [知识库] 加摘要 | 当前交付切片需遵守 |
| R6 | 撤回仅允许发送后 2 分钟内操作 | 当前交付切片需遵守 |
7. 数据、接口与权限
7.1 数据来源
| 类型 | 来源 |
|---|---|
| 产品级页面补充 | funde-im/docs/v0.1/pages/broadcast/index.md |
| Page Spec | funde-im/docs/page-specs/broadcast.page.yaml |
| 页面实现 | funde-im/prototype/src/views/BroadcastView.vue |
| Mock 数据 | funde-im/prototype/src/mock/broadcast.ts |
| source_route | /broadcast |
7.2 接口说明
| 接口 | 用途 | 备注 |
|---|---|---|
| 查询列表 | 筛选、列表和分页 | 原型阶段对应本地 mock |
| 获取详情 | 编辑入口后续使用 | 当前不展开 |
7.3 权限
| 操作 | 权限要求 | 当前处理 |
|---|---|---|
| 新建群发 | 三师登录权限 | 可选自己负责范围内的群组并发送 |
| 查看已发送 / 撤回 | 三师登录权限 | 可查看本账号发送记录;超时不可撤回 |
8. 验收标准
| 编号 | 验收项 | 预期结果 |
|---|---|---|
| AC1 | 左侧导航可进入群发,看到新建和已发送两个 Tab | 左侧导航可进入群发,看到新建和已发送两个 Tab |
| AC2 | 可搜索、勾选并穿梭群组,计数随选择变化 | 可搜索、勾选并穿梭群组,计数随选择变化 |
| AC3 | 无对象或无内容时群发按钮禁用 | 无对象或无内容时群发按钮禁用 |
| AC4 | 发送后出现在已发送列表,内容带 [文字] 或 [知识库] 前缀 | 发送后出现在已发送列表,内容带 [文字] 或 [知识库] 前缀 |
| AC5 | 可按时间和关键词搜索;可查看对象;超时撤回禁用 | 可按时间和关键词搜索;可查看对象;超时撤回禁用 |
9. 待确认问题
| 问题 | 影响 | 负责人 |
|---|---|---|
| [待确认] | [待确认] | [待确认] |
10. 变更记录
| 日期 | 变更 | 作者 |
|---|---|---|
| 2026-08-18 | 按截图实现群发新建与已发送,替换占位页 | [待确认] |