# 在线接诊(兽医)— 功能需求 ## 1. 文档说明 | 项 | 说明 | | --- | --- | | 模块名称 | 在线接诊(兽医)(牧业疫病诊疗服务) | | 目标 | 为**已绑定兽医身份**的登录用户提供与牧民/用户的**即时在线问诊**能力:按条件检索本人接诊会话、查看历史消息、发送与接收多媒体消息,完成疫病相关的远程沟通 | | 使用端 | 业务后台(若依管理端);登录用户须为「畜牧医疗资源管理」中为该兽医**已分配账号**的兽医端角色用户(角色 **100**) | | 修订依据 | 同目录 `在线接诊(兽医)功能需求-草稿.md`、界面原型(`Snipaste_2026-05-20_17-34-19.jpg`、`Snipaste_2026-05-20_17-35-41.jpg`、`Snipaste_2026-05-20_17-38-33.jpg`);并关联分析 **AI 诊断(兽医、机构)** 草稿与原型 | 本文档**仅描述功能需求与业务规则**,不涉及数据库表结构、接口路径、请求体字段命名、HTTP 报文、权限标识命名及技术栈选型。 --- ## 2. 术语与业务对象 ### 2.1 接诊会话(一条会话) - 表示**某一问诊人(牧民/用户)**与**某一接诊兽医**之间的一条**持续性的在线问诊对话**容器。 - 会话由**会话 ID** 唯一标识;其下有多条**问诊消息**按时间顺序组成聊天记录。 - 业务上**接诊人**为当前绑定的兽医资源对应账号;本模块**仅展示与操作「接诊人为当前登录兽医」的会话**。 ### 2.2 问诊消息(单条) - 会话内一次发送的内容单元,类型包括:**文本、图片、视频、语音**。 - 每条消息记录发送方、接收方、发送时间、消息类型及内容(或媒体资源引用);在界面按时间轴展示,区分「问诊人侧」与「兽医侧」气泡。 ### 2.3 问诊人(需求方) - 在**移动端「在线问诊」**向该兽医发起或继续对话的用户;本模块**展示其姓名**,**不**在此维护用户档案、不代其发起新会话(新会话由移动端创建)。 ### 2.4 当前登录人(接诊兽医) - 通过「畜牧医疗资源管理」**分配账号**登录后台的**兽医本人**。 - 会话列表、消息读写范围均**自动限定为当前兽医**;不得查看或回复其他兽医的会话。 ### 2.5 问诊类型(业务区分,非本模块菜单) 为与 **AI 诊断**、专家问诊等并行能力区分,会话在业务上带有**问诊类型**标识(如:兽医在线问诊、AI 问诊、专家在线问诊等)。 **本模块仅处理「兽医在线问诊」类型**的会话;列表与详情**不出现** AI 会话或专家会话。 --- ## 3. 关联需求分析(在线接诊 / AI 诊断) 「在线接诊(兽医)」与「AI 诊断(兽医、机构)」同属**即时消息类**产品能力,界面形态相近(左侧会话列表 + 右侧对话区),但**服务对象、数据范围与业务目的不同**,须严格隔离。 ### 3.1 双模块定位对照 | 维度 | 在线接诊(兽医)(本文档) | AI 诊断(兽医、机构) | | --- | --- | --- | | 所属业务 | 牧业疫病诊疗服务 | 牧业疫病诊疗服务 | | 使用角色 | **仅兽医账号** | **兽医账号 + 机构账号**(机构人员自助使用 AI) | | 对话对象 | **真实问诊人(牧民/用户)** | **AI 助手**(无真实对方用户在线回复) | | 业务目的 | 人工远程问诊、病情沟通、处置建议 | 自助问答、知识检索、辅助分析(**非**替代兽医接诊) | | 会话来源 | 移动端「在线问诊」选兽医后发起/续聊 | 后台或移动端「AI」入口**新建会话**或打开历史 | | 列表标题语义 | 问诊人姓名 + 最后一条**双方聊天**摘要 | **问答标题** + 最后一条问答摘要 | | 右侧标题区 | **问诊人姓名** | **AI 助手** | | 列表筛选项 | 问诊人(模糊)、会话内容(模糊) | **仅**会话内容(模糊) | | 新建会话 | **无**(由移动端用户侧发起) | **有**「新增会话」 | | 问诊类型标识 | **兽医在线问诊** | **AI 问诊** | ### 3.2 界面形态对照(后台) ```mermaid flowchart TB subgraph 兽医接诊["在线接诊(兽医)"] V1[筛选: 问诊人 + 会话内容] V2[左: 接诊会话列表] V3[右: 与问诊人聊天] end subgraph AI诊断["AI 诊断(兽医、机构)"] A1[筛选: 会话内容] A2[左: 历史会话列表] A3[右: 与 AI 助手对话] A4[新增会话] end ``` 两模块**菜单独立**、**数据列表互不可见**;避免将 AI 历史会话误展示在接诊会话列表中。 ### 3.3 与移动端协同对照 | 端 | 在线接诊相关 | AI 诊断相关 | | --- | --- | --- | | 移动端-在线问诊 | 兽医列表 → 兽医资料 → **在线问诊**聊天;**曾问诊过则进入原会话,否则新建会话**(原型说明) | — | | 移动端-消息 Tab | 展示与**各兽医**的会话列表(兽医名称、摘要、日期) | — | | 移动端-AI Tab | — | 历史 AI 会话列表;**+ 创建会话**;快捷入口(养殖技巧、疾病诊疗、用药指导、设备操作等) | 牧民侧「在线问诊」产生的消息,在兽医后台「在线接诊」中可见;牧民侧不直接出现在兽医后台的 AI 诊断列表中。 ### 3.4 与「我的预约(兽医)」的关系 | 关系 | 说明 | | --- | --- | | **业务并行** | 「我的预约」管理**预约单**(待确认/已确认等);「在线接诊」管理**即时对话**,二者职责不同 | | **本期不绑定预约** | **不校验**预约单状态;牧民**无需**先有「已确认」等预约即可发起或继续在线问诊;聊天模块**不读取、不拦截**预约状态(见 **§5.3**) | | **状态独立** | 发送聊天消息**不自动**变更预约单状态;预约「已完成」由整体业务规则置位,与聊天模块解耦 | | **数据隔离** | 预约列表与接诊会话列表**无交叉查询** | ### 3.5 机构侧说明(关联 AI 诊断) - **机构账号**可使用 **AI 诊断** 进行自助问答;**不使用**「在线接诊(兽医)」菜单(该菜单仅兽医角色)。 - 若机构人员需与牧民在线沟通,属其他业务(本期不在本文档范围)。 - 兽医与机构共用 AI 诊断模块时,各自仅能看到**本人作为提问人**的 AI 历史会话。 ### 3.6 数据与权限隔离(业务层约定) - 接诊会话:`接诊人` = 当前登录兽医;`问诊类型` = 兽医在线问诊。 - AI 会话:`提问人` = 当前登录用户;`问诊类型` = AI。 - 同一用户可能既是兽医(接诊他人)又是 AI 提问者(自问 AI),两类会话**分表分列表**,不得合并展示。 --- ## 4. 会话与消息规则 ### 4.1 会话范围与时间窗 | 项 | 规则 | | --- | --- | | 数据范围 | **仅**当前登录兽医作为**接诊人**的会话 | | 默认列表时间窗 | 左侧列表**默认仅展示**「最后一条消息时间」落在**最近 3 个月**内的会话(含起止日当天;起算时点须稳定) | | 超窗会话检索 | 最后消息早于 3 个月的会话**默认不出现**;兽医填写**问诊人**或**会话内容**并点击**搜索**后,**可检索并打开**命中会话(可搜但不默认列出) | | 排序 | 按**最后一条消息时间倒序**(最近活跃在前) | | 会话唯一性 | 同一「问诊人 + 接诊兽医」在业务上对应**一条持续会话**(移动端续聊进入原会话;不鼓励后台重复建多条并行会话) | ### 4.1.1 会话删除/结束(兽医侧展示) | 项 | 规则 | | --- | --- | | 牧民侧删除 | 牧民在移动端「消息」Tab **删除**某条与兽医的会话后,该会话在**兽医后台接诊列表中不再展示**,兽医**不可**再查看或回复(视为对该兽医侧不可见) | | 兽医侧操作 | 兽医后台**不提供**「删除会话」「结束会话」等按钮;**不展示**已删除/已结束的会话条目 | | 历史消息 | 对已不可见会话,本期**不提供**兽医侧恢复入口 | ### 4.2 消息类型与展示 | 类型 | 发送方 | 展示要求 | | --- | --- | --- | | **文本** | 问诊人 / 兽医 | 气泡内展示全文;过长可换行 | | **图片** | 双方 | 缩略图展示;可点击查看大图(若平台统一支持预览) | | **视频** | 双方 | 展示视频消息占位/封面;可点击播放(若平台支持) | | **语音** | 双方 | 展示语音条及时长;可点击播放 | 兽医后台须能**接收**问诊人发来的各类型消息,并能**发送**各类型消息回复。 **视频、语音(本期约定)** - **视频**、**语音**均采用**上传文件**方式发送(选择本地文件后上传),**不提供**实时音视频通话(RTC)、**不提供**后台内嵌录音/录像控件(与「仅上传文件」一致;图标入口仍为选文件)。 - **图片**、**文本**规则不变。 ### 4.3 消息同步与时效 | 项 | 规则 | | --- | --- | | 同步要求 | **近实时**:问诊人发送或兽医发送成功后,对方界面须在 **1 秒内** 看到新消息(含左侧列表摘要更新) | | 实现取向 | 宜采用推送/长连接等机制;纯手动刷新**不满足**本需求 | | 展示 | 聊天记录区按**日期分组**(如「3月30日」)及**时刻**(如「16:11」)展示,与原型一致 | | 兽医发送成功 | 消息立即出现在当前会话兽医侧;同步至问诊人后亦须满足 1 秒内可见 | --- ## 5. 功能范围 ### 5.1 本期实现 | 能力 | 说明 | | --- | --- | | 即时聊天布局 | 左列表 + 右对话区;**§6** | | 接诊会话列表 | 筛选、默认 3 个月、排序;**§6.1** | | 查看会话消息 | 选中会话加载全部历史消息;**§6.2** | | 发送消息 | 文本、图片;视频/语音为**文件上传**;**§6.3** | | 近实时同步 | 双向消息 **≤ 1 秒** 可见;**§4.3** | | 超窗搜索 | 默认 3 个月列表;**搜索**可查更早会话;**§6.1** | | 工具栏 | 列表区 **搜索**、**重置** | ### 5.2 本期不实现 | 项 | 说明 | | --- | --- | | 兽医后台「新建接诊会话」 | 会话由移动端用户发起;与 AI 诊断的「新增会话」不同 | | 会话转接、多人会诊、@提醒 | 原型未要求 | | 消息撤回、已读回执、输入中状态 | 除非平台统一 IM 规范另立,本期不做 | | 将 AI 诊断结果一键插入接诊聊天 | 可单独立项;本期不做 | | 机构端在线接诊、专家在线接诊后台 | 仅兽医本文档;专家/机构另模块 | | 导出聊天记录、敏感词审核配置 | 未要求 | | 视频/语音实时通话(RTC) | 不支持 | | 后台内嵌录音/录像发送 | 不支持;语音/视频仅**上传文件**(见 **§5.3**) | | 兽医侧删除/结束会话 | 不提供;牧民删除后会话对兽医**不展示** | ### 5.3 本期产品确认项(已确认) | # | 确认项 | 本期约定 | | --- | --- | --- | | 1 | 消息时效 | **须近实时**;对方可见新消息的延迟 **≤ 1 秒** | | 2 | 3 个月窗外历史 | **可搜但不默认列出**:默认列表仅最近 3 个月;**搜索**可命中更早会话并打开 | | 3 | 与预约关系 | **暂不绑定**预约状态;不校验是否已预约/已确认 | | 4 | 视频/语音发送方式 | **仅上传文件**;不做 RTC、不做后台内嵌录播 | | 5 | 会话删除/结束 | 牧民删除后,兽医侧列表**不展示**该会话;兽医侧**无**删除/结束操作 | --- ## 6. 详细功能需求 ### 6.1 接诊会话列表(左侧) | 项 | 规则 | | --- | --- | | 标题 | 「接诊会话」(与原型一致) | | 数据范围 | **仅**当前兽医的兽医在线问诊会话;**排除**牧民已删除且对兽医不可见的会话(**§4.1.1**) | | 时间范围 | **默认**仅最近 3 个月内有最后消息的会话;**搜索**时可查更早会话(**§4.1**、**§5.3**) | **筛选条件** | 筛选项 | 规则 | | --- | --- | | 问诊人 | 选填;对**问诊人姓名** **模糊**匹配;**不受**默认 3 个月限制(搜索时全量匹配) | | 会话内容 | 选填;对会话内消息**文本内容**(及可检索的标题/摘要字段)**模糊**匹配;**不受**默认 3 个月限制 | | 工具栏 | **搜索**(触发后按条件查询,可含超 3 个月会话)、**重置**(恢复默认列表,仅 3 个月) | | 默认进入 | 未点击搜索或已重置时,列表**仅**展示最近 3 个月会话 | **列表项展示(与原型一致)** | 元素 | 说明 | | --- | --- | | 头像 | 问诊人头像占位或默认图 | | 问诊人姓名 | — | | 最后一条内容 | 展示该会话**最新一条消息**的摘要(文本截断;非文本类型可用固定文案如「[图片]」「[语音]」「[视频]」) | | 问诊日期 | 以**最后消息日期**展示,格式如「M月D日」(如 3月30日) | | 选中态 | 选中某条后高亮,右侧加载该会话 | **空列表** - 无会话时展示友好提示(如「暂无接诊会话」)。 --- ### 6.2 会话详情与聊天记录(右侧) | 项 | 规则 | | --- | --- | | 入口 | 点击左侧某条接诊会话 | | 顶部标题 | 展示当前会话的**问诊人姓名**(与左侧一致) | | 聊天区 | 展示该会话**全部**历史消息(**不受**列表默认 3 个月限制;分页加载以实现为准,须能看全历史) | | 气泡布局 | 问诊人消息在**一侧**(如左),兽医消息在**另一侧**(如右);带头像占位 | | 未选会话 | 右侧可为空状态提示(如「请选择接诊会话」) | **只读约束** - 历史消息**不可编辑、不可删除**(除非平台统一 IM 规范另定管理员能力,本期兽医侧不做)。 --- ### 6.3 发送消息(右侧输入区) | 项 | 规则 | | --- | --- | | 文本输入 | 多行文本框;支持输入病情回复、指导建议等 | | 图片 | 选择本地图片文件上传并发送 | | 语音 | 选择本地**语音文件**上传并发送(**非**后台内嵌录音) | | 视频 | 选择本地**视频文件**上传并发送(**非**后台内嵌录像);须**可接收并展示**问诊人上传的视频消息 | | 发送按钮 | 「发送」;文本须非空;图片/音视频须已选文件 | | 发送成功 | 消息近实时出现在聊天区(**§4.3**);更新左侧列表摘要与时间 | **发送身份** - 消息发送方均为**当前登录兽医**;接收方为该会话的**问诊人**。 **失败处理** - 发送失败须提示原因(网络、文件过大、格式不支持等),消息**不**虚假展示为已成功。 --- ### 6.4 与 AI 诊断的互斥说明(产品层) | 场景 | 在线接诊(兽医) | AI 诊断 | | --- | --- | --- | | 兽医想查历史与牧民聊天 | 使用本模块 | 不使用 | | 兽医想用 AI 查养殖/疾病知识 | 不使用 | 使用 AI 诊断 | | 机构人员问 AI | 无菜单 | 使用 AI 诊断 | 两模块**不得**共用同一左侧列表或会话 ID 空间。 --- ## 7. 业务流程 ### 7.1 兽医后台使用流程 ```mermaid flowchart TD A[兽医登录后台] --> B[进入在线接诊兽医] B --> C[可选: 问诊人/会话内容筛选] C --> D[搜索/重置] D --> E[左侧接诊会话列表] E --> F{选择会话?} F -->|是| G[右侧展示问诊人姓名与历史消息] G --> H[输入文本或选择图片/语音/视频] H --> I[点击发送] I --> J[消息入列并更新列表摘要] J --> G F -->|否| E ``` ### 7.2 与移动端协同(牧民发起/续聊) ```mermaid sequenceDiagram participant 牧民 participant 移动端 participant 兽医后台 牧民->>移动端: 在线问诊-选择兽医 alt 曾与该兽医问诊过 移动端->>移动端: 进入原会话 else 首次 移动端->>移动端: 创建新会话 end 牧民->>移动端: 发送文本/图片/视频/语音(文件) 移动端-->>兽医后台: 近实时同步(≤1秒) 兽医后台->>兽医后台: 接诊会话列表可见更新 兽医后台->>兽医后台: 回复消息(文件上传) 兽医后台-->>移动端: 近实时同步(≤1秒) 牧民->>移动端: 查看兽医回复 opt 牧民删除会话 移动端->>移动端: 会话对兽医不可见 Note over 兽医后台: 列表不展示该会话 ``` **要点:** 1. 会话**由移动端创建或续接**,兽医后台**不创建**新接诊会话。 2. 双方消息**双向同步**;兽医仅回复**属于自己**的会话。 3. 与 **AI 诊断** 无自动串联;牧民在 AI 中的提问**不会**出现在兽医接诊列表。 ### 7.3 与 AI 诊断流程的并行关系 ```mermaid flowchart LR subgraph 牧民侧 M1[在线问诊选兽医] M2[AI Tab 问 AI] end subgraph 兽医后台 V[在线接诊] A[AI 诊断] end M1 --> V M2 -.->|不经由兽医后台| AI移动端 兽医本人 --> V 兽医本人 --> A ``` --- ## 8. 业务数据要素(逻辑层,非表结构) 实施时需持久化以下**业务信息**(字段命名与存储方式由技术方案定义): | 逻辑对象 | 要点 | | --- | --- | | 会话 | 会话 ID;问诊人标识、问诊人姓名;接诊人标识、接诊人姓名;问诊类型(**兽医在线问诊**);问题标题(可选,首问摘要或会话标题);最后消息时间 | | 消息 | 所属会话 ID;发送方/接收方标识与姓名;消息类型(文本/图片/视频/语音);内容或媒体资源引用;发送时间 | **与 AI 诊断存储的差异:** AI 会话的问诊类型为 **AI**,提问人为**当前登录用户本人**,无「接诊人-问诊人」双方真人对话结构。 --- ## 9. 提示约定(示例) | 场景 | 示例文案 | | --- | --- | | 搜索无结果 | 未找到匹配的接诊会话 | | 默认列表 | 仅展示最近 3 个月会话;更早记录请使用搜索 | | 空列表 | 暂无接诊会话 | | 未选会话 | 请选择接诊会话 | | 发送失败 | 发送失败,请重试 | | 文本为空 | 请输入消息内容 | | 文件限制 | 图片/视频/语音不符合要求时的具体提示(大小、格式以实现为准) | | 无权限 | 无权查看该会话 | | 非本兽医会话 | 无权查看该会话 / 会话不存在 | --- ## 10. 非功能建议(业务侧) - 会话与消息查询须限定**当前兽医**,防止越权查看他兽医的问诊记录。 - **消息投递**:端到端可见延迟 **≤ 1 秒**(**§5.3**);验收时须在双端同时在线场景下抽检。 - 图片、视频、语音上传须符合平台**文件大小与格式**统一规范。 - 列表与聊天的时间、日期展示格式与移动端、AI 诊断模块**保持一致**。 - 界面支持 **i18n**(汉语 + 藏文)。 - 消息量大时聊天区宜支持**滚动加载**或分页,避免一次加载过慢;左侧列表仍按最后消息时间排序。 - 高敏感场景下可考虑操作审计(查看会话、发送消息),与平台统一要求一致。 --- ## 11. 修订记录 | 版本 | 说明 | | --- | --- | | 1.0 | 依据草稿与原型整理;补充与 AI 诊断(兽医、机构)关联分析;明确与我的预约、移动端在线问诊协同;剔除技术栈与接口表述;定义消息类型与会话隔离规则 | | 1.1 | 纳入产品确认:近实时≤1秒;超3个月可搜不默认列出;不绑定预约;音视频仅上传文件;牧民删除后会话兽医侧不展示 |