Reflekt Health · Internal Design Spec
Family App
State Playbook
定义儿女端 App 在每种系统状态下的首页内容、推送通知、消息列表和 CTA 逻辑。与 Luma Daily Presence Playbook 配套使用,两份文件共用同一套 6 状态体系。
01 CALM
02 REMINDER
03 FAMILY
04 ALERT
05 HELP
06 OFFLINE
文件版本
v1.1 · 补充系统控制层
配套文件
Luma Daily Presence Playbook v1.2
适用范围
Family App · 儿女端
机密等级
Internal Only
说明 01 CALM 02 REMINDER 03 FAMILY 04 ALERT 05 HELP 06 OFFLINE 通用规则 系统控制层
How to read this document
这份文件是什么
Family App 的核心任务只有一个:让儿女在 3 秒内判断"现在安全吗?我需要介入吗?"然后知道下一步做什么。这份文件定义每种状态下 App 的完整表现——不是视觉规范,是内容与行为规范。
每个状态定义四件事
① 首页显示什么
② 推送通知发什么
③ 消息列表里有什么
④ CTA 是什么 / 如何切换
首页固定结构
主状态(1句)
状态解释(1句)
最后更新时间
主 CTA(动态切换)
最高优先级事件(1条)
设计核心原则
"解读,不展示。
降低焦虑,不增加焦虑。
给出结论,不要求用户自己分析。"
六状态 · 儿女端核心行为概览
CALM
主状态:Safe right now
推送:无
CTA:Check in
REMINDER
主状态:Safe right now
推送:无(提醒未确认不推送)
CTA:See today's reminders
FAMILY
主状态:Safe right now
推送:有回复时推送
CTA:Play Mary's reply
ALERT
主状态:Needs attention
推送:立即推送
CTA:Call Mary directly
HELP
主状态:Emergency response active
推送:持续推送直到确认
CTA:Call Mary Now(最高优先)
OFFLINE
主状态:Connection lost
推送:立即推送
CTA:Call Mary directly
01 · CALM
State 01
平静状态
无异常事件,无待处理提醒,无家人消息。老人在正常作息中,设备在线,数据新鲜。
儿女端核心任务:建立每日安心感,让儿女不需要频繁打开 App 确认。
触发条件
无其他状态条件满足
设备在线
数据在有效期内
📱 首页显示
9:41●●●
Reflekt
J
L
Lily
📍 Living room
Safe
Safe right now
No urgent concerns. Activity appears normal.
Updated just now
Check in with Lily
💬
📹
Yesterday's summary is ready
Unread
See all in Messages →
🏠
Home
💬
Messages
👤
Profile
主状态:Safe right now
主 CTA:Check in with Lily(非紧急,鼓励主动连接)
Recent update:最多 1 条,最低优先级事件
"Everything looks great" / "All Good" 等空话
🔔 推送通知
CALM 状态不发送推送通知。
儿女打开 App 才看到状态。
低频正面信号(每周最多 1-2 次):"Lily had a quiet week."
每天推送"今日正常"——会被当作噪音忽略
📋 消息列表
📋
Daily Summary
Lily had a quiet day. Activity normal, no alerts.
Yesterday 6:00 PM
每日摘要用人话写,不罗列数据
无待处理事项时,消息列表可以为空或只有摘要
📝 文案规则
主状态文案
Safe right now
一句话,有边界,不空洞。不用"Everything is fine"。
解释文案
No urgent concerns. Activity appears normal.
解读传感器数据的结论,不展示原始数据。
时间戳
Updated just now / a little while ago / earlier this morning
CALM 状态用人性化时间,不用精确分钟数。
02 · REMINDER
State 02
提醒状态
有待触发或待确认的提醒事项。老人仍然安全,提醒只是背景信息。
儿女端核心任务:让儿女知道提醒发出了,不制造不必要的焦虑。提醒未确认不等于出了问题。
触发条件
reminder_due(提醒时间到)
reminder_unconfirmed(15分钟后未响应)
📱 首页显示
11:15●●●
Reflekt
J
L
Lily
📍 Kitchen
Safe
Safe right now
11:00 reminder sent. Not yet confirmed.
Updated a little while ago
See today's reminders
📞
11:00 reminder — not yet confirmed
Pending
See all in Messages →
🏠
Home
💬
Messages
👤
Profile
主状态仍为 Safe right now,提醒待确认不改变安全判断
解释文案说明提醒发出了,但不升级为"需要关注"
把提醒未确认显示为黄色警告或"需要关注"
🔔 推送通知
REMINDER 状态不主动推送。
儿女打开 App 才看到提醒状态。
提醒完成后,可在消息里静默记录"Lily confirmed her 11:00 reminder"
"Lily hasn't confirmed her reminder"——不制造焦虑
📋 消息列表
Reminder · Pending
Lily's 11:00 reminder was sent. Not yet confirmed.
Today 11:00 AM
说明发出了什么提醒,不说药名或医嘱格式
状态用 Pending / Confirmed 区分,不用 Missed
📝 文案规则
解释文案(提醒待确认)
11:00 reminder sent. Not yet confirmed.
陈述事实,不判断。"Not yet confirmed"不等于"有问题"。
提醒完成后
Lily confirmed her morning reminder.
不说药名。"morning reminder"是生活语言。
03 · FAMILY
State 03
家人连接状态
有来自老人的回复消息,或老人主动发起了语音明信片。这是 Reflekt 产品的情感核心。
儿女端核心任务:让儿女感到"妈妈在想我",而不是"我在监视妈妈"。
触发条件
senior_message_sent(老人发出语音明信片)
reminder_confirmed(老人确认了提醒,有回应)
sunday_story_recorded(Sunday Story 录制完成)
📱 首页显示
9:41●●●
Reflekt
J
L
Lily
📍 Living room
Message
Safe right now
Lily left you a voice message this morning.
Updated just now
▶ Play Lily's message
📞
Lily recorded a voice message for you
New
See all in Messages →
🏠
Home
💬
Messages
👤
Profile
主状态仍为 Safe right now,家人消息不改变安全判断
主 CTA 变为 Play Lily's message,强调是"妈妈发给你的"
有老人回复时推送通知(正向互动,值得打扰)
"Lily hasn't replied to your message"——不制造内疚
🔔 推送通知
💬 Reflekt just now
Lily left you a message
She recorded something this morning. Tap to listen.
老人主动发消息 → 推送通知(这是正向互动)
家属发出消息后推送"你的消息已发送"——不需要
📋 消息列表
🎙
Voice Message · New
Lily recorded a message for you this morning.
Today 9:30 AM
说"Lily recorded a message for you"——强调是给子女的
子女的回复也在消息列表里,形成完整对话记录
📝 文案规则
主状态解释
Lily left you a voice message this morning.
"left you"比"sent"更有人情味,像妈妈真的留了话。
推送标题
Lily left you a message
主语是妈妈,动作是给你的。让儿女觉得被惦记,不是在看监控。
04 · ALERT
State 04
异常状态
系统检测到异常,Luma 正在向老人确认中。情况尚不明确,家属需要知道并准备行动。
儿女端核心任务:创造感知而非制造恐慌。告知三件事:发生了什么、系统在做什么、你能做什么。
触发条件
fall_detected
inactivity_detected(>2h)
health_critical
📱 首页显示
2:32●●●
Reflekt
J
L
Lily
📍 Living room
Attention
Needs attention
Possible fall in the living room at 2:30 PM. We're checking in with Lily now.
2:30 PM
📞 Call Lily directly
👨‍👩‍👧
Possible fall detected — checking in with Lily
Active
🏠
Home
💬
Messages
👤
Profile
主状态:Needs attention(不用 ALERT / WARNING)
解释说明三件事:什么事 / 在哪里 / 系统在做什么
时间戳精确到分钟(警报状态必须精确)
用 "Possible fall",不说 "Fall detected"——不确定性语言
"取消警报"按钮——不允许单方面取消安全流程
🔔 推送通知
⚠️ Reflekt 2:30 PM
Lily may need attention
Possible fall in the living room. We're checking in with her now.
立即推送,持续到家属打开 App
用 "may need attention" 而非 "ALERT"——减少惊恐
说明系统正在做什么(checking in),减少家属无力感
📋 消息列表
⚠️
Alert · Active
Possible fall in the living room at 2:30 PM. Luma is checking in with Lily.
Today 2:30 PM
事件解决后,状态从 Active → Resolved,消息留存
证据时间线以自然语言记录(不用技术日志格式)
📝 文案规则
推送标题(克制)
Lily may need attention
不用"EMERGENCY"或"FALL ALERT"。"may need"保留不确定性,不误判制造恐慌。
解释文案结构
Possible [事件] in the [位置] at [精确时间]. We're [系统正在做什么].
三件事必须都说:什么事、在哪里、系统在做什么。家属需要这三个信息才能判断是否介入。
事件解决后 — 情感收尾
Glad this worked out. We'll keep watching quietly.
一次性出现,自动消失,无需操作。给家属一个"这件事结束了"的明确信号。
05 · HELP
State 05
求助状态
老人主动求助,或 ALERT 确认后升级为紧急情况。这是最高优先级状态。
儿女端核心任务:让家属立刻知道需要行动,给出唯一清晰的下一步。不要让家属在这一刻做任何额外判断。
触发条件
voice_help_request(老人主动求助)
emergency_button_pressed
ALERT 无回应 30 秒后升级
📱 首页显示
2:34●●●
Reflekt
J
L
Lily
📍 Living room
Emergency
Emergency response active
Lily triggered a help request at 2:32 PM. We're calling you now.
2:32 PM · Exact time
📞 Call Lily Now
👨‍👩‍👧 Notify
Help request active — Luma is with Lily
Now
🏠
Home
💬
Messages
👤
Profile
主状态:Emergency response active
主 CTA:Call Lily Now——只有这一个主动作,不给家属额外选择
时间戳精确到分钟,说明触发方式
"Luma is with Lily"——让家属知道老人不是孤身一人
"取消警报"或"标记误报"按钮——事后反馈另做
倒计时器——制造额外压力
🔔 推送通知
🚨 Reflekt 2:32 PM
Lily needs help now
She triggered a help request. Open Reflekt to call her.
持续推送直到家属打开 App 并确认
"Lily needs help now"——主语是妈妈,动作是需要帮助
通知声音和震动应与其他通知明显不同(由工程实现)
📋 消息列表(事件时间线)
🚨
Emergency · Active
Lily triggered a help request at 2:32 PM. Luma is with her.
2:32 PM
📍
Location
Living room · Last seen moving at 2:28 PM
2:28 PM
时间线用自然语言,不用技术日志格式
事件结束后,时间线完整保留供回顾
解决后出现情感收尾:"Glad this worked out."
📝 文案规则
推送标题
Lily needs help now
最直接的人话。不用"SOS"或"Emergency Alert"——技术词会让家属脑子里先想"这是不是真的"。
解决后情感收尾(仅出现一次)
Glad this worked out. We'll keep watching quietly.
给家属一个"可以松一口气了"的信号。自动出现,自动消失,不需要操作。
误报反馈(事后独立界面)
"Was this alert helpful?" [ Yes ] [ Not really ]
事后反馈,不在紧急状态中出现。用户点"Not really"后显示:
"Thank you. We'll learn from this to be quieter in the future."
06 · OFFLINE
State 06
离线状态
设备断网、连接中断或数据超时。分两层:云断开(本地可用)和设备整体失联。
儿女端核心任务:诚实告知,给出绕过 Luma 直接联系老人的方法。不维持假安心。
OFFLINE-A · 云断开,本地可用
网络断开,Luma 本地语音和 SOS 仍可用。家属推送通知,主 CTA 变为直接拨打。
OFFLINE-B · 设备整体失联
设备心跳超时,整体失联。更高优先级通知,说明"最后已知状态"。
📱 首页显示
10:35●●●
Reflekt
J
L
Lily
📍 Last seen: Living room
Offline
Connection lost
Luma lost connection at 10:28 AM. Last known status: Safe. Local help still available.
10:28 AM · Last seen
📞 Call Lily directly
Device connection lost — tap for details
Issue
🏠
Home
💬
Messages
👤
Profile
主状态:Connection lost,不继续显示"Safe right now"
说明最后已知状态和时间:"Last known status: Safe"
主 CTA 变为 Call Lily directly(绕过 Luma)
OFFLINE-A 注明"Local help still available",让家属知道老人仍可求助
继续显示"Safe right now"——状态已过期,这是假安心
🔔 推送通知
Reflekt 10:28 AM
Luma lost connection
Last seen: Lily was safe at 10:28 AM. You can call her directly.
OFFLINE-B 推送(设备整体失联)
"Luma is not responding. Last known: Lily was safe at 10:28 AM. We recommend calling her now."
立即推送,两种级别措辞不同
恢复后推送"Connection restored. Lily is safe."
📋 消息列表
Device Issue
Luma lost internet connection at 10:28 AM. Last known status: Safe.
10:28 AM
记录断线时间和最后已知状态
恢复后,同一条消息更新为"Resolved at [时间]"
📝 文案规则
主状态文案
Connection lost
不说"Safe right now"——状态已过期。诚实是信任的基础。
解释文案结构
Luma lost connection at [精确时间]. Last known status: [状态]. [本地功能是否可用].
恢复后
Connection restored. Lily is safe.
简短,给个句号。不过度强调断线这件事。
Universal Rules
通用规则
适用于儿女端 App 所有状态的内容规则。
首页文案规则
解读,不展示。把传感器数据翻译成人话,不罗列数值
一句话解释。首页解释文案不超过两句
时间戳区分。正常状态人性化,警报状态精确到分钟
状态一致。主状态和消息列表不能互相矛盾
CTA 动态切换。不同状态主按钮不同,不平铺所有动作
"Everything looks great" / "All Good" 等空话
任何形式的健康评分、趋势图、百分比
"Mary hasn't called/replied/confirmed"——不制造内疚
推送通知规则
只在值得打扰时推送。CALM 和 REMINDER 不推送,ALERT / HELP / OFFLINE 立即推送
主语是老人。"Lily needs help"比"ALERT triggered"更好
说明系统在做什么。减少家属的无力感和焦虑
不制造内疚。正向互动(老人发消息)推送,负向缺席(老人没回复)不推送
每天"今日正常"推送——会被当作噪音忽略,然后真的警报也被忽略
CTA 动态切换逻辑 · 按状态
CALM / REMINDER / FAMILY
Check in / See reminders / Play message
鼓励连接,不制造压力
ALERT
Call Lily directly
系统在确认中,家属可主动打电话
HELP
📞 Call Lily Now
最高优先,唯一主动作,颜色最深
原则:家属在任何状态下都知道"现在最该做什么",不需要自己判断下一步。
System Control Layer
状态优先级与系统边界
本页定义当多个状态同时触发时的覆盖规则、数据有效期降级逻辑、ALERT→HELP 升级条件,以及 FAMILY 的控频边界。这是工程实现的上游依据,不可绕过。
01 · 状态优先级规则
HELP
最高
ALERT
OFFLINE
FAMILY
REMINDER
CALM
默认
首页显示规则
• 首页只显示最高优先级的状态
• 次优先级状态进入 Recent update(1条) 或消息列表
• 多个低优先级状态同时存在时,只在消息列表分组显示,不在首页堆叠
• CTA 随最高优先级状态动态切换
冲突示例
• FAMILY 消息 + REMINDER 未确认 → 首页显示 FAMILY,REMINDER 进 Recent update
• ALERT 触发 + FAMILY 消息存在 → 首页显示 ALERT,FAMILY 消息静默,事后可查
• OFFLINE + ALERT → 首页显示 OFFLINE,并说明"Alert was pending when connection was lost"
02 · "Safe right now" 数据有效期规则
0 — N 分钟(新鲜)
Safe right now
时间戳:Updated just now
N — M 分钟(可接受)
Safe as of [时间]
时间戳:Updated [X] minutes ago
> M 分钟(过期)→ OFFLINE
Connection lost
触发 OFFLINE 状态
N 和 M 的具体阈值由工程团队根据设备心跳间隔定义(建议 N=5分钟,M=15分钟)。
核心原则:"Safe right now"必须是对当前时刻有效的陈述,不能是对过去某个时刻的描述。
03 · ALERT → HELP 升级规则(多信号确认)
升级必须满足以下条件之一(不是单一计时)
路径 A · 老人确认求助
老人语音回应中包含求助意图
(ASR 识别为 HELP 类语言)
→ 立即升级为 HELP
路径 B · 无回应 + 多信号
① 无语音回应 ≥ 30 秒
至少满足以下之一:
  · 雷达持续无活动
  · 心率异常(如已接入)
  · 位置未变化
