# 健康管家 — 需求规格文档 V2

> 基于原始需求文档，经多轮讨论后重新整理。本文档覆盖全部功能，不做分期，一次性设计完整。

---

## 一、产品概述

### 1.1 产品定位

面向心脏术后康复患者的私人 AI 健康管家。以对话为核心交互方式（参考蚂蚁阿福），患者通过自然语言记录健康数据、获取饮食运动建议、管理用药、解读报告。配合公司自有医疗硬件（后期接入），实现居家自检。每月享有 2-3 次与签约医生的真人问诊机会。

### 1.2 用户角色

- **患者**：心脏术后康复患者（如冠心病 PCI 术后），年龄偏大，手机操作能力参差不齐
- **医生**：公司签约的私人医生团队，通过 Web 后台管理患者、审阅报告、在线问诊

### 1.3 核心设计理念

**"对话即入口，对话即服务"** —— 用户打开 App 看到的是一个对话框。所有功能通过对话完成，AI 理解用户意图并执行。

### 1.4 商业模式

硬件 + App + 医生服务打包付费。患者购买产品 → 下载 App → 手机号登录 → 开始使用。

---

## 二、患者获取流程

患者自行购买产品 → 下载 App → 手机号验证码登录（登录即注册）→ 进入首页 → AI 主动问候 → 通过对话逐步完善健康档案。

```
购买产品 → 下载App → 手机号登录 → AI问候 → 对话建档
```

---

## 三、登录与认证

### 3.1 登录方式

- **手机号 + 短信验证码登录**（登录即注册，无单独注册流程）
- 微信登录（后期加，首次需绑定手机号）
- Apple ID 登录（后期加，首次需绑定手机号）
- 登录前必须勾选同意《服务协议》《隐私协议》

### 3.2 登录状态

- 登录一次后长期有效，用户日常打开 App 直接进首页
- 仅在 token 全部过期后才需要重新登录

### 3.3 业务规则

- 开发阶段验证码任意 6 位数字通过；生产环境对接短信服务商（待定）
- 不强制填昵称，登录后去个人中心自行修改
- 不加入脸/指纹解锁和实名认证

---

## 四、首页

### 4.1 整体布局

```
┌──────────────────────────────────┐
│  左上角头像 → 侧滑抽屉            │
│                                  │
│  任务卡片区（可折叠）              │  ← 有任务才显示对应卡片
│  - AI 主动问候（带数据）          │
│  - 用药提醒卡片                   │
│  - 健康打卡进度                   │
│  - 今日数据摘要                   │
│  - 异常指标警告                   │
│  - 复查/随访提醒                  │
│                                  │
│  对话流                           │  ← 跟 AI 的聊天内容
│                                  │
├──────────────────────────────────┤
│  智能体栏（横向滑动胶囊按钮）      │
│  [AI问诊] [记数据] [拍饮食]      │
│  [药管家] [看报告] [运动计划]    │
├──────────────────────────────────┤
│  [📎] [输入框...（系统键盘语音转文字）] [📤] │
└──────────────────────────────────┘
```

### 4.2 AI 问候

- 每次打开 App 自动进入新对话
- AI 根据时间段主动问候，仅当健康数据存在异常时附带提醒
- 异常示例："早上好！昨天心率 105，有点偏高，注意休息哦"
- 无异常时纯问候："早上好！今天有什么可以帮您的？"
- 用药、运动、打卡等日常提醒由任务卡片区负责，不在问候语中出现

**首次使用**：
- 新用户（零数据、档案全空）首次打开 App
- AI 问候后主动引导建档："我是你的AI健康管家，为了更好地帮助你，我们先来完善一下你的健康档案吧？"
- 不强制，用户可跳过，但 AI 会在后续对话中适时提醒
- 侧滑抽屉健康概览各指标显示"--"

### 4.3 任务卡片区

**显示规则：**
- 有相关任务时才显示对应卡片，无任务时不占空间
- 用户向上滑动对话流时卡片区自动折叠
- 有新任务提醒时卡片区自动展开
- 用户可手动点击箭头折叠/展开
- 默认展开
- 多卡片时按行排列

**卡片交互规则：**
- 每张卡片为一行，左侧显示任务内容，右侧配有操作按钮
- 每张卡片同时是该功能模块的快捷入口，点击卡片可进入对应管理界面
- √ 按钮为快捷打卡：点击效果等同于进入管理界面完成打卡

