Skip to content

PRD:消息 messages-list ​

一句话:面向 C 端用户,集中展示与健管团队(健管师、医生、营养师等)的所有对话入口,并提供通知中心快速切换,是用户访问服务沟通和平台推送的统一入口。

0. 快速评审卡 ​

项内容
产品funde-client
模块消息 / 会话列表
页面/功能消息
路由/messages
页面类型列表页
状态已实现 / PRD 初版
产品负责人[待确认]
研发负责人[待确认]
测试负责人[待确认]
关联原型funde-client/prototype/src/views/messages/MessagesView.vue
关联 page-specfunde-client/docs/page-specs/messages-list.page.yaml
关联 mockfunde-client/prototype/src/mock/conversations.json

1. 为什么做 ​

1.1 背景 ​

消息列表是"三好共管"服务理念在前端的核心触点之一。用户购买富德健康管理服务后,健管团队(健康管理师、主任医师、营养师、个案管理师、心理咨询师等)会通过 IM 渠道提供持续服务,消息列表即为用户访问这些对话的汇聚页。当前原型已实现会话列表与通知中心的分段切换、团队置顶横幅、多角色会话行渲染、角标显示等核心交互。

1.2 目标 ​

  • 业务目标:提升用户与健管团队的互动率,确保用户第一时间感知未读消息,强化"7×24 在线"的服务认知
  • 用户/运营目标:进入消息 Tab 后快速找到有未读消息的会话角色,一键进入会话或切换至通知中心
  • 交付目标:当前版本跑通会话列表浏览 → 进入单个会话的主路径,以及会话列表 ↔ 通知中心的切换路径

1.3 不解决的问题 ​

  • 会话搜索:当前用户会话数量少,不超过 8 个角色,搜索价值低
  • 会话长按操作(置顶 / 删除 / 静音):原型阶段不做管理操作,保持列表简洁
  • 群组会话创建:群组会话由平台侧(funde-im)自动创建并推送,客户端不提供手动创建入口
  • 通知按类型分类筛选:当前通知数量少,平铺展示足够

2. 当前交付切片 ​

这里只写当前准备评审、开发和测试的内容。

2.1 做什么 ​

能力说明优先级
顶部导航栏标题与副标题展示标题"消息",副标题"您的健管团队 7×24 在线",传递服务在线感P0
分段选项卡切换「团队对话」和「通知中心」两个 Tab,角标实时显示未读数P0
三好共管服务群置顶横幅固定在会话列表最顶部,标注在线人数,点击进入团队群会话;视觉上使用品牌主色渐变卡片,与普通会话行区分P0
多角色会话列表按序展示全部会话(AI 健康顾问、三好共管服务群、健管师、医生、营养师、家庭服务台、个案管理师、心理咨询师),每行展示头像、姓名、角色标签、最近消息预览、时间戳和未读角标P0
重要会话高亮对标记为 important 的会话,左侧渲染主色竖条以区分优先级P1
通知列表快速预览切换到「通知中心」Tab 时展示通知行(图标 + 标题 + 内容摘要 + 时间 + 未读红点),作为通知中心页面(/notifications)的内联预览版本,点击单条通知后续规划跳转到对应目标页P1

2.2 暂不做 ​

暂不做原因后续处理
会话搜索当前用户会话数量少,不超过 8 个角色,搜索价值低后续用户量增加后再评估
会话长按操作(置顶 / 删除 / 静音)原型阶段不做管理操作,保持列表简洁[待确认]
群组会话创建群组会话由平台侧(funde-im)自动创建并推送,客户端不提供手动创建入口[待确认]
通知按类型分类筛选当前通知数量少,平铺展示足够分类筛选在通知中心独立页面实现

2.3 后续候选 ​

候选能力触发条件
会话列表支持分组折叠(按角色类型医疗组 / 健管组 / 服务组)
消息免打扰设置入口(长按会话行)[待确认]
会话列表空状态引导(新用户首次进入,提示健管师将在 24h 内主动发起会话)[待确认]

3. 谁来用,怎么用 ​

角色场景目标
C 端用户(含大量中老年用户)用户从首页 Tab Bar 点击「消息」图标,看到健管师会话行上有红色角标"2",点击进入会话快速定位到健管师的最新消息并进行回复
C 端用户用户收到系统推送的血压偏高预警,点击通知后被带入健管师会话详情,回复后点击返回,回到消息列表回到消息列表时维持 Tab 状态(「团队对话」仍激活),列表刷新最新已读状态
C 端用户用户在消息列表页看到「通知中心」Tab 上有数字角标,点击切换切换后可浏览所有未读和已读系统通知,通知角标在切换后清零

