Files
taiheEhu/docs/superpowers/specs/2026-05-08-sleep-report-design.md
2026-05-08 09:17:09 +08:00

468 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 睡眠报告页设计说明
**日期:** 2026-05-08
## 目标
新增一个“健康报告页 / 睡眠健康分析页”为用户提供宝宝睡眠质量、呼吸状态、心率状态、HRV 分析、异常事件统计、睡眠评分和 AI 分析建议等完整的睡眠健康信息展示能力。
首版定位为“可交互演示版”:
- 页面结构完整
- 使用本地 mock 数据驱动
- 支持核心筛选和切换交互
- 图表以轻量演示方式实现
- 暂不接入真实后端接口
## 范围
- 新增独立页面 `pages/report/index`
- 首页保留现有设备绑定页
- 新增两个进入报告页的入口:
- 底部导航里的“报告”
- 首页主体区域里的“查看睡眠报告”入口
- 报告页支持 `日报 / 周报 / 月报` 切换
- 报告页支持日期、房间、设备筛选
- 报告页包含评分总览、趋势图、统计卡片、AI 分析、异常统计、HRV、低氧、打鼾、睡眠结构、日间状态预测等模块
- 不接入真实接口,不新增大型依赖,不引入全局状态管理
## 页面定位
这是一个面向宝宝睡眠监测场景的深色数据报告页。页面需要延续当前首页已经建立的深色监测风格,让“首页”和“报告页”看起来属于同一个产品,而不是两个割裂的界面。
页面重点不是营销展示,而是帮助用户快速判断一晚睡眠是否稳定、有没有异常风险、接下来应关注什么。
## 页面结构
### 1. 页面入口
- 首页底部导航“报告”点击后跳转到报告页
- 首页新增一个明显的“查看睡眠报告”入口卡片或快捷入口
- 报告页顶部返回按钮点击后返回首页
### 2. 顶部区域
- 返回按钮
- 宝宝名称
- 日期展示与切换
- 分享按钮
说明:
- 分享按钮首版只做 `toast` 占位,提示“分享功能待接入”
- 宝宝名称使用 mock 数据,如“安安的睡眠报告”
### 3. 时间维度切换
- 日报
- 周报
- 月报
默认选中:
- 日报
切换后行为:
- 重新读取对应维度的 mock 数据
- 同步更新评分、趋势图、统计卡片和分析模块
### 4. 顶部筛选区
- 日期选择
- 房间选择
- 设备选择
首版交互:
- 使用页面内本地状态维护当前筛选条件
- 切换筛选项后刷新页面展示内容
- 日期切换以预设 mock 日期集合实现,不引入复杂日期组件
### 5. 评分总览区
显示内容:
- 综合睡眠评分
- 睡眠评级
- 睡眠质量状态
- 评分组成项:入睡速度、睡眠稳定性、呼吸状态、心率状态、异常事件
评分规则:
- `90-100`:优秀
- `75-89`:良好
- `60-74`:合格
- `0-59`:异常
视觉要求:
- 使用明显的中心评分视觉
- 颜色随等级变化
- 同时展示评分细分项,避免只有总分
### 6. 睡眠趋势与核心图表区
包含两组主要内容:
- 整夜睡眠趋势图
- 睡眠分数趋势图
整夜趋势图展示:
- 深睡
- 浅睡
- REM
- 清醒
- 呼吸波动
睡眠分数趋势图展示:
- 时间
- 睡眠评分
- 阶段变化
首版支持:
- 切换时间维度后刷新图表
- 点击数据点后显示当前时间点的简要数值
首版不做:
- 手势缩放
- 复杂联动高亮
- 大型图表引擎能力
### 7. 睡眠数据统计卡片区
展示以下 9 项核心指标:
1. 入睡时长
2. 平均呼吸率
3. 平均血氧
4. 呼吸暂停次数
5. 平均 HRV
6. 平均心率
7. 异常翻身次数
8. 呼吸暂停时长
9. 心率过快次数
每张卡片显示:
- 指标名称
- 数值
- 单位
- 状态标签
状态分级:
- 正常
- 注意
- 异常
### 8. AI 分析模块
模块拆分为两部分:
- AI 睡眠分析摘要
- 睡眠改善建议
分析内容包括:
- 睡眠稳定性分析
- 呼吸状态分析
- 心率变化分析
- 异常风险提醒
- 睡眠改善建议
首版要求:
- 文案由本地 mock 数据提供
- 页面结构按真实业务报告组织
- 保留后续接 AI 接口的扩展空间
### 9. 深度分析模块
包含以下内容:
- 异常统计模块
- HRV 分析模块
- 心率散点图
- 呼吸波形图
- 低氧统计模块
- 打鼾监测模块
- 异常事件散点图
- 睡眠结构模块
- 自主神经分析模块
- 日间状态预测模块
各模块展示重点如下:
#### 异常统计
- 心率异常
- 呼吸异常
- 血氧异常
- 呼吸暂停
- 离床行为
显示:
- 次数
- 最大值
- 平均值
- 持续时长
#### HRV 分析
- HRV 值
- RMSSD
- SDNN
- LF/HF
- 压力指数
状态:
- 正常
- 压力偏高
- 疲劳风险
#### 心率散点图
- 横轴:时间
- 纵轴:心率值
- 异常点高亮
#### 呼吸波形图
- 呼吸波动曲线
- 异常点标记
- 呼吸暂停标记
#### 低氧统计
- 最低血氧
- 低氧次数
- 持续时长
状态:
- 正常
- 低氧风险
- 高风险
#### 打鼾监测
- 打鼾时长
- 打鼾频率
- 峰值强度
#### 异常事件散点图
事件类型:
- 呼吸暂停
- 心率异常
- 哭闹
- 离床
#### 睡眠结构
- 深睡比例
- 浅睡比例
- REM 比例
- 清醒比例
#### 自主神经分析
- 交感活跃度
- 副交感活跃度
- 压力状态
#### 日间状态预测
- 精神状态
- 疲劳程度
- 情绪状态
状态颜色:
- 优秀:绿色
- 良好:青色
- 注意:橙色
- 异常:红色
## 交互设计
### 1. 首页跳转
- 点击底部导航“报告”进入报告页
- 点击首页快捷入口进入报告页
### 2. 报表维度切换
- 点击 `日报 / 周报 / 月报`
- 更新当前维度状态
- 刷新当前维度下的所有展示数据
### 3. 筛选切换
- 日期切换:切换到不同 mock 日期
- 房间切换:切换到不同房间 mock 数据
- 设备切换:切换到不同设备 mock 数据
### 4. 图表点按
- 点击折线图或散点图中的数据点
- 页面显示对应时间点的数据提示
### 5. 分享
- 点击分享按钮
- 弹出“分享功能待接入”
## 数据组织设计
建议新增本地 mock 数据文件:
- `src/pages/report/mock.ts`
数据按三个时间维度组织:
- `daily`
- `weekly`
- `monthly`
每个维度下再包含不同日期、房间、设备的数据组合。每组数据至少包含:
- 页面头部信息
- 睡眠评分总览
- 评分组成项
- 趋势图数据
- 核心统计卡片
- AI 分析文案
- 异常统计数据
- HRV 数据
- 心率与呼吸图表数据
- 低氧、打鼾、睡眠结构、自主神经、日间状态数据
这样做的目的:
- 首版无需后端即可完整演示
- 后续接接口时,页面结构可以保持不变
- 只需要把 mock 数据来源替换成接口返回
## 实现建议
### 1. 页面与组件拆分
新增页面:
- `src/pages/report/index.tsx`
- `src/pages/report/index.scss`
- `src/pages/report/index.config.ts`
建议补充少量组件,避免单文件过长:
- `src/components/report-header/`
- `src/components/report-score-card/`
- `src/components/report-metric-grid/`
- `src/components/report-chart-card/`
拆分原则:
- 页面文件负责组装和状态控制
- 组件负责展示某一类稳定模块
- 保持文件数量适中,优先让新手易读
### 2. 状态管理
仅使用 React 自带状态管理当前页面所需状态:
- 当前时间维度
- 当前日期
- 当前房间
- 当前设备
- 当前图表选中点
不引入全局状态库。
### 3. 图表实现方式
首版不引入重型图表依赖。
推荐实现方式:
- 使用 `View` 组合、绝对定位、渐变背景和简单几何块实现折线、散点、柱条和波形效果
- 圆环评分使用纯样式方案或可被 Taro 兼容的轻量视觉实现
- 图表重点是表达业务信息和交互反馈,而不是实现完整图表引擎
这样更符合当前项目目标:
- 依赖更少
- 结构更简单
- 更适合零基础项目维护
## 视觉方向
- 延续首页现有深色监测风格
- 页面背景保持深灰蓝色系
- 模块之间通过卡片分组,但避免过度装饰
- 信息密度高,但层次必须清楚
- 使用状态色表达风险等级:
- 绿色:优秀 / 正常
- 青色:良好
- 橙色:注意
- 红色:异常
## 实现边界
首版明确不包含以下内容:
- 真实接口请求
- 真正的小程序分享链路
- 手势缩放图表
- 图表间复杂联动
- 大型第三方 UI 库
- 大型第三方图表库
- 全局状态管理方案
## 验收标准
### 页面与导航
- 首页正常显示,不影响原有设备绑定逻辑
- 底部“报告”点击可进入报告页
- 首页新增入口点击可进入报告页
- 报告页返回按钮可回到首页
### 交互行为
- `日报 / 周报 / 月报` 切换后,页面摘要和图表同步变化
- 日期、房间、设备切换后,报告内容同步变化
- 点击趋势图或散点图数据点时,能显示对应数值提示
- 分享按钮点击后有 `toast` 占位反馈
### 视觉与内容
- 页面整体风格与首页一致
- 核心模块齐全,长页面滚动时层级清晰
- 状态色使用一致,不混乱
- 重点信息在首屏和前几屏内能快速看到
### 代码与维护
- 不新增重型依赖
- 使用本地 mock 数据驱动
- 代码结构保持简单,适合新手阅读
- `README.md` 更新新增报告页说明
### 验证方式
- 至少运行一次 `npm run build:weapp`
- 确认没有新增 TypeScript 或 Taro 构建错误
- 对可抽离的纯逻辑补最小必要测试,例如:
- 评分等级映射
- 状态颜色映射
- mock 数据选择逻辑