醒源 lumen · MVP 版本 PRD v0.1 产品需求文档
涵盖移动端 User Journey Map 融合流程图、醒时精力分、原生 App 界面 UI 展示与全量测试用例
1. 总体设计与 MVP 产品定位
醒源 lumen (SleepIQ) 是一款面向现代高强度脑力工作者与睡眠障碍人群的主客观融合智能醒时精力预测与 OSA 临床筛查移动端 App。
单个维度的数据均存在局限性:纯主观问卷容易产生认知偏差,而纯设备体征无法衡量大脑前额叶皮层真实反应敏捷度。MVP 版本立足于“穿戴设备体征 + 3分钟 PVT 敏捷度测验 + STOP-Bang 临床问卷”三位一体推导逻辑,帮助用户精准掌握今日醒时精力分与起伏趋势,及时预警夜间低氧与呼吸暂停隐患。
2. 用户体验地图与美观流程图 (User Journey Map & Workflows)
将 App 核心用户主旅程与 4 大分支异常逻辑(OSA 低氧升级、低精力防护、缺项权重重分配、PVT 走神惩罚)高度融合渲染如下:
flowchart TD
classDef startNode fill:#6366f1,stroke:#8b5cf6,stroke-width:2px,color:#fff;
classDef actionNode fill:#181825,stroke:#3b82f6,stroke-width:1px,color:#e4e4e7;
classDef decisionNode fill:#261b36,stroke:#c084fc,stroke-width:1px,color:#f3f4f6;
classDef alertNode fill:#3f1414,stroke:#ef4444,stroke-width:2px,color:#f87171;
classDef successNode fill:#0a3a27,stroke:#10b981,stroke-width:1px,color:#34d399;
A["📱 打开 App 启动页 / 闪屏"]:::startNode --> B["手机号/验证码快速登录"]:::actionNode
B --> C{"是否已完成体征授权?"}:::decisionNode
C -- "否" --> D["请求 HealthKit (Apple) / 小米 & 华为 Health SDK 授权"]:::actionNode
D --> E["同步最近夜间体征: HRV/RHR/SpO2"]:::actionNode
C -- "是" --> E
E --> F{"夜间 SpO2 最低点小于 90%?"}:::decisionNode
F -- "是 (低氧觉醒)" --> G1["🚨 分支 A: 触发 OSA 低氧防范升级"]:::alertNode
G1 --> G2["结合 STOP-Bang 问卷校准 ──► 弹窗提示 PSG 就医"]:::alertNode
F -- "否 (正常)" --> H["🧮 计算今日 醒时精力分 (0-100)"]:::actionNode
H --> I{"体征数据是否缺失?"}:::decisionNode
I -- "缺失 HRV/血氧" --> J1["⚡ 分支 C: 扣除缺失项权重, 自动归一化缩放"]:::decisionNode
J1 --> K["绘制 醒时精力起伏曲线 (基于用户作息 Wake Time ~ Bedtime 动态区间)"]:::actionNode
I -- "完整" --> K
K --> Q["🤖 结合大模型生成 LLM 每日智能解读报告"]:::successNode
Q --> L{"觉得预测不准 或 处于低精力状态?"}:::decisionNode
L -- "否 (正常浏览)" --> R["继续正常使用 App / 浏览首页"]:::successNode
L -- "是 (发起校准)" --> M1["🌙 分支 B: 提示小憩建议 或 开启 PVT 测试校准"]:::alertNode
M1 -- "开启 20min 恢复小憩" --> R1["开启 20min 小憩计时器 (打卡记录)"]:::successNode
M1 -- "开启 PVT 测试校准" --> N["进入 3分钟 PVT 敏捷度测验"]:::actionNode
N --> O{"PVT 走神失误 (RT>500ms)?"}:::decisionNode
O -- "是 (存在走神)" --> P1["⚠️ 分支 D: 每增加 1 次扣 5 分 (上限25分)"]:::decisionNode
P1 --> Q
O -- "否 (敏捷)" --> Q
2.2 4 大关键分支逻辑文字详述
- 分支 A (OSA 低氧预警升级):设备捕捉到夜间最低血氧 $SpO_2 < 90\%$ 或交感觉醒风暴 AAI $>10$,即使主观问卷得低分,也强制升级 OSA 风险并弹窗提醒预约 PSG 检查。
- 分支 B (低精力防护指导):当系统计算出今日醒时精力分 $<40$ 分时,高亮标注下午 14:00~15:00 的 Trough 低谷时段,自动弹出 20 分钟高效午休与咖啡因切断时间建议。
- 分支 C (缺项动态重分):当用户因脱腕或未佩戴导致缺失 `hrv_sdnn` 或 `pvt_score` 时,从总权重中扣除对应项,对其余参算项进行动态归一化缩放,保证得分不为 0。
- 分支 D (PVT 走神惩罚):在 3 分钟 PVT 敏捷测验中,若反应时 $>500\text{ms}$ 超过 5 次,每多 1 次额外扣除 5 分偏离分,并在 LLM 报告中警示大脑前额叶深度疲劳。
3. 移动端 App 真实运行界面截图展示与功能点详述 (Real Mobile App Screenshots)
以下呈现 React Native 原生 App 实际编译运行(Expo Web / iOS / Android)捕获的 8 大真实界面截图与精准功能规范:
09:41
5G 🔋
真实 App 运行截图:抓取自真实代码 LoginScreen.tsx。
真实逻辑:测试版免验证码,单手机号输入框,输入后点击“进入 →”完成 Token 颁发。
09:42
5G 🔋
真实 App 运行截图:抓取自真实代码 ProfileSetupScreen.tsx。
真实逻辑:填写年龄、性别、作息时间(Wake Time ~ Bedtime)、颈围等个人基线数据。
09:43
5G 🔋
真实 App 运行截图:抓取自真实代码 DeviceGrantScreen.tsx。
真实逻辑:支持 Apple Watch (HealthKit)、小米手环 (Mi Fitness) 和 华为手表 (HMS Health Kit) 生态选择与授权。
09:44
5G 🔋
真实 App 运行截图:抓取自真实代码 InitialScreeningScreen.tsx。
真实逻辑:显示真实 8 项 STOP-Bang 问卷问题(打鼾、疲劳、窒息观察、高血压等)及二分类开关交互。
09:45
5G 🔋
真实 App 运行截图:抓取自真实代码 HomeScreen.tsx。
真实逻辑:展示真实全天分时段精力演进预测(晨间唤醒、Peak 巅峰专注 10:00-11:30、Trough 午后低谷 14:00-15:00、傍晚回升、夜间修复)。
09:46
5G 🔋
真实 App 运行截图:抓取自真实代码 HomeScreen.tsx。
真实逻辑:在截图中已使用 🔴 醒红框 圈出“⚡ 觉得预测不够准?进行 PVT 测试校准”模块区域,点击即触发重算。
09:47
5G 🔋
真实 App 运行截图:抓取自真实代码 HomeScreen.tsx。
真实逻辑:展示真实日间精力打卡与主观感觉反馈表单(包含 1-10分 Slider 滑块体感打分、当前活动 Chip、近期咖啡/运动干预及头昏/犯困主观症状多选)。
09:48
5G 🔋
真实 App 运行截图:抓取自真实代码 HomeScreen.tsx。
真实逻辑:基于通义千问 Qwen LLM 大模型生成的自然语言每日健康指导段落。
4. 详细测试用例规范 (Comprehensive Test Cases)
为保障 MVP 版本高可靠发布,制定了包含功能、算法边界、网络异常在内的全量测试用例:
| 用例编号 | 测试模块 | 测试用例名称与前置条件 | 测试步骤与输入数据 | 预期结果与校验标准 | 优先级 |
|---|---|---|---|---|---|
TC-01-01 |
登录与授权 | 测试版免验证码单手机号快捷登录 前置:处于登录界面 |
1. 输入合规手机号 18600028000;2. 点击“进入 →”。 |
前端正则校验通过,完成 Token 颁发,自动跳转至个人档案填报页面。 | P0 最高 |
TC-01-02 |
登录与授权 | 手机号格式校验与空值拦截 前置:处于登录界面 |
1. 输入非法格式手机号(如 123);2. 点击“进入 →”。 |
前端弹出“请输入有效的11位手机号码”警告,阻断后端请求。 | P0 最高 |
TC-01-03 |
登录与授权 | 登录后个人健康档案 (Profile) 基线填报 前置:完成登录,处于档案设置页 |
1. 填写年龄 (32)、性别 (男); 2. 设置保底作息 (07:00 ~ 23:00) 与颈围; 3. 点击“保存 / 下一步”。 |
档案保存至后台数据库,作为无穿戴设备时的保底作息与 BMI 基线。 | P0 最高 |
TC-01-04 |
登录与授权 | 多穿戴生态授权与体征数据同步接入 前置:处于设备授权选择界面 |
支持选择并授权三大主流穿戴生态: 1. Apple Watch (HealthKit); 2. 小米手环/手表 (Mi Fitness Open API); 3. 华为手表 (HMS Health Kit)。 |
通过 healthXiaomi.ts / healthHuawei.ts 等底层数据总线,成功授权并自动拉取夜间睡眠分期、RHR、HRV 与血氧 SpO2。 |
P0 最高 |
TC-02-01 |
醒时精力分 | 穿戴设备全项体征自动采集与精力分计算 前置:佩戴穿戴设备完成昨夜睡眠 |
由穿戴设备自动同步采集: HRV=55ms, 睡眠效率=0.88, 静息心率=62bpm,结合最新 PVT=320ms 成绩。 |
算法引擎输出 overall_score (0-100),自动判定 Peak 巅峰专注与 Trough 午后小憩窗口。 |
P0 最高 |
TC-02-02 |
醒时精力分 | 设备体征缺项时的算法权重自动重分配 前置:穿戴设备未开启 HRV 检测或未脱腕 |
设备同步数据中 hrv_sdnn = None,其余体征指标正常。 |
算法自动扣除 w_hrv 权重,将其余参算项动态归一化缩放,零 Exception 正常输出分值。 | P0 最高 |
TC-02-03 |
醒时精力分 | 动态醒时精力起伏曲线演进 前置:设备采集或手动 Profile 作息 |
1. 设备有睡眠数据:根据穿戴设备实际监测到的起床时间动态推算第二天精力预测起始与截止时间; 2. 无设备/未授权:降级采用 Profile 手动填报的作息(如 08:30~23:30)保底。 |
生成与实际/手动作息 100% 匹配的个人化动态醒时精力起伏曲线。 | P0 最高 |
TC-03-01 |
PVT 与打卡 | 3 分钟 PVT 敏捷度测验交互与成绩保存 前置:点击开启 PVT 测试 |
1. 点击开始测验; 2. 每次视觉刺激物出现时点击触屏; 3. 完成 3 分钟测试。 |
精准记录各次 reaction_time (ms),正确计算平均毫秒数与走神次数 (Lapses) 并上传更新得分。 | P0 最高 |
TC-03-02 |
PVT 与打卡 | 提前点击犯规识别 (False Start 抢跑) 前置:处于 PVT 测验等待随机间隔中 |
在数字刺激物尚未出现前提前点击屏幕。 | 触发“抢跑/提前点击”警示提示,本次点击不计为有效反应时。 | P0 最高 |
TC-03-03 |
PVT 与打卡 | PVT 走神失误扣分上限校验 前置:测验中产生 6 次走神 (RT > 500ms) |
测试记录走神次数 pvt_lapses = 6。 |
算法扣分为 min(25, 6 * 5) = 25 分,严格执行 25 分扣分上限。 |
P0 最高 |
TC-03-04 |
PVT 与打卡 | 日间精力 4 时段打卡与主观体感上报 前置:在首页打开打卡表单 Modal |
1. 选择 [上午/中午/下午/晚间] 时段; 2. 滑拽 Slider 打出体感分 (7/10); 3. 选择活动(代码)、干预(咖啡)及主观症状(头昏); 4. 点击“确认提交”。 |
打卡数据保存成功,对应打卡槽位更新为“✓ 已打卡”,主观反馈作为 LLM 提示词输入。 | P0 最高 |
TC-04-01 |
OSA 筛查 | 问卷低风险 + 设备夜间低氧升级校验 前置:用户问卷得 1 分 |
问卷分=1 (低风险),但穿戴设备采集夜间最低血氧 Nadir = 88% (<90%)。 | 主客观双向矩阵校验生效,风险等级由低风险强制升级为中风险。 | P0 最高 |
TC-04-02 |
OSA 筛查 | 问卷高风险 + 设备体征正常降级校验 前置:问卷得 4 分 |
问卷分=4 (高风险),但穿戴设备采集夜间低氧 Nadir = 97% 且 AAI < 5。 | 双向矩阵生效,风险等级降级为低中风险,解除假阳性焦虑。 | P0 最高 |
TC-05-01 |
LLM 报告 | 通义千问 LLM API 超时降级兜底短评 前置:模拟 LLM API 响应超时 (>3s) |
调用大模型每日解读接口,发生网络超时。 | 系统触发 _fallback_report() 函数,输出本地规则兜底短评,页面顺畅渲染不卡死。 |
P0 最高 |
TC-05-02 |
算法回归 | 算法团队协助:全量历史数据回归测试 前置:算法团队协助后端环境配置完成 |
由算法工程师触发 POST /admin/api/algorithm/regression-test。 |
全量历史样本 100% 零 Exception 跑通,所有得分满足 0.0 <= score <= 100.0。 |
P0 最高 |