**卡片类型：**

| 卡片 | 触发条件 | 显示内容 | 交互 |
|------|---------|---------|------|
| 用药提醒 | 到服药时间 | "💊 计划 8:00 吃 阿司匹林 100mg" | 右侧 [✓] 按钮，点击即打卡；超时未打卡卡片变红 |
| 运动打卡 | 今日有运动计划未完成 | "🏃 今日待运动：跑步 30 分钟" | 右侧 [✓] 按钮，点击即完成；超期未完成卡片变红 |
| 指标测量 | 今日有指标未测量 | "🩺 今日待测量：血压" | 点击进入记数据界面，不设 ✓ 打卡 |
| 异常警告 | 健康数据超出正常范围 | "⚠️ 昨日心率 105，偏高" | 点击进入该指标趋势页 |
| 数据摘要 | 今日已有健康记录 | "今日已记录：血压 128/82、心率 72" | 点击进入健康数据详情 |
| 复查提醒 | 未来 3 天内有复查安排 | "📋 后天 15:00 心内科复查" | 点击进入复查详情 |

### 4.4 对话流

- 用户和 AI 的聊天记录，新消息出现在底部
- 支持多种消息类型：文本气泡、数据确认卡片、饮食记录卡片、报告解读卡片、用药确认卡片、图片
- 每次打开 App 自动进入新对话
- 对话记录保留 30 天
- 历史对话可通过侧滑抽屉中的对话列表回看、继续聊、删除

### 4.5 无传统底部 Tab Bar

底部黄金位置留给 AI 输入框。功能入口全部上移到智能体栏和侧滑抽屉。

---

## 五、智能体系统

### 5.1 交互模式

- 智能体栏横向滑动，6 个胶囊按钮
- **点击胶囊** → 胶囊高亮变色 → 从底部弹出该智能体的功能面板 → 对话上下文切换至该智能体
- **再次点击同一胶囊** → 面板收起 → 胶囊恢复默认 → 回到默认对话
- 所有智能体均支持 **AI 对话 + 手动操作双通道**

### 5.2 AI 问诊

**入口**：点击 [AI问诊] 胶囊

**面板内容**：[找医生] 按钮

**AI 对话流程**：
1. AI 先查看患者全部信息（病史、用药、近期数据）
2. AI 多轮阶段化追问，每步给出快捷选项
3. AI 给出初步分析 + 建议：
   - 日常问题 → AI 直接回答
   - 轻微症状 → AI 追问 + 给出建议
   - 紧急情况（胸痛、呼吸困难等）→ 建议立即就医
   - 用户主动要求 → 转医生

**转医生流程**：
1. 用户点 [找医生] → 显示可选医生列表（公司签约的 3-4 名不同科室医生）
2. 选择医生 → 查看本月剩余次数 → 确认
3. 先与医生的 AI 分身对话（医生有空时在 Web 后台查看并回复）
4. 医生在 Web 后台可实时看到 AI 与患者的对话内容
5. 对话结束 → 扣除本月 1 次机会

**医生 AI 分身**：
- 每个医生有自己的 AI 分身（形象、口吻不同）
- AI 回复末尾标注"以上为 AI 分析，具体请咨询 X 主任"
- 以下情况建议转真人：胸痛、呼吸困难、心悸；血压持续 >160/100；心率异常；用户明确要求

### 5.3 记数据

**入口**：点击 [记数据] 胶囊

**面板内容**：[手动录入血压] [手动录入血糖] [手动录入心率] [手动录入血氧] [手动录入体重]

**支持指标**：血压（收缩压+舒张压）、心率、血糖、血氧、体重

**AI 对话录入**：
- 用户说"血压 135/85" → AI 解析指标+数值→填入对应页面→回复确认卡片
- 用户说"120"（缺指标）→ AI 追问"是收缩压还是血糖？"
- 用户说"早上血压 135/85"（缺时间）→ 取当前时间，告知用户

**录入来源标记**：记录列表中标注是否"设备自动同步"，AI 对话录入和手动录入不区分来源

**异常提醒**：数值超出正常范围时，AI 在确认卡片中附带提醒

**正常值参考范围**（医生可为具体患者调整）：

