diff --git a/CLAUDE.md b/CLAUDE.md index b411c8e..bb0aacc 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -7,29 +7,24 @@ - 交互效果规范(导航跳转、Tab切换、交互注释标注) - 命名规范(小写短横线文件名、BEM 类名) - 墨刀导入兼容约束(禁止外部引用、简洁DOM、内联SVG) +- 模块文档规范(CHANGELOG、PRD、截图,详见 `项目背景.md` 第七部分) 每次生成或修改 HTML 原型文件前,必须先确认符合上述约束。 -# 模块文档规范 +# Agent 行为约束(补充项目背景.md 中未涉及的 Agent 专属规则) -每个一级功能模块目录下必须创建 `doc/` 子目录,维护以下两个文档: +## PRD 文档更新时机 -## doc/CHANGELOG.md(变更记录) +- **禁止自动更新**:修改原型页面时不得自动同步更新 PRD 文档 +- **仅在用户明确要求时**才编写、更新 PRD 或重新截取页面截图 +- PRD 的具体编写规范和截图规范见 `项目背景.md` 第 7.3 和 7.4 节 -- 记录该模块原型的所有变更,按时间倒序排列 -- 每条记录包含:变更日期、变更类型(init/feat/fix/refactor)、涉及文件列表及具体变更说明 -- **每次提交代码前,必须自动整理本次变更内容并追加到对应模块的 `doc/CHANGELOG.md` 中** +## CHANGELOG 更新时机 -## doc/PRD.md(产品需求文档) +- 每次提交代码前,自动整理本次变更内容并追加到对应模块的 `doc/CHANGELOG.md` 中 +- 格式规范见 `项目背景.md` 第 7.2 节 -- 作为该模块的产品需求说明,面向研发人员,简洁为主 -- 每次新增或修改原型页面后,必须同步更新 `doc/PRD.md` 中对应的内容 -- 文档结构要求: - - **模块概述**:简述模块功能,附页面导航结构树 + 状态流转图(Mermaid) - - **页面清单**:列出所有页面和弹窗 - - **逐页说明**:每个页面/弹窗从几个维度描述: - - 功能说明:页面用途和核心元素 - - 业务规则:数据逻辑、状态流转、约束条件 - - 交互说明:以文字列表形式描述各元素的交互行为和跳转目标,跳转目标使用中文页面名称(如"跳转到专家主页"),不使用文件名 - - 表单字段表:如若存在表单提交的页面以表格列出字段名、类型、必填、规则 -- 各个模块PRD文档生成后需要在导航页所对应的一级菜单卡片左下角加上PRD文档的跳转逻辑 +## 导航页同步 + +- 新增原型页面时,必须同步在 `index.html` 的 `SITE_MAP` 中添加对应条目 +- PRD 文档生成后需要在导航页对应的一级菜单卡片左下角加上 PRD 文档的跳转逻辑 diff --git a/emergency-app/assistant/doc/PRD.md b/emergency-app/assistant/doc/PRD.md index 531c69d..be7b76c 100644 --- a/emergency-app/assistant/doc/PRD.md +++ b/emergency-app/assistant/doc/PRD.md @@ -51,9 +51,13 @@ stateDiagram-v2 | 6 | workbench/push-expert.html | 选择专家 | 页面 | 工作台 | | 7 | knowledge/index.html | 知识库首页 | 页面 | 知识库 | | 8 | knowledge/detail.html | 知识详情 | 页面 | 知识库 | -| 9 | profile/index.html | 个人中心主页 | 页面 | 我的 | -| 10 | profile/stats.html | 咨询统计 | 页面 | 我的 | -| 11 | profile/change-pwd.html | 修改密码 | 页面 | 我的 | +| 9 | ../ai-assistant/index.html | AI 助手(共享) | 页面 | AI 助手 | +| 10 | ../message/index.html | 消息列表(共享) | 页面 | 消息 | +| 11 | ../message/contacts.html | 通讯录(共享) | 页面 | 消息 | +| 12 | ../message/im-chat.html | IM 聊天(共享) | 页面 | 消息 | +| 13 | profile/index.html | 个人中心主页 | 页面 | 我的 | +| 14 | profile/stats.html | 咨询统计 | 页面 | 我的 | +| 15 | profile/change-pwd.html | 修改密码 | 页面 | 我的 | ## 逐页说明 @@ -227,3 +231,60 @@ stateDiagram-v2 | 当前密码 | password | 是 | - | | 新密码 | password | 是 | 至少8位 | | 确认新密码 | password | 是 | 与新密码一致 | + +--- + +## 共享模块说明 + +以下模块为专家端和小助手端共用,通过 sessionStorage 的 `appRole` 标记区分当前端,动态设置底部导航栏的工作台返回目标。 + +### 12. AI 助手(../ai-assistant/index.html) + +**功能说明:** AI 智能助手,提供医学知识问答辅助。 + +**业务规则:** +- AI 回复为系统自动生成 +- 底部 Tab 导航中"工作台"按钮根据 `appRole` 动态跳转到对应端的工作台 + +**交互说明:** +- 底部输入框输入问题,AI 自动回复 +- 底部 Tab 导航切换到其他模块 + +--- + +### 13. 消息列表(../message/index.html) + +**功能说明:** 内部消息模块,展示与其他角色的消息列表。 + +**业务规则:** +- 消息列表按最新消息时间倒序排列 +- 每条消息显示联系人头像、姓名、角色标签、最后一条消息预览、时间 + +**交互说明:** +- 点击消息项跳转到 IM 聊天页 +- 点击右上角通讯录图标跳转到通讯录页 +- 底部 Tab 导航切换到其他模块 + +--- + +### 14. 通讯录(../message/contacts.html) + +**功能说明:** 展示系统内所有可联系的内部人员,支持按角色筛选和姓名搜索。 + +**业务规则:** +- 人员按角色分类展示 +- 支持搜索和角色筛选 + +**交互说明:** +- 点击联系人跳转到 IM 聊天页 +- 返回按钮跳转到消息列表 + +--- + +### 15. IM 聊天(../message/im-chat.html) + +**功能说明:** 与内部人员的即时通讯聊天界面。 + +**交互说明:** +- 底部输入框输入文字并发送 +- 返回按钮跳转到消息列表 diff --git a/emergency-app/expert/doc/PRD.md b/emergency-app/expert/doc/PRD.md index ae20bbe..2d6b4b4 100644 --- a/emergency-app/expert/doc/PRD.md +++ b/emergency-app/expert/doc/PRD.md @@ -56,19 +56,24 @@ stateDiagram-v2 | 1 | workbench/index.html | 工作台首页 | 工作台 | | 2 | workbench/text-chat.html | 图文咨询 | 工作台 | | 3 | workbench/text-consult-done.html | 咨询完成详情 | 工作台 | -| 4 | workbench/video-appt.html | 视频预约确认 | 工作台 | -| 5 | workbench/video-call.html | 视频通话 | 工作台 | -| 6 | workbench/video-done.html | 视频完成详情 | 工作台 | -| 7 | workbench/video-ongoing.html | 视频进行中 | 工作台 | -| 8 | workbench/employee-profile.html | 员工健康档案 | 工作台 | -| 9 | knowledge/index.html | 知识库首页 | 知识库 | -| 10 | knowledge/detail.html | 知识详情 | 知识库 | -| 11 | profile/index.html | 个人中心 | 我的 | -| 12 | profile/edit-profile.html | 编辑资料 | 我的 | -| 13 | profile/change-pwd.html | 修改密码 | 我的 | -| 14 | profile/schedule.html | 排班设置 | 我的 | -| 15 | profile/stats.html | 咨询统计 | 我的 | -| 16 | profile/reviews.html | 全部评价 | 我的 | +| 4 | workbench/employee-profile.html | 员工健康档案 | 工作台 | +| 5 | workbench/consult-person-detail.html | 咨询人档案详情 | 工作台 | +| 6 | workbench/video-appt.html | 视频预约确认 | 工作台 | +| 7 | workbench/video-call.html | 视频通话 | 工作台 | +| 8 | workbench/video-done.html | 视频完成详情 | 工作台 | +| 9 | workbench/video-ongoing.html | 视频进行中 | 工作台 | +| 10 | knowledge/index.html | 知识库首页 | 知识库 | +| 11 | knowledge/detail.html | 知识详情 | 知识库 | +| 12 | ../ai-assistant/index.html | AI 助手(共享) | AI 助手 | +| 13 | ../message/index.html | 消息列表(共享) | 消息 | +| 14 | ../message/contacts.html | 通讯录(共享) | 消息 | +| 15 | ../message/im-chat.html | IM 聊天(共享) | 消息 | +| 16 | profile/index.html | 个人中心 | 我的 | +| 17 | profile/edit-profile.html | 编辑资料 | 我的 | +| 18 | profile/change-pwd.html | 修改密码 | 我的 | +| 19 | profile/schedule.html | 排班设置 | 我的 | +| 20 | profile/stats.html | 咨询统计 | 我的 | +| 21 | profile/reviews.html | 全部评价 | 我的 | ## 逐页说明 @@ -127,7 +132,35 @@ stateDiagram-v2 --- -### 4. 视频预约确认(workbench/video-appt.html) +### 4. 员工健康档案(workbench/employee-profile.html) + +**功能说明:** 展示咨询员工的完整健康档案,供专家参考。 + +**业务规则:** +- 分三组展示:基本信息(姓名、性别/年龄、身高/体重)、生活习惯(吸烟、饮酒、饮食、睡眠)、身体情况(过敏史、遗传史、既往史) +- 过敏史以红色高亮标记 + +**交互说明:** +- 返回按钮跳转到图文聊天页 + +--- + +### 5. 咨询人档案详情(workbench/consult-person-detail.html) + +**功能说明:** 展示咨询人的完整档案信息,包括个人基本信息、生活习惯、身体情况以及本次咨询的健康档案(问题描述、持续时间、检查资料、期望帮助)。 + +**业务规则:** +- 头部展示咨询人头像、姓名、性别/年龄、身高/体重 +- 生活习惯以标签形式展示,绿色标签表示良好习惯,橙色标签表示需关注项 +- 身体情况以网格布局展示过敏史、遗传史、既往史、其他疾病 +- 本次咨询档案展示问题描述、持续时间标签、检查资料图片、期望帮助 + +**交互说明:** +- 返回按钮跳转到上一页(图文聊天页或咨询完成详情页) + +--- + +### 6. 视频预约确认(workbench/video-appt.html) **功能说明:** 展示员工发起的视频咨询预约详情,专家可接受或拒绝。 @@ -142,7 +175,7 @@ stateDiagram-v2 --- -### 5. 视频通话(workbench/video-call.html) +### 7. 视频通话(workbench/video-call.html) **功能说明:** 专家与员工进行视频通话的全屏界面。 @@ -157,7 +190,7 @@ stateDiagram-v2 --- -### 6. 视频完成详情(workbench/video-done.html) +### 8. 视频完成详情(workbench/video-done.html) **功能说明:** 展示已完结视频咨询的详情,包括通话时长、评分评价、健康档案。 @@ -171,7 +204,7 @@ stateDiagram-v2 --- -### 7. 视频进行中(workbench/video-ongoing.html) +### 9. 视频进行中(workbench/video-ongoing.html) **功能说明:** 已确认但尚未开始通话的视频咨询详情,提供发起通话入口。 @@ -185,20 +218,7 @@ stateDiagram-v2 --- -### 8. 员工健康档案(workbench/employee-profile.html) - -**功能说明:** 展示咨询员工的完整健康档案,供专家参考。 - -**业务规则:** -- 分三组展示:基本信息(姓名、性别/年龄、身高/体重)、生活习惯(吸烟、饮酒、饮食、睡眠)、身体情况(过敏史、遗传史、既往史) -- 过敏史以红色高亮标记 - -**交互说明:** -- 返回按钮跳转到图文聊天页 - ---- - -### 9. 知识库首页(knowledge/index.html) +### 10. 知识库首页(knowledge/index.html) **功能说明:** 专家查阅专业医学知识的参考库,按分类浏览条目列表。 @@ -212,7 +232,7 @@ stateDiagram-v2 --- -### 10. 知识详情(knowledge/detail.html) +### 11. 知识详情(knowledge/detail.html) **功能说明:** 展示单条知识的完整内容,由URL参数动态渲染。 @@ -225,7 +245,61 @@ stateDiagram-v2 --- -### 11. 个人中心(profile/index.html) +### 12. AI 助手(共享模块:../ai-assistant/index.html) + +**功能说明:** 专家端和小助手端共用的 AI 智能助手,提供医学知识问答辅助。 + +**业务规则:** +- 通过 sessionStorage 的 `appRole` 标记区分当前端,动态设置底部导航栏的工作台返回目标 +- AI 回复为系统自动生成 + +**交互说明:** +- 底部输入框输入问题,AI 自动回复 +- 底部 Tab 导航切换到其他模块 + +--- + +### 13. 消息列表(共享模块:../message/index.html) + +**功能说明:** 专家端和小助手端共用的内部消息模块,展示与其他角色的消息列表。 + +**业务规则:** +- 通过 sessionStorage 的 `appRole` 标记区分当前端 +- 消息列表按最新消息时间倒序排列 +- 每条消息显示联系人头像、姓名、角色标签、最后一条消息预览、时间 + +**交互说明:** +- 点击消息项跳转到 IM 聊天页 +- 点击右上角通讯录图标跳转到通讯录页 +- 底部 Tab 导航切换到其他模块 + +--- + +### 14. 通讯录(共享模块:../message/contacts.html) + +**功能说明:** 展示系统内所有可联系的内部人员,支持按角色筛选和姓名搜索。 + +**业务规则:** +- 人员按角色分类展示 +- 支持搜索和角色筛选 + +**交互说明:** +- 点击联系人跳转到 IM 聊天页 +- 返回按钮跳转到消息列表 + +--- + +### 15. IM 聊天(共享模块:../message/im-chat.html) + +**功能说明:** 与内部人员的即时通讯聊天界面。 + +**交互说明:** +- 底部输入框输入文字并发送 +- 返回按钮跳转到消息列表 + +--- + +### 16. 个人中心(profile/index.html) **功能说明:** 专家个人信息中心,展示基础信息及功能入口列表。 @@ -240,7 +314,7 @@ stateDiagram-v2 --- -### 12. 编辑资料(profile/edit-profile.html) +### 17. 编辑资料(profile/edit-profile.html) **功能说明:** 专家编辑个人基本资料、擅长病种和个人简介。 @@ -260,7 +334,7 @@ stateDiagram-v2 --- -### 13. 修改密码(profile/change-pwd.html) +### 18. 修改密码(profile/change-pwd.html) **功能说明:** 专家修改登录密码。 @@ -277,7 +351,7 @@ stateDiagram-v2 --- -### 14. 排班设置(profile/schedule.html) +### 19. 排班设置(profile/schedule.html) **功能说明:** 专家自主设置接诊日期和时段的接诊人数上限。 @@ -293,7 +367,7 @@ stateDiagram-v2 --- -### 15. 咨询统计(profile/stats.html) +### 20. 咨询统计(profile/stats.html) **功能说明:** 展示专家的多维度咨询数据统计。 @@ -308,7 +382,7 @@ stateDiagram-v2 --- -### 16. 全部评价(profile/reviews.html) +### 21. 全部评价(profile/reviews.html) **功能说明:** 展示员工对专家的历史评价列表。 diff --git a/employee-app/health-consult/doc/PRD.md b/employee-app/health-consult/doc/PRD.md index c7692f4..97b6c37 100644 --- a/employee-app/health-consult/doc/PRD.md +++ b/employee-app/health-consult/doc/PRD.md @@ -2,7 +2,7 @@ > **所属端**:员工端 APP > **模块路径**:`employee-app/health-consult/` -> **最后更新**:2026-04-13 +> **最后更新**:2026-04-14 --- @@ -25,7 +25,7 @@ └── [咨询小助手] → AI 小助手聊天 专家主页 -├── [图文咨询] → 咨询须知弹窗 → 图文咨询聊天 → 结束咨询确认弹窗 → 评价医生 +├── [图文咨询] → 咨询须知弹窗 → 选择咨询人 → 图文咨询聊天 → 结束咨询确认弹窗 → 评价医生 │ └── 聊天中选择档案 → 选择咨询人 → 新增健康档案 ├── [视频咨询] → 咨询须知弹窗 → 视频咨询预约 → 预约成功 └── 查看全部评价 → 用户评价列表 @@ -39,7 +39,6 @@ stateDiagram-v2 [*] --> 待确认: 提交视频咨询预约 待确认 --> 待开始: 医生确认接诊 待确认 --> 已取消: 用户取消预约 - [*] --> 待开始: 预约视频咨询 待开始 --> 进行中: 到达预约时间 待开始 --> 已取消: 用户取消预约 待开始 --> 已拒绝: 医生拒绝预约 @@ -49,43 +48,44 @@ stateDiagram-v2 ### 页面清单 -| # | 文件 | 类型 | 说明 | +| # | 文件 | 名称 | 类型 | |---|------|------|------| -| 1 | `index.html` | 页面 | 模块首页 | -| 2 | `find-expert.html` | 页面 | 找专家(搜索 + 分类) | -| 3 | `search.html` | 页面 | 综合搜索(关键字搜索专家/医院/科室/疾病) | -| 4 | `expert-list.html` | 页面 | 专家列表 | -| 4 | `expert-profile.html` | 页面 | 专家主页 | -| 5 | `expert-reviews.html` | 页面 | 用户评价列表 | -| 6 | `hospital-detail.html` | 页面 | 医院详情 | -| 7 | `my-records.html` | 页面 | 我的咨询记录 | -| 8 | `record-detail.html` | 页面 | 咨询详情 | -| 9 | `text-chat.html` | 页面 | 图文咨询聊天 | -| 10 | `assistant-chat.html` | 页面 | AI 小助手聊天 | -| 11 | `video-booking.html` | 页面 | 视频咨询预约 | -| 12 | `video-success.html` | 页面 | 预约成功 | -| 13 | `rate-doctor.html` | 页面 | 评价医生 | -| 14 | `consult-notice-dialog.html` | 弹窗 | 咨询须知 | -| 15 | `end-consult-dialog.html` | 弹窗 | 结束咨询确认 | -| 16 | `select-person-dialog.html` | 弹窗 | 选择/新增咨询人(已废弃,由 select-person.html 替代) | -| 17 | `select-report-dialog.html` | 弹窗 | 选择体检报告 | -| 18 | ~~`rate-dialog.html`~~ | — | 已删除,合并至 `rate-doctor.html` | -| 19 | `video-detail-confirming.html` | 页面 | 视频咨询详情 - 待确认 | -| 20 | `video-detail-pending.html` | 页面 | 视频咨询详情 - 待开始 | -| 20 | `video-detail-done.html` | 页面 | 视频咨询详情 - 已完成 | -| 21 | `video-detail-cancelled.html` | 页面 | 视频咨询详情 - 已取消 | -| 22 | `video-detail-rejected.html` | 页面 | 视频咨询详情 - 已拒绝 | -| 23 | `select-person.html` | 页面 | 选择咨询人(含档案列表) | -| 24 | `add-health-record.html` | 页面 | 新增健康档案 | -| 25 | `assistant-chat-history.html` | 页面 | 小助手历史对话(只读) | -| 26 | `text-chat-history.html` | 页面 | 图文咨询历史对话(只读) | +| 1 | index.html | 模块首页 | 页面 | +| 2 | find-expert.html | 找专家 | 页面 | +| 3 | search.html | 综合搜索 | 页面 | +| 4 | expert-list.html | 专家列表 | 页面 | +| 5 | hospital-detail.html | 医院详情 | 页面 | +| 6 | expert-profile.html | 专家主页 | 页面 | +| 7 | expert-reviews.html | 用户评价列表 | 页面 | +| 8 | (内嵌于 expert-profile.html) | 咨询须知弹窗 | 弹窗 | +| 9 | select-person.html | 选择咨询人 | 页面 | +| 10 | add-health-record.html | 新增健康档案 | 页面 | +| 11 | text-chat.html | 图文咨询聊天 | 页面 | +| 12 | select-report-dialog.html | 选择体检报告弹窗 | 弹窗 | +| 13 | end-consult-dialog.html | 结束咨询确认弹窗 | 弹窗 | +| 14 | text-chat-history.html | 图文咨询历史对话 | 页面 | +| 15 | video-booking.html | 视频咨询预约 | 页面 | +| 16 | video-success.html | 预约成功 | 页面 | +| 17 | video-detail-confirming.html | 视频咨询详情 - 待确认 | 页面 | +| 18 | video-detail-pending.html | 视频咨询详情 - 待开始 | 页面 | +| 19 | video-detail-done.html | 视频咨询详情 - 已完成 | 页面 | +| 20 | video-detail-cancelled.html | 视频咨询详情 - 已取消 | 页面 | +| 21 | video-detail-rejected.html | 视频咨询详情 - 已拒绝 | 页面 | +| 22 | rate-doctor.html | 评价医生 | 页面 | +| 23 | my-records.html | 我的咨询 | 页面 | +| 24 | record-detail.html | 咨询详情 | 页面 | +| 25 | assistant-chat.html | AI 小助手聊天 | 页面 | +| 26 | assistant-chat-history.html | 小助手历史对话 | 页面 | --- -## 二、页面详细说明 +## 二、入口与找专家 ### 2.1 模块首页(index.html) +![页面截图](screenshots/index.png) + + **功能说明** 模块入口页,提供三大功能快捷入口(找专家、AI 小助手、我的咨询)和推荐专家列表。专家卡片展示姓名、职称、医院科室、擅长标签、评分、咨询次数、回复率。 @@ -108,6 +108,9 @@ stateDiagram-v2 ### 2.2 找专家(find-expert.html) +![页面截图](screenshots/find-expert.png) + + **功能说明** 三维度查找专家:按医院、按科室、按疾病。顶部搜索栏点击后跳转到综合搜索页。 @@ -134,7 +137,10 @@ stateDiagram-v2 --- -### 2.2b 综合搜索(search.html) +### 2.3 综合搜索(search.html) + +![页面截图](screenshots/search.png) + **功能说明** @@ -162,8 +168,10 @@ stateDiagram-v2 - 点击"取消"返回找专家页 --- +### 2.4 专家列表(expert-list.html) + +![页面截图](screenshots/expert-list.png) -### 2.3 专家列表(expert-list.html) **功能说明** @@ -189,7 +197,35 @@ stateDiagram-v2 --- -### 2.4 专家主页(expert-profile.html) +### 2.5 医院详情(hospital-detail.html) + +![页面截图](screenshots/hospital-detail.png) + + +**功能说明** + +展示医院信息(实景图、名称、等级、地址、距离、导航按钮)、医院简介(支持展开/收起),以及本院专家列表(排序 + 搜索,逻辑同专家列表页)。底部展示用户评价区域。 + +**业务规则** + +- 导航按钮调用地图导航(原型仅模拟提示) +- 简介默认收起,超长文本截断 +- 专家列表为两列网格布局 + +**交互说明** + +- 点击导航按钮提示"正在为您导航..."(原型演示) +- 点击展开/收起按钮切换简介文本显示 +- 排序按钮切换专家列表排序方式 +- 点击专家卡片跳转到专家主页 +- 导航栏返回 → 找专家页 + +--- + +### 2.6 专家主页(expert-profile.html) + +![页面截图](screenshots/expert-profile.png) + **功能说明** @@ -198,12 +234,12 @@ stateDiagram-v2 **业务规则** - 点击任一咨询按钮,先弹出「咨询须知」弹窗,用户点击「同意并开始咨询」后才进入对应流程 -- 图文咨询确认后直接进入聊天;视频咨询确认后进入预约选时 +- 图文咨询确认后跳转到选择咨询人页;视频咨询确认后进入预约选时 - 返回按钮根据来源页精确返回(从首页进入则返回首页,从专家列表进入则返回专家列表,其他情况返回上一页) **交互说明** -- 点击「图文咨询」→ 弹出咨询须知弹窗 → 确认后跳转到图文咨询聊天页 +- 点击「图文咨询」→ 弹出咨询须知弹窗 → 确认后跳转到选择咨询人页 - 点击「视频咨询」→ 弹出咨询须知弹窗 → 确认后跳转到视频咨询预约页 - 点击「查看全部评价」跳转到用户评价列表页 - 点击分享按钮调用系统分享 @@ -211,7 +247,10 @@ stateDiagram-v2 --- -### 2.5 用户评价列表(expert-reviews.html) +### 2.7 用户评价列表(expert-reviews.html) + +![页面截图](screenshots/expert-reviews.png) + **功能说明** @@ -228,288 +267,31 @@ stateDiagram-v2 --- -### 2.6 医院详情(hospital-detail.html) +## 三、图文咨询流程 + +### 3.1 咨询须知弹窗(consult-notice-dialog.html) **功能说明** -展示医院信息(实景图、名称、等级、地址、距离、导航按钮)、医院简介(支持展开/收起),以及本院专家列表(排序 + 搜索,逻辑同专家列表页)。 +发起咨询前的告知弹窗,底部滑出样式。所有咨询入口(图文/视频)必须先展示此弹窗,用户同意后才能进入实际咨询流程。 -**业务规则** - -- 导航按钮调用地图导航(原型仅模拟提示) -- 简介默认收起,超长文本截断 +**须知内容:** +1. 本平台提供在线健康咨询服务,不替代线下就医 +2. 请如实描述症状和病史,以便医生准确判断 +3. 医生将在 24 小时内回复(图文)/ 按预约时间进行(视频) +4. 如遇紧急情况,请立即拨打 120 **交互说明** -- 点击导航按钮提示"正在为您导航..."(原型演示) -- 点击展开/收起按钮切换简介文本显示 -- 排序按钮切换专家列表排序方式 -- 点击专家卡片跳转到专家主页 -- 导航栏返回 → 找专家页 +- 点击「取消」关闭弹窗,回到专家主页 +- 点击「同意并开始咨询」:图文咨询跳转到选择咨询人页,视频咨询跳转到视频咨询预约页 +- 点击遮罩层关闭弹窗 --- +### 3.2 选择咨询人(select-person.html) -### 2.7 我的咨询(my-records.html) +![页面截图](screenshots/select-person.png) -**功能说明** - -展示用户的所有咨询记录。通过一级 Tab 栏切换「咨询专家 / 咨询小助手」两大类型: -- **咨询专家**:内嵌二级 Tab 切换「图文咨询 / 视频咨询」,记录卡片展示医生头像、姓名、科室、状态标签、咨询人、消息摘要、时间 -- **咨询小助手**:展示 AI 小助手历史咨询记录列表,卡片展示对话主题、AI 标识、状态标签、消息摘要、时间 - -**业务规则** - -- 咨询状态及对应样式:`进行中`(蓝色)、`已完成`(绿色)、`待开始`(橙色)、`待确认`(紫色)、`已取消`(灰色)、`已拒绝`(红色) -- 已完成的图文咨询如已评价则显示"已评价"标记 -- 视频咨询 `待确认` 状态显示期望时间,`待开始` 状态显示预约时间,`已完成` 显示通话时长,`已取消` 显示预约时间,`已拒绝` 显示预约时间 -- 小助手咨询仅有「进行中」和「已完成」两种状态 - -**交互说明** - -- 一级 Tab 栏切换咨询专家/咨询小助手面板 -- 咨询专家面板内二级 Tab 切换图文/视频记录列表 -- 点击专家咨询记录卡片跳转到对应咨询详情页:图文咨询跳转到咨询详情页,视频咨询根据状态跳转到对应的视频详情页(待确认/待开始/已完成/已取消/已拒绝) -- 点击小助手咨询记录卡片跳转到AI小助手聊天页 -- 导航栏返回 → 健康咨询首页 - ---- - -### 2.8 咨询详情(record-detail.html) - -**功能说明** - -展示单条咨询记录详情。包含医生信息栏、咨询信息卡片、咨询人健康档案入口、历史对话入口、医生咨询小结。根据咨询是否已评价,显示不同的UI: -- **已评价状态**:显示"我的评价"区域(5星评价)、医生咨询小结,底部按钮为"再次咨询"(蓝色边框)+ "已评价"(灰色禁用) -- **未评价状态**:隐藏"我的评价"区域,显示医生咨询小结,底部按钮为"再次咨询"(蓝色边框)+ "评价"(蓝色填充) - -**业务规则** - -- 已完成的咨询显示医生咨询小结 -- 已评价的咨询显示5星评价,"评价"按钮变为"已评价"禁用状态 -- 未评价的咨询隐藏评价区域,显示"评价"按钮 - -**交互说明** - -- 点击对话入口卡片或「再次咨询」按钮,跳转到图文咨询聊天页 -- 点击「咨询人健康档案」入口,跳转到健康档案详情页 -- 点击「评价」按钮(未评价状态),跳转到评价医生页 -- 导航栏返回 → 我的咨询记录页 - ---- - -### 2.8e 视频咨询详情 - 待确认(video-detail-confirming.html) - -**功能说明** - -视频咨询待确认状态的详情页。展示医生信息(紫色"待确认"标签)、咨询人健康档案入口、紫色视频咨询Banner(含期望时间)、预约信息卡片(咨询人、咨询类型、期望时间、提交时间、当前状态)、温馨提示。 - -**业务规则** - -- 用户提交视频咨询预约后进入待确认状态,等待医生确认接诊 -- 医生确认后状态流转为"待开始",并确定最终预约时间 -- 用户可在医生确认前取消预约 -- "等待医生确认"按钮为置灰禁用状态 - -**交互说明** - -- 点击「咨询人健康档案」跳转到咨询人档案详情页 -- 点击「取消预约」取消当前视频咨询预约 -- 导航栏返回 → 我的咨询记录页 - ---- - -### 2.8a 视频咨询详情 - 待开始(video-detail-pending.html) - -**功能说明** - -视频咨询待开始状态的详情页。展示医生信息(橙色"待开始"标签)、可展开/收起的咨询人健康档案、蓝色视频咨询Banner(含预约时间)、咨询信息卡片、温馨提示。 - -**业务规则** - -- 预约时间前15分钟系统推送提醒 -- 用户可在预约时间前取消预约 -- "等待预约时间"按钮为置灰禁用状态 - -**交互说明** - -- 点击「咨询人健康档案」展开/收起档案详情(基本信息、生活习惯、身体情况) -- 点击「取消预约」取消当前视频咨询预约 -- 导航栏返回 → 我的咨询记录页 - ---- - -### 2.8b 视频咨询详情 - 已完成(video-detail-done.html) - -**功能说明** - -视频咨询已完成状态的详情页。展示医生信息(绿色"已完成"标签)、可展开/收起的咨询人健康档案、绿色视频咨询Banner、咨询信息卡片(含视频拨打时间和通话时长)。 - -**业务规则** - -- 显示实际视频拨打时间段和通话时长 -- 未评价时显示"评价"按钮,已评价后按钮变为禁用 - -**交互说明** - -- 点击「咨询人健康档案」展开/收起档案详情 -- 点击「再次预约」跳转到视频咨询预约页 -- 点击「评价」跳转到评价医生页 -- 导航栏返回 → 我的咨询记录页 - ---- - -### 2.8c 视频咨询详情 - 已取消(video-detail-cancelled.html) - -**功能说明** - -视频咨询已取消状态的详情页。展示医生信息(灰色"已取消"标签)、可展开/收起的咨询人健康档案、灰色视频咨询Banner、咨询信息卡片(含取消时间)、取消原因区块。 - -**业务规则** - -- 取消原因由用户取消时填写或系统自动生成 -- 取消原因区块使用灰色左边框样式 - -**交互说明** - -- 点击「咨询人健康档案」展开/收起档案详情 -- 点击「再次预约」跳转到视频咨询预约页 -- 导航栏返回 → 我的咨询记录页 - ---- - -### 2.8d 视频咨询详情 - 已拒绝(video-detail-rejected.html) - -**功能说明** - -视频咨询已拒绝状态的详情页。展示医生信息(红色"已拒绝"标签)、可展开/收起的咨询人健康档案、红色视频咨询Banner、咨询信息卡片、拒绝原因区块。 - -**业务规则** - -- 拒绝原因由医生填写 -- 拒绝原因区块使用红色左边框样式 - -**交互说明** - -- 点击「咨询人健康档案」展开/收起档案详情 -- 点击「重新预约」跳转到视频咨询预约页(可选择其他时间或医生) -- 导航栏返回 → 我的咨询记录页 - ---- - -### 2.9 图文咨询聊天(text-chat.html) - -**功能说明** - -与医生的实时图文聊天界面。聊天头部展示医生头像、姓名、在线状态和「结束咨询」按钮。底部输入区含 + 按钮(展开功能面板)、消息输入框、发送按钮。功能面板提供 5 项操作:图片、拍摄、体检报告、选择档案、结束咨询。 - -**业务规则** - -- 图文咨询有效期为 24 小时 -- 消息发送后 HTML 转义防 XSS -- 结束咨询需通过二次确认弹窗 -- 本页无导航栏返回按钮,只能通过结束咨询离开 - -**交互说明** - -- 点击发送按钮或按 Enter 发送消息,追加到消息列表 -- 点击 + 按钮展开/收起功能面板 -- 功能面板点击「体检报告」打开选择体检报告弹窗 -- 功能面板点击「选择档案」打开选择咨询人弹窗 -- 点击头部「结束咨询」按钮或功能面板中的「结束咨询」,弹出结束咨询确认弹窗,确认后跳转到评价医生页 - ---- - -### 2.10 AI 小助手(assistant-chat.html) - -**功能说明** - -AI 智能问诊聊天界面。头部展示机器人头像和"健康小助手"。底部输入区含 + 按钮、消息输入框、发送按钮。功能面板提供 4 项操作:图片、拍摄、体检报告、选择档案。 - -**业务规则** - -- AI 回复为系统自动生成,不可人工干预 -- 不替代专业医生诊断,仅作初步健康咨询参考 - -**交互说明** - -- 点击发送按钮发送消息,AI 自动回复 -- 点击 + 按钮展开/收起功能面板 -- 导航栏返回 → 健康咨询首页 - ---- - -### 2.11 视频咨询预约(video-booking.html) - -**功能说明** - -视频咨询预约页面。展示医生信息卡片和预约须知提示。提供日期横向选择器(未来 6 天)和时段网格(上午 6 个 / 下午 6 个),底部确认栏显示已选时段和「立即预约」按钮。 - -**业务规则** - -- 已约满时段置灰不可选,显示"约满"标记 -- 可用时段显示剩余号源数 -- 必须同时选择日期和时段才能提交预约 -- 视频咨询不收取额外费用,如停诊将短信通知 - -**交互说明** - -- 点击日期切换选中日期,时段状态随之更新 -- 点击可用时段高亮选中,底部确认栏同步更新 -- 点击「立即预约」跳转到预约成功页 -- 导航栏返回 → 专家主页 - ---- - -### 2.12 预约成功(video-success.html) - -**功能说明** - -视频咨询预约成功结果页。展示成功图标、提示文案(提前 15 分钟推送提醒)、预约信息卡片(医生、医院、科室、类型、时间、费用),以及两个操作按钮。 - -**业务规则** - -- 无导航栏返回按钮,仅通过底部按钮离开 -- 费用信息以蓝色高亮显示 - -**交互说明** - -- 点击「查看我的咨询」跳转到我的咨询记录页 -- 点击「返回首页」跳转到健康咨询首页 - ---- - -### 2.13 评价医生(rate-doctor.html) - -**功能说明** - -咨询结束后对医生进行评价。展示医生信息和"本次咨询已结束"提示,提供星级评分和文字评价输入。 - -**业务规则** - -- 默认 5 星,可下调 -- 文字评价为选填 -- 支持匿名评价,开关默认关闭;开启后医生无法看到评价者姓名 -- 提交后跳转到我的咨询记录页 -- 返回按钮精确返回来源页(从聊天页进入则返回聊天页,其他情况返回我的咨询记录页) - -**交互说明** - -- 点击星级图标切换评分 -- 点击匿名评价开关切换匿名状态 -- 点击「提交评价」提交并跳转到我的咨询记录页 -- 导航栏返回 → 精确返回来源页 - -#### 评价表单字段 - -| 字段 | 类型 | 必填 | 规则 | -|------|------|------|------| -| 星级评分 | 星级选择(1~5) | 是 | 默认 5 星 | -| 评价内容 | 多行文本 | 否 | 无字数限制 | -| 匿名评价 | 开关 | 否 | 默认关闭,开启后隐藏评价者姓名 | - ---- - -### 2.14 选择咨询人(select-person.html) **功能说明** @@ -534,7 +316,10 @@ AI 智能问诊聊天界面。头部展示机器人头像和"健康小助手"。 --- -### 2.15 新增健康档案(add-health-record.html) +### 3.3 新增健康档案(add-health-record.html) + +![页面截图](screenshots/add-health-record.png) + **功能说明** @@ -555,7 +340,7 @@ AI 智能问诊聊天界面。头部展示机器人头像和"健康小助手"。 - 点击「保存档案」校验必填项后保存并返回选择咨询人页 - 导航栏返回 → 选择咨询人页 -#### 新增健康档案表单字段 +**表单字段表** | 字段 | 类型 | 必填 | 规则 | |------|------|------|------| @@ -571,80 +356,36 @@ AI 智能问诊聊天界面。头部展示机器人头像和"健康小助手"。 --- -## 三、弹窗说明 +### 3.4 图文咨询聊天(text-chat.html) + +![页面截图](screenshots/text-chat.png) -### 3.1 咨询须知弹窗(consult-notice-dialog.html) **功能说明** -发起咨询前的告知弹窗,底部滑出样式。所有咨询入口(图文/视频)必须先展示此弹窗,用户同意后才能进入实际咨询流程。 +与医生的实时图文聊天界面。聊天头部展示医生头像、姓名、在线状态和「结束咨询」按钮。底部输入区含 + 按钮(展开功能面板)、消息输入框、发送按钮。功能面板提供 5 项操作:图片、拍摄、体检报告、选择档案、结束咨询。 -**须知内容:** -1. 本平台提供在线健康咨询服务,不替代线下就医 -2. 请如实描述症状和病史,以便医生准确判断 -3. 医生将在 24 小时内回复(图文)/ 按预约时间进行(视频) -4. 如遇紧急情况,请立即拨打 120 +**业务规则** + +- 图文咨询有效期为 24 小时 +- 消息发送后 HTML 转义防 XSS +- 结束咨询需通过二次确认弹窗 +- 本页无导航栏返回按钮,只能通过结束咨询离开 **交互说明** -- 点击「取消」关闭弹窗,回到专家主页 -- 点击「同意并开始咨询」:图文咨询跳转到图文咨询聊天页,视频咨询跳转到视频咨询预约页 -- 点击遮罩层关闭弹窗 +- 点击发送按钮或按 Enter 发送消息,追加到消息列表 +- 点击 + 按钮展开/收起功能面板 +- 功能面板点击「体检报告」打开选择体检报告弹窗 +- 功能面板点击「选择档案」跳转到选择咨询人页 +- 点击头部「结束咨询」按钮或功能面板中的「结束咨询」,弹出结束咨询确认弹窗,确认后跳转到评价医生页 --- -### 3.2 结束咨询确认弹窗(end-consult-dialog.html) +### 3.5 选择体检报告弹窗(select-report-dialog.html) -**功能说明** +![页面截图](screenshots/select-report-dialog.png) -结束图文咨询的二次确认弹窗,底部滑出样式。提示文案:「确认结束本次咨询吗?结束后将跳转至评价页面。」 - -**交互说明** - -- 点击「继续咨询」关闭弹窗 -- 点击「确认结束」跳转到评价医生页 - ---- - -### 3.3 选择咨询人弹窗(select-person-dialog.html) - -**功能说明** - -选择已有咨询人或新增咨询人,底部全屏滑出。包含两个视图切换: - -- **列表视图**:展示已有咨询人卡片(本人 + 家属),点击选中 -- **新增表单**:录入新咨询人的基本信息、生活习惯、身体情况 - -**交互说明** - -- 点击咨询人卡片选中并关闭弹窗 -- 点击「新增咨询人」按钮切换到新增表单视图 -- 表单内点击返回按钮回到列表视图 -- 点击「保存」保存新咨询人并回到列表 -- 点击关闭按钮关闭弹窗 - -#### 新增咨询人表单字段 - -| 字段 | 类型 | 必填 | 规则 | -|------|------|------|------| -| 姓名 | 文本 | 是 | — | -| 性别 | 按钮组单选 | 是 | 男 / 女 | -| 出生日期 | 日期选择 | 是 | 不晚于当天 | -| 与本人关系 | 文本 | 是 | 如:配偶、父亲等 | -| 是否吸烟 | 按钮组单选 | 否 | 否 / 偶尔 / 是 | -| 是否饮酒 | 按钮组单选 | 否 | 否 / 偶尔 / 是 | -| 饮食喜好 | 按钮组单选 | 否 | 清淡 / 均衡 / 偏油腻 / 偏辛辣 | -| 睡眠质量 | 按钮组单选 | 否 | 良好 / 一般 / 较差 | -| 身高 | 数字(cm) | 否 | 正数 | -| 体重 | 数字(kg) | 否 | 正数 | -| 过敏史 | 文本 | 否 | 如:青霉素过敏 | -| 遗传史 | 文本 | 否 | 如:高血压家族史 | -| 既往史 | 文本 | 否 | 如:2020 年阑尾炎手术 | -| 其他疾病 | 文本 | 否 | 如:慢性胃炎 | - ---- - -### 3.4 选择体检报告弹窗(select-report-dialog.html) **功能说明** @@ -662,32 +403,26 @@ AI 智能问诊聊天界面。头部展示机器人头像和"健康小助手"。 --- -### 3.5 评价医生弹窗(rate-dialog.html)— 已删除 +### 3.6 结束咨询确认弹窗(end-consult-dialog.html) -已合并至 `rate-doctor.html`,不再单独维护。 +![页面截图](screenshots/end-consult-dialog.png) ---- - -### 2.15 小助手历史对话(assistant-chat-history.html) **功能说明** -已结束的小助手咨询的历史对话查看页面。与小助手聊天页结构一致,但为只读模式,不可继续对话。 - -**业务规则** - -- 仅展示历史消息,不提供输入功能 -- 头部显示"咨询已结束"状态文字 -- 底部显示"— 咨询已结束 —"提示条 +结束图文咨询的二次确认弹窗,底部滑出样式。提示文案:「确认结束本次咨询吗?结束后将跳转至评价页面。」 **交互说明** -- 导航栏返回 → 我的咨询记录页 -- 消息区可上下滚动浏览历史对话 +- 点击「继续咨询」关闭弹窗 +- 点击「确认结束」跳转到评价医生页 --- -### 2.16 图文咨询历史对话(text-chat-history.html) +### 3.7 图文咨询历史对话(text-chat-history.html) + +![页面截图](screenshots/text-chat-history.png) + **功能说明** @@ -703,6 +438,303 @@ AI 智能问诊聊天界面。头部展示机器人头像和"健康小助手"。 **交互说明** -- 导航栏返回 → 根据来源参数返回对应详情页(record-detail-rated / record-detail-unrated) +- 导航栏返回 → 根据来源参数返回对应咨询详情页 +- 消息区可上下滚动浏览历史对话 + +--- +## 四、视频咨询流程 + +### 4.1 视频咨询预约(video-booking.html) + +![页面截图](screenshots/video-booking.png) + + +**功能说明** + +视频咨询预约页面。展示医生信息卡片和预约须知提示。提供日期横向选择器(未来 6 天)和时段网格(上午 6 个 / 下午 6 个),底部确认栏显示已选时段和「立即预约」按钮。 + +**业务规则** + +- 已约满时段置灰不可选,显示"约满"标记 +- 可用时段显示剩余号源数 +- 必须同时选择日期和时段才能提交预约 +- 视频咨询不收取额外费用,如停诊将短信通知 + +**交互说明** + +- 点击日期切换选中日期,时段状态随之更新 +- 点击可用时段高亮选中,底部确认栏同步更新 +- 点击「立即预约」跳转到预约成功页 +- 导航栏返回 → 专家主页 + +--- + +### 4.2 预约成功(video-success.html) + +![页面截图](screenshots/video-success.png) + + +**功能说明** + +视频咨询预约成功结果页。展示成功图标、提示文案(提前 15 分钟推送提醒)、预约信息卡片(医生、医院、科室、类型、时间、费用),以及两个操作按钮。 + +**业务规则** + +- 无导航栏返回按钮,仅通过底部按钮离开 +- 费用信息以蓝色高亮显示 + +**交互说明** + +- 点击「查看我的咨询」跳转到我的咨询记录页 +- 点击「返回首页」跳转到健康咨询首页 + +--- + +### 4.3 视频咨询详情 - 待确认(video-detail-confirming.html) + +![页面截图](screenshots/video-detail-confirming.png) + + +**功能说明** + +视频咨询待确认状态的详情页。展示医生信息(紫色"待确认"标签)、咨询人健康档案入口、紫色视频咨询 Banner(含期望时间)、预约信息卡片(咨询人、咨询类型、期望时间、提交时间、当前状态)、温馨提示。 + +**业务规则** + +- 用户提交视频咨询预约后进入待确认状态,等待医生确认接诊 +- 医生确认后状态流转为"待开始",并确定最终预约时间 +- 用户可在医生确认前取消预约 +- "等待医生确认"按钮为置灰禁用状态 + +**交互说明** + +- 点击「咨询人健康档案」跳转到咨询人档案详情页 +- 点击「取消预约」取消当前视频咨询预约 +- 导航栏返回 → 我的咨询记录页 + +--- + +### 4.4 视频咨询详情 - 待开始(video-detail-pending.html) + +![页面截图](screenshots/video-detail-pending.png) + + +**功能说明** + +视频咨询待开始状态的详情页。展示医生信息(橙色"待开始"标签)、可展开/收起的咨询人健康档案、蓝色视频咨询 Banner(含预约时间)、咨询信息卡片、温馨提示。 + +**业务规则** + +- 预约时间前 15 分钟系统推送提醒 +- 用户可在预约时间前取消预约 +- "等待预约时间"按钮为置灰禁用状态 + +**交互说明** + +- 点击「咨询人健康档案」展开/收起档案详情(基本信息、生活习惯、身体情况) +- 点击「取消预约」取消当前视频咨询预约 +- 导航栏返回 → 我的咨询记录页 + +--- + +### 4.5 视频咨询详情 - 已完成(video-detail-done.html) + +![页面截图](screenshots/video-detail-done.png) + + +**功能说明** + +视频咨询已完成状态的详情页。展示医生信息(绿色"已完成"标签)、可展开/收起的咨询人健康档案、绿色视频咨询 Banner、咨询信息卡片(含视频拨打时间和通话时长)。 + +**业务规则** + +- 显示实际视频拨打时间段和通话时长 +- 未评价时显示"评价"按钮,已评价后按钮变为禁用 + +**交互说明** + +- 点击「咨询人健康档案」展开/收起档案详情 +- 点击「再次预约」跳转到视频咨询预约页 +- 点击「评价」跳转到评价医生页 +- 导航栏返回 → 我的咨询记录页 + +--- + +### 4.6 视频咨询详情 - 已取消(video-detail-cancelled.html) + +![页面截图](screenshots/video-detail-cancelled.png) + + +**功能说明** + +视频咨询已取消状态的详情页。展示医生信息(灰色"已取消"标签)、可展开/收起的咨询人健康档案、灰色视频咨询 Banner、咨询信息卡片(含取消时间)、取消原因区块。 + +**业务规则** + +- 取消原因由用户取消时填写或系统自动生成 +- 取消原因区块使用灰色左边框样式 + +**交互说明** + +- 点击「咨询人健康档案」展开/收起档案详情 +- 点击「再次预约」跳转到视频咨询预约页 +- 导航栏返回 → 我的咨询记录页 + +--- + +### 4.7 视频咨询详情 - 已拒绝(video-detail-rejected.html) + +![页面截图](screenshots/video-detail-rejected.png) + + +**功能说明** + +视频咨询已拒绝状态的详情页。展示医生信息(红色"已拒绝"标签)、可展开/收起的咨询人健康档案、红色视频咨询 Banner、咨询信息卡片、拒绝原因区块。 + +**业务规则** + +- 拒绝原因由医生填写 +- 拒绝原因区块使用红色左边框样式 + +**交互说明** + +- 点击「咨询人健康档案」展开/收起档案详情 +- 点击「重新预约」跳转到视频咨询预约页(可选择其他时间或医生) +- 导航栏返回 → 我的咨询记录页 + +--- +## 五、评价与咨询记录 + +### 5.1 评价医生(rate-doctor.html) + +![页面截图](screenshots/rate-doctor.png) + + +**功能说明** + +咨询结束后对医生进行评价。展示医生信息和"本次咨询已结束"提示,提供星级评分和文字评价输入。 + +**业务规则** + +- 默认 5 星,可下调 +- 文字评价为选填 +- 支持匿名评价,开关默认关闭;开启后医生无法看到评价者姓名 +- 提交后跳转到我的咨询记录页 +- 返回按钮精确返回来源页(从聊天页进入则返回聊天页,其他情况返回我的咨询记录页) + +**交互说明** + +- 点击星级图标切换评分 +- 点击匿名评价开关切换匿名状态 +- 点击「提交评价」提交并跳转到我的咨询记录页 +- 导航栏返回 → 精确返回来源页 + +**表单字段表** + +| 字段 | 类型 | 必填 | 规则 | +|------|------|------|------| +| 星级评分 | 星级选择(1~5) | 是 | 默认 5 星 | +| 评价内容 | 多行文本 | 否 | 无字数限制 | +| 匿名评价 | 开关 | 否 | 默认关闭,开启后隐藏评价者姓名 | + +--- + +### 5.2 我的咨询(my-records.html) + +![页面截图](screenshots/my-records.png) + + +**功能说明** + +展示用户的所有咨询记录。通过一级 Tab 栏切换「咨询专家 / 咨询小助手」两大类型: +- **咨询专家**:内嵌二级 Tab 切换「图文咨询 / 视频咨询」,记录卡片展示医生头像、姓名、科室、状态标签、咨询人、消息摘要、时间 +- **咨询小助手**:展示 AI 小助手历史咨询记录列表,卡片展示对话主题、AI 标识、状态标签、消息摘要、时间 + +**业务规则** + +- 咨询状态及对应样式:`进行中`(蓝色)、`已完成`(绿色)、`待开始`(橙色)、`待确认`(紫色)、`已取消`(灰色)、`已拒绝`(红色) +- 已完成的图文咨询如已评价则显示"已评价"标记 +- 视频咨询 `待确认` 状态显示期望时间,`待开始` 状态显示预约时间,`已完成` 显示通话时长,`已取消` 显示预约时间,`已拒绝` 显示预约时间 +- 小助手咨询仅有「进行中」和「已完成」两种状态 + +**交互说明** + +- 一级 Tab 栏切换咨询专家/咨询小助手面板 +- 咨询专家面板内二级 Tab 切换图文/视频记录列表 +- 点击图文咨询记录卡片跳转到咨询详情页 +- 点击视频咨询记录卡片根据状态跳转到对应的视频详情页(待确认/待开始/已完成/已取消/已拒绝) +- 点击小助手咨询记录卡片:进行中跳转到 AI 小助手聊天页,已完成跳转到小助手历史对话页 +- 导航栏返回 → 健康咨询首页 + +--- + +### 5.3 咨询详情(record-detail.html) + +![页面截图](screenshots/record-detail.png) + + +**功能说明** + +展示单条图文咨询记录详情。包含医生信息栏、咨询信息卡片、咨询人健康档案入口、历史对话入口、医生咨询小结。根据咨询是否已评价,显示不同的 UI: +- **已评价状态**:显示"我的评价"区域(5 星评价)、医生咨询小结,底部按钮为"再次咨询"(蓝色边框)+ "已评价"(灰色禁用) +- **未评价状态**:隐藏"我的评价"区域,显示医生咨询小结,底部按钮为"再次咨询"(蓝色边框)+ "评价"(蓝色填充) + +**业务规则** + +- 已完成的咨询显示医生咨询小结 +- 已评价的咨询显示 5 星评价,"评价"按钮变为"已评价"禁用状态 +- 未评价的咨询隐藏评价区域,显示"评价"按钮 + +**交互说明** + +- 点击对话入口卡片跳转到图文咨询历史对话页 +- 点击「再次咨询」跳转到图文咨询聊天页 +- 点击「咨询人健康档案」入口跳转到健康档案详情页 +- 点击「评价」按钮(未评价状态)跳转到评价医生页 +- 导航栏返回 → 我的咨询记录页 + +--- + +## 六、AI 小助手 + +### 6.1 AI 小助手聊天(assistant-chat.html) + +![页面截图](screenshots/assistant-chat.png) + + +**功能说明** + +AI 智能问诊聊天界面。头部展示机器人头像和"健康小助手"。底部输入区含 + 按钮、消息输入框、发送按钮。功能面板提供 4 项操作:图片、拍摄、体检报告、选择档案。 + +**业务规则** + +- AI 回复为系统自动生成,不可人工干预 +- 不替代专业医生诊断,仅作初步健康咨询参考 + +**交互说明** + +- 点击发送按钮发送消息,AI 自动回复 +- 点击 + 按钮展开/收起功能面板 +- 导航栏返回 → 健康咨询首页 + +--- + +### 6.2 小助手历史对话(assistant-chat-history.html) + +![页面截图](screenshots/assistant-chat-history.png) + + +**功能说明** + +已结束的小助手咨询的历史对话查看页面。与小助手聊天页结构一致,但为只读模式,不可继续对话。 + +**业务规则** + +- 仅展示历史消息,不提供输入功能 +- 头部显示"咨询已结束"状态文字 +- 底部显示"— 咨询已结束 —"提示条 + +**交互说明** + +- 导航栏返回 → 我的咨询记录页 - 消息区可上下滚动浏览历史对话 -- 健康档案卡片点击可跳转到咨询人档案详情页 diff --git a/employee-app/health-consult/doc/screenshots/add-health-record.png b/employee-app/health-consult/doc/screenshots/add-health-record.png new file mode 100644 index 0000000..e4c8364 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/add-health-record.png differ diff --git a/employee-app/health-consult/doc/screenshots/assistant-chat-history.png b/employee-app/health-consult/doc/screenshots/assistant-chat-history.png new file mode 100644 index 0000000..720affc Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/assistant-chat-history.png differ diff --git a/employee-app/health-consult/doc/screenshots/assistant-chat.png b/employee-app/health-consult/doc/screenshots/assistant-chat.png new file mode 100644 index 0000000..9f7ca01 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/assistant-chat.png differ diff --git a/employee-app/health-consult/doc/screenshots/end-consult-dialog.png b/employee-app/health-consult/doc/screenshots/end-consult-dialog.png new file mode 100644 index 0000000..51196db Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/end-consult-dialog.png differ diff --git a/employee-app/health-consult/doc/screenshots/expert-list.png b/employee-app/health-consult/doc/screenshots/expert-list.png new file mode 100644 index 0000000..1a71f5a Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/expert-list.png differ diff --git a/employee-app/health-consult/doc/screenshots/expert-profile.png b/employee-app/health-consult/doc/screenshots/expert-profile.png new file mode 100644 index 0000000..c058344 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/expert-profile.png differ diff --git a/employee-app/health-consult/doc/screenshots/expert-reviews.png b/employee-app/health-consult/doc/screenshots/expert-reviews.png new file mode 100644 index 0000000..ad478f9 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/expert-reviews.png differ diff --git a/employee-app/health-consult/doc/screenshots/find-expert.png b/employee-app/health-consult/doc/screenshots/find-expert.png new file mode 100644 index 0000000..2f7a8d3 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/find-expert.png differ diff --git a/employee-app/health-consult/doc/screenshots/hospital-detail.png b/employee-app/health-consult/doc/screenshots/hospital-detail.png new file mode 100644 index 0000000..a260635 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/hospital-detail.png differ diff --git a/employee-app/health-consult/doc/screenshots/index.png b/employee-app/health-consult/doc/screenshots/index.png new file mode 100644 index 0000000..c159450 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/index.png differ diff --git a/employee-app/health-consult/doc/screenshots/my-records.png b/employee-app/health-consult/doc/screenshots/my-records.png new file mode 100644 index 0000000..5c80b6a Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/my-records.png differ diff --git a/employee-app/health-consult/doc/screenshots/rate-doctor.png b/employee-app/health-consult/doc/screenshots/rate-doctor.png new file mode 100644 index 0000000..9ad42a1 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/rate-doctor.png differ diff --git a/employee-app/health-consult/doc/screenshots/record-detail.png b/employee-app/health-consult/doc/screenshots/record-detail.png new file mode 100644 index 0000000..e46a414 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/record-detail.png differ diff --git a/employee-app/health-consult/doc/screenshots/search.png b/employee-app/health-consult/doc/screenshots/search.png new file mode 100644 index 0000000..e842f60 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/search.png differ diff --git a/employee-app/health-consult/doc/screenshots/select-person.png b/employee-app/health-consult/doc/screenshots/select-person.png new file mode 100644 index 0000000..080097a Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/select-person.png differ diff --git a/employee-app/health-consult/doc/screenshots/select-report-dialog.png b/employee-app/health-consult/doc/screenshots/select-report-dialog.png new file mode 100644 index 0000000..a59feeb Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/select-report-dialog.png differ diff --git a/employee-app/health-consult/doc/screenshots/text-chat-history.png b/employee-app/health-consult/doc/screenshots/text-chat-history.png new file mode 100644 index 0000000..156446a Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/text-chat-history.png differ diff --git a/employee-app/health-consult/doc/screenshots/text-chat.png b/employee-app/health-consult/doc/screenshots/text-chat.png new file mode 100644 index 0000000..61bb9ae Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/text-chat.png differ diff --git a/employee-app/health-consult/doc/screenshots/video-booking.png b/employee-app/health-consult/doc/screenshots/video-booking.png new file mode 100644 index 0000000..22120c9 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/video-booking.png differ diff --git a/employee-app/health-consult/doc/screenshots/video-detail-cancelled.png b/employee-app/health-consult/doc/screenshots/video-detail-cancelled.png new file mode 100644 index 0000000..f330337 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/video-detail-cancelled.png differ diff --git a/employee-app/health-consult/doc/screenshots/video-detail-confirming.png b/employee-app/health-consult/doc/screenshots/video-detail-confirming.png new file mode 100644 index 0000000..161c98b Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/video-detail-confirming.png differ diff --git a/employee-app/health-consult/doc/screenshots/video-detail-done.png b/employee-app/health-consult/doc/screenshots/video-detail-done.png new file mode 100644 index 0000000..bb04bca Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/video-detail-done.png differ diff --git a/employee-app/health-consult/doc/screenshots/video-detail-pending.png b/employee-app/health-consult/doc/screenshots/video-detail-pending.png new file mode 100644 index 0000000..070e8a0 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/video-detail-pending.png differ diff --git a/employee-app/health-consult/doc/screenshots/video-detail-rejected.png b/employee-app/health-consult/doc/screenshots/video-detail-rejected.png new file mode 100644 index 0000000..44320b1 Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/video-detail-rejected.png differ diff --git a/employee-app/health-consult/doc/screenshots/video-success.png b/employee-app/health-consult/doc/screenshots/video-success.png new file mode 100644 index 0000000..8d74c9a Binary files /dev/null and b/employee-app/health-consult/doc/screenshots/video-success.png differ diff --git a/md-viewer.html b/md-viewer.html index d3584ea..4012372 100644 --- a/md-viewer.html +++ b/md-viewer.html @@ -47,6 +47,7 @@ body { font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Helvetica .content blockquote p { color: var(--text-secondary); margin: 0; } .content strong { color: var(--text-primary); } .content hr { border: none; border-top: 1px solid var(--border); margin: 24px 0; } +.content img { max-width: 375px; height: auto; border-radius: 8px; border: 1px solid var(--border); margin: 8px 0; } @@ -134,9 +135,18 @@ if (filePath) { wrap.innerHTML = ''; wrap.appendChild(iframe); } else { + /* 计算 Markdown 文件所在目录,用于重写图片相对路径 */ + const mdBase = filePath.substring(0, filePath.lastIndexOf('/') + 1); const content = document.getElementById('content'); if (typeof marked !== 'undefined') { content.innerHTML = marked.parse(md); + /* 将图片相对路径补全为基于 Markdown 文件目录的路径 */ + content.querySelectorAll('img').forEach(img => { + const src = img.getAttribute('src'); + if (src && !src.startsWith('http') && !src.startsWith('/') && !src.startsWith('data:')) { + img.src = mdBase + src; + } + }); } else { content.innerHTML = '
' + md.replace(//g,'>') + '
'; } diff --git a/web-admin/health-consult/doc/PRD.md b/web-admin/health-consult/doc/PRD.md index ccbc56b..27a2a02 100644 --- a/web-admin/health-consult/doc/PRD.md +++ b/web-admin/health-consult/doc/PRD.md @@ -378,17 +378,20 @@ stateDiagram-v2 ### 20. 咨询须知(config-notice.html) -**功能说明:** 管理员工端发起咨询时显示的须知内容,支持富文本编辑和版本发布。 +**功能说明:** 管理员工端发起咨询时显示的须知内容,按咨询类型分 Tab 独立管理(图文咨询 / 视频咨询),各自支持富文本编辑、实时预览和版本发布。 **业务规则:** +- 顶部 Tab 切换「图文咨询」和「视频咨询」两套须知内容,各自独立编辑和发布 +- 每套须知包含弹窗标题和须知正文两个编辑区 - 须知内容以富文本格式存储 -- 支持版本管理,编辑后需"发布生效" +- 支持版本管理,每套须知独立维护历史版本,编辑后需"发布生效" **交互说明:** -- 左侧预览卡片模拟移动端弹窗效果 -- 点击"编辑内容"打开富文本编辑器弹窗 -- 富文本编辑器支持加粗、斜体、下划线、列表、字号、颜色 -- 点击"发布生效"保存并发布新版本 +- 顶部 Tab 切换图文咨询/视频咨询须知编辑面板 +- 左侧编辑区:弹窗标题输入框 + 富文本编辑器(支持加粗、斜体、下划线、列表、字号、颜色) +- 右侧预览区:实时同步编辑内容,模拟移动端弹窗效果 +- 点击"历史版本"打开对应类型的历史版本弹窗,支持查看和恢复历史版本 +- 点击"发布生效"保存并发布当前类型的新版本 --- diff --git a/项目背景.md b/项目背景.md index ade4418..91a0641 100644 --- a/项目背景.md +++ b/项目背景.md @@ -368,7 +368,7 @@ window.location.href = '../health-consult/consult-list.html'; | 文件 | 用途 | 更新时机 | |------|------|----------| | `doc/CHANGELOG.md` | 变更记录 | 每次提交代码前自动整理并追加 | -| `doc/PRD.md` | 产品需求文档 | 每次新增/修改原型页面后同步更新 | +| `doc/PRD.md` | 产品需求文档 | **用户明确要求时**才编写或更新,不随原型修改自动同步 | ### 7.2 CHANGELOG.md 格式规范 @@ -383,8 +383,31 @@ window.location.href = '../health-consult/consult-list.html'; 1. **模块概述**:一句话说明模块功能 + 页面导航结构树 + 状态流转图(Mermaid) 2. **页面清单**:表格列出所有页面和弹窗 -3. **逐页说明**:每个页面/弹窗包含三个维度 +3. **逐页说明**:按业务流程顺序组织,页面与弹窗按流程穿插介绍(不分开罗列),每个页面/弹窗包含以下维度: + - **页面截图**:在标题下方紧跟截图引用(格式见 7.4) - **功能说明**:页面用途和核心 UI 元素 - **业务规则**:数据逻辑、状态约束、边界条件 - **交互说明**:以文字列表形式描述各元素的交互行为和跳转目标,跳转目标使用中文页面名称(如"跳转到专家主页"),不使用文件名 4. **表单字段表**:含表单提交的页面,以表格列出字段名、类型、是否必填、校验规则 + +### 7.4 PRD 页面截图规范 + +为提升文档可读性,PRD 中每个页面说明需附带页面截图。 + +**截图生成方式:** +- 使用 Playwright 对 HTML 原型文件进行无头浏览器截图 +- APP 端截取 `.phone-shell` 元素,视口 460×920,设备缩放 2x +- Web 端截取完整页面,视口 1440×900,设备缩放 1x +- 输出格式:PNG + +**截图存放:** +- 统一存放在模块的 `doc/screenshots/` 目录下 +- 文件名与原型 HTML 文件名一致(去掉 `.html` 后缀),如 `find-expert.png` +- 内嵌于其他页面的弹窗无需单独截图,在页面清单中标注即可 + +**PRD 中引用方式:** +- 在每个页面/弹窗的三级标题下方紧跟插入:`![页面截图](screenshots/xxx.png)` +- 使用相对路径(基于 `doc/` 目录),md-viewer.html 会自动补全为完整路径 + +**截图更新时机:** +- 与 PRD 文档同步,仅在用户明确要求更新 PRD 时重新截取