4. 主流程与页面入口 ​

4.1 入口与出口 ​

类型内容
从哪里进入底部 Tab 「消息」-> 会话列表
可以去哪里会话详情 /conversations/:id、通知中心 /notifications
依赖数据Vue Router:/messages(本页)、/conversations/:id(会话详情)、/notifications(通知中心)、Mock 数据:prototype/src/mock/conversations.json(conversations 数组 + notifications 数组)、组件:FdSegment(分段控件)、fd-avatar--{role}(角色头像)、未来:GET /api/im/conversations、GET /api/notifications、WebSocket 未读数推送

4.2 主流程 ​

4.3 异常场景 ​

场景系统表现提示
网络断开时列表展示本地缓存数据,顶部显示"当前离线,消息可能不是最新"提示条恢复连接后自动刷新
所有会话均无未读时Tab 角标不显示(或显示 0),不渲染红点,避免误导老年用户-
会话列表为空(新用户刚注册、健管团队尚未建立)展示空状态插图 + 文案"您的健管团队正在为您分配,将在 24 小时内主动联系您"-

5. 页面结构与字段 ​

5.1 页面区块 ​

区块内容说明
segment-tabsfd-segment / customFdSegment 分段控件,两个 Tab:「团队对话」(badge = totalUnread)和「通知中心」(badge = notiUnread)。 Tab 切换通过 v-model activeTab 控制下方内容区显示。
team-bannercustom / banner三好共管服务群置顶横幅,品牌主色渐变卡片(135deg #FFF7F1 → #FFEDDF,橙色边框)。 展示「三好共管 · 您的专属团队」标签(品牌色心形图标)+ 在线人数 badge + 引导文案。 固定渲染在「团队对话」Tab 最顶部,不随会话列表滚动消失。 仅在 activeTab === 'chat' 时显示。
conversation-listfd-card / list多角色会话行列表,遍历 conversations 数组。 每行结构:[accent-bar(important)] [fd-avatar--{role} 46×46 + 未读 badge] [姓名 + roleLabel 标签 + 消息预览 + 时间]。 important=true 时,左侧渲染 3px 品牌色竖条(position: absolute, left: 0)。 unread > 0 时头像右上角显示红色角标(danger 色背景)。 仅在 activeTab === 'chat' 时显示。
notification-inlinefd-card / list通知中心 Tab 的内联预览行列表,遍历 notifications 数组。 每行结构:[圆角方形图标区(iconBg + icon + iconColor)] [标题 + 未读红点 + 时间] [body 摘要] [tag badge]。 点击单条通知原型阶段静默(不跳转),后续接入精确路由。 仅在 activeTab === 'noti' 时显示。

5.3 页面功能说明 ​

列出本页全部功能点,含说明、跳转目标、特殊情况与业务限制。

功能说明跳转/触发特殊情况特殊限制
segment-tabsFdSegment 分段控件,两个 Tab:「团队对话」(badge = totalUnread)和「通知中心」(badge = notiUnread)。 Tab 切换通过 v-model activeTab 控制下方内容区显示。---
team-banner三好共管服务群置顶横幅,品牌主色渐变卡片(135deg #FFF7F1 → #FFEDDF,橙色边框)。 展示「三好共管 · 您的专属团队」标签(品牌色心形图标)+ 在线人数 badge + 引导文案。 固定渲染在「团队对话」Tab 最顶部,不随会话列表滚动消失。 仅在 activeTab === 'chat' 时显示。tap→/conversations/conv-team--
conversation-list多角色会话行列表,遍历 conversations 数组。 每行结构:[accent-bar(important)] [fd-avatar--{role} 46×46 + 未读 badge] [姓名 + roleLabel 标签 + 消息预览 + 时间]。 important=true 时,左侧渲染 3px 品牌色竖条(position: absolute, left: 0)。 unread > 0 时头像右上角显示红色角标(danger 色背景)。 仅在 activeTab === 'chat' 时显示。tap→/conversations/:id--
notification-inline通知中心 Tab 的内联预览行列表,遍历 notifications 数组。 每行结构:[圆角方形图标区(iconBg + icon + iconColor)] [标题 + 未读红点 + 时间] [body 摘要] [tag badge]。 点击单条通知原型阶段静默(不跳转),后续接入精确路由。 仅在 activeTab === 'noti' 时显示。---

5.4 后续字段候选 ​

字段为什么暂不进入当前交付
conv.pinned置顶会话由后端控制时补充
conv.onlineCount三好共管服务群在线人数由后端实时推送时补充
noti.targetRoute通知精确路由跳转接入时补充

6. 业务规则 ​

ID规则说明
R1分段 Tab「团队对话」角标 = 所有会话 unread 之和;「通知中心」角标 = 未读通知数当前交付切片需遵守
R2三好共管服务群横幅固定置顶,不受会话列表排序影响;点击进入 /conversations/conv-team当前交付切片需遵守
R3会话行按数据源顺序渲染(原型阶段不做客户端排序),important 会话显示左侧品牌色竖条当前交付切片需遵守
R4会话行最近消息预览单行截断(max-width: 220px,overflow: ellipsis),防止超长文本破坏布局当前交付切片需遵守
R5角色标签(roleLabel)与头像颜色(fd-avatar--{role})使用 design token,不硬编码颜色当前交付切片需遵守
R6切换到「通知中心」Tab 后展示的通知行为只读内联预览;完整管理页为 /notifications当前交付切片需遵守

7. 数据、接口与权限 ​

7.1 数据来源 ​

类型来源
产品级功能架构funde-client/docs/v0.1/02-feature-architecture.md
产品级信息架构funde-client/docs/v0.1/03-information-architecture.md
产品级页面清单funde-client/docs/v0.1/05-page-inventory.md
模块说明funde-client/docs/v0.1/modules/messages.md
源 PRDfunde-client/docs/v0.1/pages/messages/index.md
Page Specfunde-client/docs/page-specs/messages-list.page.yaml
页面实现funde-client/prototype/src/views/messages/MessagesView.vue
Mock 数据funde-client/prototype/src/mock/conversations.json
路由源funde-client/prototype/src/router/index.ts
应用入口funde-client/prototype/src/MobileApp.vue
source_route/messages

7.2 接口说明 ​

接口用途备注
获取会话列表返回当前用户全部 IM 会话(含未读数、最近消息)当前原型使用本地 mock conversations.json
获取通知列表返回当前用户通知列表(含未读状态)当前原型使用本地 mock conversations.json notifications 数组
WebSocket / 长轮询监听未读数变化,实时更新角标原型阶段不接入

7.3 权限 ​

操作权限要求当前处理
查看会话列表已登录 C 端用户未登录跳转登录页
进入会话详情已登录且为该会话参与方原型阶段不校验

8. 验收标准 ​

编号验收项预期结果
AC1进入页面后,「团队对话」Tab 默认激活,角标数字与各会话 unread 之和一致进入页面后,「团队对话」Tab 默认激活,角标数字与各会话 unread 之和一致
AC2三好共管服务群置顶横幅始终渲染在会话列表顶部,不被普通会话行遮盖三好共管服务群置顶横幅始终渲染在会话列表顶部,不被普通会话行遮盖
AC3各会话行正确展示头像、姓名、角色标签、消息预览(单行截断)、时间和未读角标(unread > 0 时才显示)各会话行正确展示头像、姓名、角色标签、消息预览(单行截断)、时间和未读角标(unread > 0 时才显示)
AC4important 会话行左侧渲染品牌色竖条important 会话行左侧渲染品牌色竖条
AC5点击任意会话行,正确跳转至 /conversations/:id(id 与 conv.id 一致)点击任意会话行,正确跳转至 /conversations/:id(id 与 conv.id 一致)
AC6切换到「通知中心」Tab,通知列表正确渲染,已读通知无红点,未读通知显示红点切换到「通知中心」Tab,通知列表正确渲染,已读通知无红点,未读通知显示红点
AC7大字号辅助模式下(/me/settings/accessibility 开启),正文字号不小于 18sp,会话行高度自适应大字号辅助模式下(/me/settings/accessibility 开启),正文字号不小于 18sp,会话行高度自适应

9. 待确认问题 ​

问题影响负责人
团队服务群横幅上的"N 人在线"数量是否由后端实时推送,还是固定文案影响前端轮询逻辑和展示时效性后端 IM 团队
「通知中心」Tab 上的角标逻辑是否与 /notifications 页面的已读状态联动(在通知中心页面查看后角标是否清零)影响状态同步方案产品负责人
会话行排序规则是否支持后端返回固定置顶序,还是完全由最近消息时间决定:影响 important 字段的实际作用后端 IM 团队

10. 变更记录 ​

日期变更作者
2026-06-19按需求源 PRD 模板创建Codex