| 指标 | 正常范围 | 偏高警戒 | 偏低警戒 |
|------|---------|---------|---------|
| 收缩压 | 90-139 mmHg | ≥140 | ≤89 |
| 舒张压 | 60-89 mmHg | ≥90 | ≤59 |
| 心率 | 60-100 次/分 | ≥101 | ≤59 |
| 空腹血糖 | 3.9-6.1 mmol/L | ≥7.0 | ≤3.8 |
| 血氧 | 95-100% | — | ≤94 |
| 体重 | BMI 18.5-24 | 个体化 | 个体化 |

### 5.4 拍饮食

**入口**：点击 [拍饮食] 胶囊

**面板内容**：[拍照] [上传照片]（支持多张）

**VLM 识别**：使用千问 VL 模型

**流程**：
1. 用户拍照或从相册选图（支持多张，多张识别更准）
2. 显示照片 + "正在分析食物..."
3. VLM 识别食物种类、估算份量
4. 面板展示识别结果（食物列表，每项可编辑/删除/新增）
5. 用户确认无误后点 [确定]
6. AI 基于最终确认的食物数据生成评价：总热量、健康评分、单项警告、整体饮食建议
7. AI 追问餐次：[早餐] [午餐] [晚餐] [加餐]，未选择时 AI 根据时间推断
8. [确认保存] [取消]

**编辑规则**：用户修改食物数据后，AI 基于最新结果重新生成评价

**"能不能吃"判断依据**：疾病诊断、过敏信息、药物相克、医生饮食建议、近期健康指标

**编辑界面**：
- 识别结果直接在面板中展示，每条食物独立一行
- 每项可修改：食物名（文本输入）、份量（文本输入）
- 支持删除任意食物条目
- 支持手动添加新食物条目
- 修改后热量自动重算
- 对话修正作为补充：对 AI 说"我只吃了半碗" → AI 自动更新记录

**识别失败处理**：
- 手动修正识别结果
- 补充文字描述
- 放弃识别，完全自己填写
- 超过 15 秒提示"分析超时，请重试"
- 一顿饭最多识别 8 种食物

### 5.5 药管家

**入口**：点击 [药管家] 胶囊

**面板内容**：[用药管理] [用药提醒]

**用药计划来源**：
1. 医生处方（拍照上传 → AI 解析 → 生成计划 → 患者确认）
2. AI 对话录入（用户说"我每天早上吃阿司匹林 100mg" → AI 解析 → 展示确认卡片）
3. 手动表单录入（点 [用药管理] → 填写药品名/剂量/时间）

**AI 对话示例**：
```
用户: "医生让我吃阿托伐他汀 20mg，从今天开始，每日一次，晚饭后吃"
AI: "晚饭后具体是几点吃呢？"
用户: "8点"
AI: "收到！已创建用药计划：
     💊 阿托伐他汀 20mg  每天 20:00
     需要调整吗？"
     [确认] [修改时间] [改剂量]
```

**时间转换规则**：用户使用模糊时间描述（早饭后/晚饭后等）时，AI 必须追问具体时间点，不做默认映射。

**服药提醒**：
- 到预设时间 → 推送通知 → 点通知进 App → 确认卡片
- [我已服用] → 记录打卡 → AI:"真棒！已记录 ✅"
- [晚点提醒] → 15 分钟后再推 → 30 分钟仍未确认 → 标记"漏服"
- 漏服后 1 小时再提醒一次

**暂不做**：拍药盒识别、药物库存管理、药物相互作用检查

### 5.6 看报告

**入口**：点击 [看报告] 胶囊 → 直接调起相机 / 文件选择器

**支持格式**：拍照、从相册选图、PDF 文件

**解读范围**：数值类报告（血常规、生化全项等）AI 可提取指标并预解读；图像类报告（彩超、CT、心电图等）AI 可能无法准确解读，标注"需医生人工审阅"

**AI 预解读流程**：
1. 上传完成后显示进度：
   - ① 🔍 扫描报告图片... ✓
   - ② 🏷️ 识别报告类型 ✓
   - ③ 📊 提取关键指标... ✓
   - ④ 📝 生成解读报告... ✓
2. AI 预解读结果展示：
   - 提取所有指标及其数值
   - 异常指标标注（红色偏高、黄色偏低、绿色正常）
   - AI 初步分析
   - 标注"AI 预解读，待医生确认"
   - [查看原始图片] 按钮
3. **用户可立即查看 AI 预解读结果**
4. 医生在 Web 后台审阅 → 确认/修改/补充 → 最终结果推送通知给患者
5. 最终结果标记"医生已确认"