→ 升级为 HELP
误触 Fallback 逻辑
老人说"没事" / "I'm okay"
→ 立即降级回 CALM
→ 家属收到低优先级通知(非推送)
→ 消息里记录"Lily confirmed she's okay"
HELP 触发后家属标记"误报"
→ 状态降级,事件标记 false_positive
→ 事后反馈界面出现(不在紧急状态中打断)
→ 数据用于系统学习
工程实现要求
单一计时器("30秒后自动升级")不足以支撑真实场景。工程必须实现多信号组合判断逻辑,并为每种升级路径记录完整的 event_payload,供后续误报分析和系统优化使用。
04 · FAMILY 首页控频规则
首页切换规则
• 同一时间窗口内,只允许 1 条未播放消息触发首页切换到 FAMILY 状态
• 第 2 条及之后的消息:静默进入消息列表,首页不再切换
• 儿女已播放后,如有新消息到达,重新触发首页切换
• 时间窗口建议:4 小时(由工程实现,可配置)
推送控频规则
• 同一时间窗口内,老人多条消息 → 只推送第 1 条
• 推送文案:"Lily left you a message"(不说"3条")
• 儿女已播放并回复后,重置控频计时
• 目标:让 Family App 感觉像陪伴,不像 WhatsApp
FAMILY 是一等公民,但节制是陪伴感的来源。频繁打断 = 变成消息 App。沉默的存在感 > 持续的提醒。
05 · v2 预留 · 趋势驱动(当前版本不实现)
当前 v1.0 是事件驱动(event-driven):特定事件触发特定状态切换。
未来 v2 将引入趋势驱动(behavioral drift detection)
v1.0 事件驱动(现在)
inactivity > 2h → ALERT
fall_detected → ALERT
emergency_button → HELP
v2 趋势驱动(未来)
activity 下降趋势 → 轻提示
行为漂移 → subtle signal
baseline 偏离 → 早期预警
v1.0 的任务:把事件驱动做稳,建立数据基线。v2 的趋势判断依赖 v1 积累的行为数据。先做对,再做聪明。