# 睡眠报告页设计说明 **日期:** 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 数据选择逻辑