### 5.7 运动计划

**入口**：点击 [运动计划] 胶囊

**面板内容**：[查看本周计划] [创建新计划]

**计划内容**：以周为单位，每天指定运动类型和时长
- 示例：「周一：散步 30 分钟」「周二：慢跑 20 分钟」「周三：休息」...

**设定方式**：
- AI 对话设定：用户说"我想定个运动计划，每周一三五散步 30 分钟" → AI 拆解为每日条目 → 展示确认
- 手动设定：面板中点 [创建新计划] → 逐天填写

**打卡与追踪**：
- 首页任务卡片区显示当日运动任务，右侧 [✓] 快捷打卡
- 当日完成则标记为已完成，未完成则卡片持续显示
- 每天全部完成 = 本周计划完成
- 不设 AI 鼓励消息
- 支持随时修改或放弃（对 AI 说或手动编辑）

---

## 六、AI 对话系统

### 6.1 对话是功能入口

用户不需要在菜单中找功能。直接对 AI 说话，AI 理解意图并执行：

| 用户说 | AI 做什么 |
|--------|----------|
| "血压 135/85" | 解析指标+数值→记录健康数据→回复确认卡片 |
| "中午吃了牛肉面" | 解析食物→估算热量营养→记录饮食→回复分析结果 |
| "散步了 30 分钟" | 解析运动→估算消耗→记录运动 |
| "我每天早上吃阿司匹林" | 创建用药计划→设定提醒 |
| "最近胸口不舒服" | 启动 AI 问诊追问流程 |
| "帮我看看这份报告" | 触发报告解读流程 |
| "血压多少算正常" | 回答健康知识问题 |

### 6.2 数据录入规则

- **直接录入**：指标明确 + 数值明确 + 时间明确（如"早上血压 135/85"）
- **取默认值**：指标明确 + 数值明确 + 时间模糊 → 取当前时间，告知用户
- **追问**：数值明确但指标模糊（如只说"120"）→ AI 追问并提供选项
- **走问诊流程**：纯症状描述（如"感觉有点头晕"）

### 6.3 AI 回复内容类型

- **数据确认卡片** — "已记录：血压 135/85 ✅" + 可点击编辑
- **饮食分析卡片** — 食物列表 + 热量 + 评分 + 警告
- **用药确认卡片** — 药名 + 剂量 + 时间 + [确认] [修改]
- **报告解读卡片** — 指标列表 + AI 分析 + "待医生确认"标签
- **用药提醒卡片** — 药名 + 剂量 + [我已服用] [晚点提醒]

### 6.4 对话生命周期

- 每次打开 App → 自动进入新对话，上一段对话自动转为历史记录
- 退出 App → 当前对话保留，成为历史对话
- 对话记录保留 30 天
- 历史对话可回看、继续聊、删除
- 不设手动「新建对话」按钮

### 6.5 输入框附件

输入框旁的 📎 按钮：

| 操作 | 用途 |
|------|------|
| 📸 拍照 | 拍食物（触发饮食识别）、拍报告（触发报告解读） |
| 🖼️ 从相册选 | 上传已有照片 |
| 📎 传文件 | 上传 PDF 报告 |

**已决定**：
- AI 回答风格：专业严谨
- AI 回复直接流式展示文字，不需要"正在输入..."动画
- 语音输入使用系统键盘自带语音转文字，不额外开发

---

## 七、拍照识别饮食

### 7.1 技术方案

使用千问 VL（qwen-vl-max）作为 VLM 模型，后端 httpx 直连调用。火山引擎豆包 Vision 作为备用。

### 7.2 识别结果要求

每张照片返回：
- 食物名称列表（每项含：名称、份量描述、热量千卡、蛋白质克、碳水克、脂肪克）
- 总热量
- 单项警告（针对特定食物的警告）
- 整体饮食建议
- 健康评分（1-5 星）

### 7.3 餐次归属

拍照后需要用户选择餐次（早餐/午餐/晚餐/加餐）。未选择时 AI 根据当前时间推断并追问确认。所有饮食记录按日期+餐次归档，支持后续健康趋势追溯。

### 7.4 识别失败处理

- 允许手动修正识别结果
- 允许补充文字描述
- 允许放弃识别，完全自己填写
- 正常识别时间 1-5 秒，超过 15 秒提示超时
- 一顿饭最多识别 8 种食物

---

## 八、健康数据管理

### 8.1 数据类型

| 指标 | 录入方式 | 来源标记 |
|------|---------|---------|
| 血压（收缩压+舒张压） | AI 对话 / 蓝牙设备自动同步 | AI 录入 / 设备同步 / 手动修正 |
| 心率 | 同上 | 同上 |
| 血糖 | 同上 | 同上 |
| 血氧 | 同上 | 同上 |
| 体重 | AI 对话 | 同上 |

### 8.2 录入规则

- **AI 对话录入**：AI 解析后展示确认卡片，用户可修改
- **设备自动同步（后期）**：全自动入库，不需要逐条确认
- 默认测量时间：未提时间 → 取当前时间，在确认卡片中告知用户
- 异常值提醒：数值超出正常范围时附带提醒
- **数据冲突**：同一指标短时间内多次录入时，后者覆盖前者，不做合并

### 8.3 趋势图表

- 每种指标展示趋势折线图（7 天 / 30 天 / 90 天可选）
- 血压用双轴图（收缩压 + 舒张压同框）
- 点击数据点看详情
- 支持双指缩放、滑动查看历史
- 支持导出图片分享给医生

### 8.4 健康日历

- 月视图日历
- 标记类型：用药情况、运动完成、复查/随访日期
- 点击某天弹出当日健康摘要

---

## 九、运动记录

### 9.1 录入方式

- **AI 对话录入**：用户说"散步了 30 分钟" → AI 识别运动类型、时长、估算消耗热量
- **硬件同步（后期）**：手表/手环自动同步
- **手动修改**：AI 录入后可进入编辑页修改

### 9.2 AI 能力

- 自动识别运动类型
- 自动估算消耗热量
- 支持用户修正

---

## 十、饮食记录

### 10.1 录入方式

- **AI 对话录入**：用户说"中午吃了牛肉面" → AI 解析食物 + 估算份量和热量
- **拍照识别**：通过「拍饮食」智能体
- **手动修改**：录入后可进入编辑页修改

### 10.2 AI 能力

- 自动拆解同一餐多个食物
- 根据描述估算份量和热量
- 模糊份量自行判断

---

## 十一、用药管理

### 11.1 用药计划来源

1. **医生处方**（拍照上传 → AI 解析 → 生成计划 → 患者确认）
2. **AI 对话**（用户口述用药信息 → AI 解析 → 展示确认卡片）
3. **手动表单**（药管家面板 → 填写药品名/剂量/时间）

### 11.2 服药提醒

```
到服药时间 → 推送通知 → 点通知进入 App → 确认卡片
  ├── [我已服用] → 打卡 → 记录 ✅
  ├── [晚点提醒] → 15分钟后再次推送
  └── 30分钟未确认 → 标记"漏服" → 1小时后再次提醒
```

### 11.3 暂不做

- 拍药盒识别
- 药物库存管理
- 药物相互作用检查

---

## 十二、报告管理

### 12.1 上传

- 从「看报告」智能体进入，直接调起相机/文件选择
- 支持拍照、从相册选图、PDF 文件

### 12.2 解读流程

1. 上传 → AI 预解读（用户可立即查看）
2. AI 结果标注"AI 预解读，待医生确认"
3. 医生在 Web 后台审阅、修改、补充
4. 最终结果推送通知给患者
5. 最终结果标记"医生已确认"

### 12.3 解读结果展示

- 提取指标及数值
- 异常标注（红偏高/黄偏低/绿正常）
- AI 初步分析
- [查看原始图片]
- 多报告对比（后期）

---

## 十三、复查/随访

- 医生端创建的复查/随访计划自动同步到患者端
- 支持复查提醒推送（提前 1-3 天通知）
- 复查列表：即将到来 / 已完成
- 术后复查节点参考：术后 3/6/9/12 周（依医嘱）

---

## 十四、侧滑抽屉

### 14.1 入口

左上角头像图标点击打开（从左侧滑出）

### 14.2 内容

```
┌──────────────┬──────────────────┐
│              │                  │
│  👤 张三      │                  │
│  冠心病支架术后│                  │
│              │                  │
│  [头像点击→个人中心]              │
│  [设置]                         │
│              │                  │
│  ❤️ 血压 128/82 (最新)          │
│  💓 心率 72                     │
│  💉 血糖 5.2                    │
│  🫁 血氧 98%                    │
│              │                  │
│  📋 历史对话记录                  │
│  - 2026-05-30 血压咨询           │
│  - 2026-05-28 饮食分析           │
│  ...                            │
│              │                  │
│  退出登录                        │
└──────────────┴──────────────────┘
```

- 头像点击 → 个人中心（含账号切换等）
- 设置 → 设置页面（具体内容后续讨论）
- 健康概览：显示各项指标最近一次上传的值，未测过的指标显示"--"
- 历史对话记录：按时间倒序排列，每条显示日期 + 摘要
- 点击某条历史对话 → 当前对话自动转为历史记录 → 所选对话成为当前活跃对话，可继续聊
- 要回到之前的对话 → 从历史记录中重新选择
- 支持删除历史对话

---

## 十五、个人中心

### 15.1 入口

侧滑抽屉 → 点击头像

### 15.2 菜单

- 头像 + 姓名 + 诊断信息
- 健康档案：完整个人健康信息
- 设备管理：查看已绑定设备（一期为入口占位，后期蓝牙对接）
- 家属关联（后期）
- 通知偏好设置
- 修改资料：可编辑姓名、性别、出生日期，手机号不可改
- 设置：隐私保护中心、通知偏好、字体大小、协议与公告、关于、退出登录（隐私保护中心、协议与公告、关于均为文本展示页，内容后期填充）

---

## 十六、健康档案

### 16.1 信息收集方式

- **AI 对话自动填写**：AI 在与用户对话中了解信息后自动填充
- **用户手动填写/修改**：从个人中心 → 健康档案进入，手动编辑

### 16.2 档案内容

| 类别 | 字段 |
|------|------|
| 基本信息 | 姓名、性别、出生日期、身高、体重 |
| 诊断信息 | 主要诊断（冠心病/心梗等）、手术类型（PCI支架等）、手术日期 |
| 病史 | 高血压、糖尿病、高血脂等慢病史、既往手术史 |
| 过敏 | 药物过敏、食物过敏 |
| 饮食限制 | 低盐、低脂、低糖、忌辣等 |
| 家族病史 | 父母/兄弟姐妹心血管病史 |

### 16.3 档案维护规则

**填写方式**：AI 对话自动填写 + 用户手动填写/修改，两条路均可

**冲突处理**：AI 在对话中识别到信息与档案现有记录矛盾时，主动反问确认
- 示例：档案记录"心梗"，用户对话中说"冠心病" → AI："我注意到你之前记录的是心梗，现在提到的是冠心病，需要我更新吗？"
- 不做字段锁定，不做静默覆盖，用户始终知情

### 16.4 档案数据流

```
AI对话了解信息 ──→ 自动填充档案字段
                        │
            用户手动编辑 ←┘
                        │
                 AI 发现矛盾时反问
                        │
                        ▼
              档案持久化存储
                        │
                        ▼
        AI 对话时作为上下文注入（用于"能不能吃"判断、异常判断等）
```

### 16.5 医生视角（患者画像）

医生在 Web 后台可查看患者的完整健康档案：基本信息、健康数据历史、用药记录、检查报告、饮食运动记录

---

## 十七、设备绑定

### 17.1 策略

- 保留设备管理入口（个人中心），暂不做真实蓝牙连接
- 预留蓝牙数据同步接口
- 后期对接公司自有硬件（血压计、血氧仪、血糖仪等）以及主流第三方设备

### 17.2 后期规划

- 蓝牙扫描与绑定
- 多设备同时连接
- 设备数据自动同步到健康记录，标记数据来源

---

## 十八、推送通知

### 18.1 推送类型

| 类型 | 内容示例 | 触发条件 |
|------|---------|---------|
| 用药提醒 | "🔔 该吃阿司匹林了（100mg）" | 到预设服药时间 |
| 复查提醒 | "📋 后天下午 3 点心内科复查" | 复查前 1-3 天 |
| 医生回复 | "王主任回复了您的消息" | 医生在问诊中发消息 |
| 异常警告 | "⚠️ 检测到心率偏高（105 次/分）" | 硬件上传异常数据 |

### 18.2 点击行为

| 通知类型 | 点击后跳转 |
|---------|----------|
| 用药提醒 | 首页 + 自动打开药管家面板 |
| 复查提醒 | 首页 + 复查详情 |
| 医生回复 | 直接进入该问诊对话 |
| 异常警告 | 首页 + 该指标趋势页 |

### 18.3 技术方案

- iOS：APNs
- Android：FCM
- 推送文案人性化、温暖
- 通知偏好：四类推送（用药提醒、复查提醒、医生回复、异常警告）各设独立开关，用户可分别开启/关闭

---

## 十九、在线问诊

### 19.1 业务模型

- 私人医疗 App，患者付费使用
- 每月 2-3 次真人医生问诊机会
- 超出套餐暂不限次数，先跑通流程
- 平时由 AI 处理大部分问题
- 不存在"紧急问诊"场景——真正紧急的情况患者直接去医院

### 19.2 转人工流程

```
用户在「AI问诊」中 → 点 [找医生] → 查看剩余次数 → 确认
    │
    ▼
选择医生 → 先与医生 AI 分身对话
    │
    ▼
医生在 Web 后台有空时查看、回复
    │
    ▼
对话结束 → 扣除本月 1 次机会
```

### 19.3 医生 AI 分身

- 每个医生有自己的 AI 分身（形象、口吻不同）
- AI 回答末尾标注"以上为 AI 分析，具体请咨询 X 主任"
- 以下情况建议转真人：胸痛/呼吸困难/心悸；血压持续 >160/100；心率 >120 或 <50；用户明确要求

### 19.4 通知

- App 前台 → 聊天界面实时显示新消息
- App 后台/关闭 → 推送通知，显示消息摘要，点击进入聊天

---

## 二十、异常处理

### 20.1 网络异常

- 无网络时显示"无网络连接"全屏提示，阻挡所有操作
- 网络恢复后自动恢复正常

### 20.2 AI 异常

| 情况 | 处理 |
|------|------|
| AI 响应超时（>30 秒） | 提示"回复时间较长，请稍候或重试"，提供 [重试] 按钮 |
| AI 返回乱码/格式错误 | 提示"AI 回复异常，请重试"，自动重试一次 |
| AI 拒答（超出能力范围） | 直接告知"这个问题我暂时无法回答，建议咨询您的医生" |
| VLM 识别超时（>15 秒） | 提示"分析超时，请重试或手动填写" |

### 20.3 空状态

| 页面 | 无数据时显示 |
|------|------------|
| 对话流 | AI 问候语 |
| 任务卡片区 | 不显示（无卡片） |
| 健康概览 | 各项指标显示 "--" |
| 历史对话 | "暂无历史对话" |
| 健康档案 | 各字段显示空白，提示"可通过 AI 对话或手动填写" |
| 报告列表 | "暂无报告" |
| 用药列表 | "暂无用药计划" |
| 运动计划 | "暂无运动计划，点击创建" |
| 饮食记录 | "暂无饮食记录" |
| 复查列表 | "暂无复查安排" |
| 趋势图表 | "暂无足够数据生成趋势图" |

### 20.4 账号注销

- 入口：设置 → 退出登录旁 → 注销账号
- 流程：二次确认 → 清除服务端全部数据 → 清除本地数据 → 返回登录页
- 注销后数据不可恢复

---

## 二十一、性能预期

- VLM 食物识别等待时间：1-5 秒
- AI 对话回复时间：尽可能快，流式逐字展示
- App 启动到首页：< 2 秒
- VLM 超时时间：15 秒

---

## 二十二、数据归属与隐私

- 用户数据归用户和其绑定医生可见
- 不对外共享
- 对话记录保留 30 天

---

## 二十三、暂不做

- 面容/指纹解锁
- 实名认证
- 药盒拍照识别
- 药物库存管理
- 药物相互作用检查
- 健康积分体系
- 导出 PDF 报告
- 多报告对比（后期）
- 家属关联（后期）
- 设备蓝牙连接（后期）

---

## 二十四、待定事项

| # | 事项 | 状态 |
|---|------|------|
| 1 | 微信/Apple ID 登录 | 后期加，第一期只做手机号 |
| 2 | 语音输入 | 用系统键盘自带，不额外开发 |
| 3 | 医生端 | Web 后台，先不做，等患者端跑通 |
| 4 | 短信服务商 | 待定 |
| 5 | 问诊配额具体次数 | 先按 3 次/月 |
| 6 | 硬件数据同步 | 留接口，硬件出来后对接 |
| 7 | 智能体面板内具体快捷按钮 | 后续可调整 |
