Reflekt Health · Feature Design & Dev Spec
Reminder
System
提醒系统 · Design & Dev Specification
双端协作提醒系统。老人是提醒的主人,儿女是建议者。Luma 是执行者。围绕生活节奏设计,不围绕医疗管理设计。
A two-sided collaborative reminder system. The senior owns the reminders. Family members suggest. Luma delivers. Designed around life rhythm, not medical compliance.
版本 Version
v1.1 · 中英双语 Bilingual
上游文件
Luma Playbook v1.2 · Family App Playbook v1.1
扩展文件
Experience Enhancement Spec v1.0
日期
2026年3月
设计原则 Principles 提醒库 Library 儿女自定义 Family Custom 老人自定义 Senior Custom 权限 Permissions 流程 Flows Luma UX Family App UX 工程 Engineering
Design Principles
设计原则 Design Principles
提醒系统的核心不是"让老人记得做事",而是"让老人感到生活有节奏、有人陪着记"。这两个出发点会产生完全不同的设计。
The core of this system is not "making the senior remember to do things" — it is "making the senior feel that life has rhythm and that someone is remembering with them." These two starting points produce entirely different designs.
老人是主人 · The Senior is the Owner
老人自己设置的提醒,儿女看不到内容。儿女的建议需要老人确认。老人可以随时取消任何自己的提醒。
Reminders set by the senior are private. Family suggestions need confirmation. The senior can cancel any reminder at any time.
Luma 是伴侣 · Luma is a Companion
提醒通过语音进行,不要求老人操作界面。语气是朋友提醒,不是系统通知。老人说"不用了",Luma 接受并记住。
Reminders are delivered by voice. No interface operation required. Tone is friendly, not system-like. If the senior says "not today", Luma accepts and remembers.
围绕生活,不围绕医疗 · Life-centred, Not Clinical
默认提醒库围绕出门安全、生活节奏、家庭连接设计。"带钥匙"和"看新闻"与"吃药"同等重要。
The library is built around exit safety, life rhythm, and family connection. "Take your keys" and "watch the news" matter as much as "take your tablets".
⚠ 设计红线 · Design Red Lines

不显示"未完成"状态给儿女。"妈妈今天没有确认她的提醒"这条信息绝对不能出现。

Never show "Missed" or "Not confirmed" status to family. "Mum hasn't confirmed her reminder today" must never appear.

不超过5个活跃提醒。超过5个时,Luma 建议老人考虑是否需要。

Maximum 5 active reminders. When exceeded, Luma gently suggests the senior review the list.

安全提醒(吃药类)不能被删除,只能暂停。

Safety reminders (medication) can only be paused for the day, not permanently deleted without family confirmation.

Reminder Library
默认提醒库 Default Reminder Library
围绕老年人真实生活场景设计的提醒内容库。分六个生活维度,共 30+ 条默认提醒。老人可以从这里选择,也可以完全自定义。
A library of reminders designed around real senior life scenarios. Six life dimensions, 30+ default reminders. The senior can choose from the library or create entirely custom ones.
关于提醒库的设计思路 · Library Design Rationale

这个库里最重要的不是"吃药",而是"带钥匙"和"关煤气"。前者老人自己会记得,后者才是真正容易忘、真正出过事的事情。

The most important items are not "take tablets" — they are "take your keys" and "turn off the gas". The former seniors remember; the latter is where accidents actually happen.

提醒的语气统一用 Luma 的第一人称、生活化语言。不说"请记得服药",说"Mary,快到十一点了,你的药在厨房柜子里"。

All reminders use Luma's first-person, conversational voice. Not "Please take your medication" — but "Mary, it's almost eleven — your tablets are on the table."

🚪 出门安全 · Exit Safety 高频
🗝️
出门带钥匙 · Take keys when leaving
"Mary,出门的时候记得带钥匙哦。"
"Keys — have you got them, Mary?"
自设
📱
出门带手机 · Take phone
"手机记得带着,这样我们随时都能联系到你。"
"Don't forget your phone — so we can always reach you."
自设
🔥
出门前关煤气 · Turn off gas
"出门之前,厨房的煤气关了吗?"
"Before you head out — is the gas off?"
协作
🔌
出门关电器 · Switch off appliances
"电视和灯都关了吗?"
"TV and lights — all switched off?"
自设
☂️
雨天带伞 · Rain: take umbrella
"今天有雨,带把伞出去。"
"It's raining today — grab your umbrella."
自设
🧥
天冷多穿衣 · Cold: dress warmly
"今天有点冷,出门多穿一件。"
"It's a bit cold today — put on an extra layer before you go."
自设
💊 健康节奏 · Health Rhythm 安全级
💊
早间用药 · Morning tablets
"Mary,快到十一点了,你的早间药在桌上。"
"Almost eleven, Mary — your morning tablets are on the table."
安全
💊
晚间用药 · Evening tablets
"睡前别忘了今天的晚间药。"
"Before you sleep — don't forget your evening tablets."
安全
💧
多喝水 · Drink water
"好久没喝水了,喝一杯吧。"
"It's been a while — time for a glass of water."
自设
🧘
起身活动一下 · Get up and move
"坐了挺久了,起来走走?"
"You've been sitting a while — fancy a little walk?"
自设
🩺
医生预约提醒 · Doctor appointment
"明天上午十点你有医生预约,记得出发早一点。"
"You have a doctor's appointment tomorrow at ten — leave a little early."
协作
😴
准备休息 · Wind down for bed
"快十点了,准备休息了吗?"
"Nearly ten o'clock — ready to wind down for the night?"
自设
💬 家庭连接 · Family Connection 温暖级
📞
给儿女打电话 · Call family
"今天是周日,Lily 可能在等你的电话。"
"It's Sunday — Lily might be hoping to hear from you."
协作
🎂
家人生日提醒 · Family birthday
"明天是Lily的生日,你有没有想好说什么?"
"Tomorrow is Lily's birthday — have you thought about what to say?"
协作
💌
回复消息
"Lily给你留了一条消息,有空的话听一听?"
自动
🌿
记录今天的事 · Record the day
"今天有什么想告诉Lily的吗?"
"Is there anything you'd like to tell Lily about today?"
自设
🌅 生活仪式 · Life Rituals 日常级
📺
看新闻 · Watch the news
"六点新闻快开始了。"
"The six o'clock news is about to start."
自设
🌿
给植物浇水 · Water the plants
"阳台的花今天浇水了吗?"
"Have the plants on the balcony been watered today?"
自设
🚶
下午散步 · Afternoon walk
"下午三点了,出去走走?"
"It's three o'clock — fancy a walk?"
自设
🍳
准备午饭 · Prepare lunch
"快十一点半了,准备做午饭了。"
"Nearly half past eleven — time to start on lunch."
自设
🎵
听喜欢的音乐 · Listen to music
"要不要我放点你喜欢的音乐?"
"Shall I put on some of your favourite music?"
自设
📖
读报纸/书 · Read the paper
"早上的报纸看了吗?"
"Have you had a chance to read the morning paper?"
自设
🌤 季节天气 · Season & Weather 动态
🌧️
雨天出行提醒
"今天有雨,路上注意慢一点,地面会滑。"
天气
🌡️
极端天气提醒
"今天很热,出门记得带水,尽量早上出去。"
天气
❄️
冬季防滑提醒
"外面路可能结冰,出门穿防滑的鞋。"
天气
💊
季节换药提醒
"本周要去和医生确认一下换季用药。"
协作
✏️ 自定义 两种路径
儿女自定义 →
根据父母实际情况填写。有背景说明字段,可自定义 Luma 语音文案。需老人确认。
老人自定义 →
完全语音操作,无界面。私人内容,儿女默认不可见。
完整规范见下方两个章节
类型说明
自设老人自己设置,儿女看不到内容
协作儿女建议,老人确认后生效
安全/天气系统自动触发,老人可暂停但不可永久删除
Family Custom Reminders
儿女自定义提醒 Family Custom Reminders
儿女根据对父母实际生活情况的了解来添加的提醒。默认库里没有的,这里都可以创建。核心特点:有背景说明字段、可自定义 Luma 语音文案、需老人确认后生效。
Reminders created by family members based on their knowledge of the senior's specific situation. Anything not in the default library can be created here. Key features: background note field, customisable Luma voice copy, requires senior confirmation to activate.
为什么需要儿女自定义

每个老人的情况不同。"妈妈有糖尿病,饭后一小时要测血糖"、"爸爸最近腿不好,久坐后提醒他起来走走"——这些是儿女的专属知识,系统无法预设。

关键设计:背景说明字段。儿女可以写"妈妈最近忘事多,要温柔地提醒",Luma 不会把这句话说出来,但会在触发时语气更合适。这是儿女对 Luma 的授权,不是对妈妈的标注。

📱 儿女端创建界面
9:41●●●
← Reminders
Add for Lily
提醒内容
饭后一小时测血糖
Luma 说的话(可修改)
"Lily,吃完饭大概一小时了,记得测一下血糖。"
✎ 点击修改
时间 / 频率
每天 · 饭后约 1 小时
背景说明(只有 Luma 知道)
妈妈有糖尿病,饭后血糖容易波动,需要温和提醒。
Luma 不会对妈妈念出这段话
类型
协作(需妈妈确认)
安全(直接生效)
Suggest to Lily →
Luma 语音文案自动生成,儿女可以修改成更贴近妈妈生活的说法
背景说明字段仅 Luma 可读,不展示给老人,不出现在任何界面
类型选"协作"→ Luma 向老人询问确认;选"安全"→ 直接生效,老人可暂停
背景说明被 Luma 对老人朗读出来
Luma 语音文案使用医嘱格式("请服用降糖药 X 毫克")
📋 常见场景示例
场景 1 · 慢性病管理
儿女填写
内容:饭后测血糖
背景:妈妈有糖尿病,饭后容易忘
Luma 说(自动生成,可改)
"Mary,吃完饭大概一小时了,记得测一下血糖。"
场景 2 · 行动不便
儿女填写
内容:久坐后起身活动
背景:爸爸最近腿不好,医生说不能久坐
Luma 说
"Robert,坐了挺久了,起来走几步?"
场景 3 · 安全习惯
儿女填写
内容:睡前检查热水壶
背景:妈妈有次忘关热水壶,担心安全
Luma 说
"准备睡觉了,厨房的热水壶关了吗?"
✍️ Luma 文案自动生成规则
从儿女填写的内容提取动作 + 时间,生成口语化句子
句子开头必须是老人名字
语气用提醒,不用命令:"记得" 而非 "请立刻"
背景说明影响语气软硬,不影响内容(背景说"温和"→句子更轻柔)
药品名称、剂量、医嘱术语出现在文案里
背景说明的任何内容出现在文案里
工程接口要求 · 儿女自定义
新字段
background_note: string | null — 仅存储,不通过任何 API 返回给 Luma 对话层以外的调用方
luma_script_override: string | null — 儿女自定义的 Luma 文案,覆盖自动生成版本
script_auto_generated: boolean — 标记文案是系统生成还是儿女手写
Luma 文案自动生成
输入:reminder.title + reminder.schedule + user_profile.senior_name
输出:一句口语化中英文提醒语,儿女可修改后存入 luma_script_override
禁止词过滤:生成文案经过 forbidden_words 过滤器,拦截药品名、医嘱术语、background_note 内容泄露
背景说明的使用方式
Luma AI 上下文注入:background_note 作为系统提示的隐藏上下文传入,影响语气判断,不进入对话输出
可见性:background_note 字段在所有面向用户的 API 响应中过滤掉,仅在 Luma AI 内部推理层可用
Senior Custom Reminders
老人自定义提醒 Senior Custom Reminders
老人通过语音创建完全属于自己的提醒。无界面操作,无需儿女参与,默认私人不可见。这是老人掌握自己生活节奏的工具。
The senior creates reminders entirely through voice. No interface needed, no family involvement required. Private by default. This is a tool for the senior to own their own daily rhythm.
为什么老人自定义必须全语音

要求老人打开 App、找到入口、填表——这会让很多老人直接放弃。语音是老人唯一不需要学习的界面。

目标体验:老人想到什么就说,Luma 听到就记。就像告诉一个住在家里的朋友:"你帮我记着,每周三下午提醒我出门。"

🎙 完整对话脚本
创建提醒
老人说
"Luma,每周三下午两点提醒我,麻将局两点半开始,要提前出门。"
"Luma, every Wednesday at two in the afternoon, remind me — my mahjong starts at half past two and I need to leave early."
Luma 复述确认
"好的,我每周三下午两点提醒你出门去打麻将。要加进去吗?"
"Got it — every Wednesday at two, I'll remind you to head out for mahjong. Shall I add it?"
Luma 用简洁的话复述,不复述老人说的每一个字。老人说"要"才创建。
创建后
"加好了。你随时可以告诉我取消或者改时间。"
"Done. Tell me anytime if you want to cancel or change the time."
查询提醒
老人说
"Luma,我有什么提醒?"
"Luma, what reminders do I have?"
/ "Luma,我设了哪些提醒?"
Luma 回答(≤ 5条)
"你有三个提醒:每天早上十一点吃药,每周三下午两点出门,还有每天晚上检查门窗。要改什么吗?"
"You have three reminders: morning tablets at eleven, heading out on Wednesdays at two, and checking the doors every evening. Would you like to change anything?"
按优先级排序:安全类→协作类→私人类。不区分来源,老人不需要知道哪个是谁设的。
修改提醒
老人说
"Luma,麻将那个提醒改成下午一点半。"
"Luma, change the mahjong reminder to half past one."
Luma 确认
"好,每周三的出门提醒改到下午一点半。改好了。"
"Done — your Wednesday reminder is now set for one-thirty."
删除提醒
老人说
"Luma,那个麻将提醒不用了。"
"Luma, I don't need the mahjong reminder any more."
Luma 再次确认(删除需二次确认)
"你是说每周三下午的出门提醒?删掉的话以后就不提了,确定吗?"
"The Wednesday afternoon reminder to head out? If I delete it, I won't remind you any more. Are you sure?"
老人说"确定"后
"删掉了。"
简短。不说"已成功删除您的提醒事项"。
分享给儿女
老人说
"Luma,那个检查门窗的提醒,让Lily知道就行。"
"Luma, the door-and-window reminder — it's fine for Lily to know about it."
Luma 确认
"好的,我让Lily知道你每晚会检查门窗。"
"Of course — I'll let Lily know you check the doors and windows every evening."
visibility 从 private 改为 family。儿女端显示提醒内容,但标注"Set by Lily herself, shared with you"。
🌿 老人自定义场景示例
🀄
麻将局出门提醒 · Mahjong — head out
"每周三下午两点,麻将局要开始了,准备出门。"
"Two o'clock Wednesday — time to head out for mahjong."
私人
🐟
给鱼喂食 · Feed the fish
"下午两点了,鱼该喂了。"
"Two o'clock — time to feed the fish."
私人
🚪
睡前查门窗 · Check doors at bedtime
"睡觉前,门窗都锁好了吗?"
"Before bed — are the doors and windows all locked?"
私人
📞
给老朋友打电话 · Call old friend
"今天是周五,记得给老张打个电话。"
"It's Friday — don't forget to call Old Zhang."
私人
💊
自己记的额外用药 · Extra medication
"下午三点,眼药水记得点。"
"Three o'clock — time for your eye drops."
私人
🧺
洗衣机记得收 · Collect the laundry
"洗衣机应该洗完了,记得去收一下。"
"The washing should be done — time to bring it in."
私人
📺
追剧提醒 · Favourite show
"晚上八点,你的剧快开始了。"
"Eight o'clock — your show is about to start."
私人
📺 Luma 屏幕 · 老人自设提醒触发
14:00
Wednesday, March 5
Mary, time to head out.
Mahjong starts at 2:30 — you set this reminder yourself.
"Just say 'on my way' when you're leaving."
注意"you set this reminder yourself"——提醒老人这是自己的安排,强化自主感。
老人自定义提醒的可见性规则
默认:私人
创建时默认 visibility=private。儿女 App 只看到"Set by Lily herself(1 reminder)",看不到内容和时间。
老人选择分享
老人对 Luma 说"让Lily知道就行"→ visibility=family。儿女 App 显示内容,标注"Shared by Lily herself"。
儿女不能主动查看
儿女无法在 App 里主动查看私人提醒内容。没有"查看全部"的权限入口。老人的私人就是私人。
工程接口要求 · 老人自定义
NLU 识别要求(语音创建)
时间识别:绝对时间("两点"、"下午3点")· 相对时间("吃完饭后"、"睡前")· 星期("每周三")· 模糊时间("早上"→ 系统询问具体时间)
频率识别:每天 / 每周X / 只有今天 / 一次性 / 某月某日 / 以后都不用
事件识别:出门类 / 睡前类 / 吃饭类 / 自定义事件(存储为 event_label)
Luma 确认策略:识别置信度 > 0.85 → 直接复述确认;置信度 0.6–0.85 → 复述并询问是否正确;置信度 < 0.6 → 请老人重说
二次确认规则:删除操作必须二次确认;修改和创建只需一次确认
可见性管理
senior_created = true 的提醒:API 对 family_role 用户过滤 title / luma_script / schedule 字段,只返回 { count, type:"self" }
老人执行分享命令:reminder.visibility 从 "private" 更新为 "family",触发 reminder_shared_by_senior 事件
儿女端展示:visibility=family 的 senior_created 提醒,显示全部内容,标注 "Shared by [senior_name] herself"
Luma 屏幕增强
触发时标注来源:senior_created=true 的提醒,屏幕文案加 "you set this reminder yourself",强化老人自主感
活跃上限:senior_created 提醒计入全局 max_active=5 的限制,与其他提醒共享配额
Permission Design
权限设计 Permission Design
三种角色,三种权限。规则必须在工程层强制执行,不能只靠界面设计来约束。
Three roles, three permission levels. Rules must be enforced at the engineering layer — not just through UI design.
操作 Action 老人 Senior 儿女 Family 系统 System 备注 Notes
创建自定义提醒 ✓ 语音创建 老人专属,儿女无法代为创建
儿女自定义提醒(含背景说明) ✓ 需老人确认 背景说明仅 Luma 内部可读,不对老人展示
自定义 Luma 语音文案 ✓ 可改自动生成版 儿女对自己建议的提醒有完整文案控制权
查看私人提醒内容 ✓ 问 Luma ✗ 看不到内容 老人主动分享后儿女才可见
将私人提醒分享给儿女 ✓ 语音操作 只有老人能授权分享自己的私人提醒
建议一个提醒 ✓ 需老人确认 建议≠生效,需 Luma 向老人确认
设置安全类提醒 ✗ 只能暂停 ✓ 可设置 ✓ 系统默认 吃药类、医疗类归安全级
删除自设提醒 ✓ 随时 老人的提醒老人做主
删除安全类提醒 △ 仅暂停当日 ✓ 需确认 老人说"今天不用了"可暂停一次
查看提醒内容 ✓ 问 Luma △ 仅协作/安全类 ✓ 完整 老人自设提醒,儿女只看到"已设置"
查看确认状态 △ 只看"Confirmed" 儿女看不到"未确认/已错过"状态
调整提醒时间 ✓ 语音调整 △ 仅自己建议的 老人的提醒时间只有老人能改
Interaction Flows
核心交互流程 Core Interaction Flows
流程 A · 老人语音设置提醒
1
老人对 Luma 说
"Luma,每天下午三点提醒我浇花。"
"Luma, remind me every day at three in the afternoon to water the plants."
2
Luma 确认
"好的,我每天下午三点提醒你浇花。要我现在加进去吗?"
3
老人确认
"要。"
提醒已创建
"加好了。你随时可以告诉我取消。"
"Done. Tell me anytime if you want to cancel."

提醒进入系统,type=self,visibility=private。儿女端不显示内容。
流程 B · 儿女建议提醒
1
儿女在 App 里创建建议
在 Family App 的 Reminders 页选择或填写一个提醒建议,点击"Suggest to Mum"。
2
建议进入"待确认"状态
儿女端显示"Pending Lily's confirmation",提醒尚未生效。
3
Luma 在合适时机向老人询问
"你女儿建议我每周日提醒你给她打电话,你觉得怎么样?"
"Your daughter suggested I remind you to call her every Sunday. What do you think?"

时机:老人主动说话后,或下午平静时段。不在早晨或老人刚睡醒时打扰。
两种结果
老人接受
提醒激活。儿女端显示"Accepted by Lily"。
老人拒绝
儿女端显示"Lily preferred not to"。不说"拒绝了你"。
流程 C · 提醒触发与响应
正常触发(到时间)
"Mary,下午三点了,阳台的花今天浇了吗?"
等待老人回应。老人说"浇了"或"好的",Luma 确认并记录。
老人说"已经做了"
"好,我知道了。"
"Good — noted."
简短确认,不过度表扬。记录 reminder_confirmed。
老人说"等一下"
"好,半小时后我再提醒你一次。"
"OK — I'll remind you again in half an hour."
设置 30 分钟延迟重发,只延迟一次。
老人说"今天不用了"
"好的,今天就不提了。明天还是正常提醒你。"
"OK — I won't remind you again today. Back to normal tomorrow."
记录 reminder_skipped_today,不取消提醒,明天恢复。不推送给儿女。
安全提醒触发(吃药类)
"Mary,快到十一点了,早间药在桌上。"
15分钟后无回应,温和重复一次。再无回应,静默记录,儿女端不显示"未确认"。
出门安全提醒触发
"出门的时候,钥匙带了吗?手机呢?"
检测到老人在门口活动时触发(雷达或活动模式),不是固定时间。
天气动态提醒
"今天有雨,路滑,出门慢点走。"
结合天气 API,只在老人有出门意图时触发(早晨活动高峰后)。
Luma Senior UX
Luma 老人端设计 Luma Senior UX
提醒将至(REMINDER 状态)
10:45
Friday, February 27
Good morning, Mary.
Almost eleven — time for your morning tablets.
"I'm here if you need me."
屏幕提示任务,用生活语言。无按钮,语音触发确认。
出门安全提醒(动态触发)
09:15
Friday, February 27
Going out, Mary?
Keys, phone, and it looks like rain — grab an umbrella.
"Have a good morning."
检测到出门意图时触发,把多个出门提醒合并成一句,不逐条播报。
老人查询当前提醒
14:00
Friday, February 27
You have 3 reminders:
Morning tablets · 11:00 ✓
Water the plants · 15:00
Call Lily · Sunday
"Want to change anything? Just tell me."
老人主动问才显示列表。不超过5条。已完成的标记但不消失。
出门提醒的合并规则

出门时老人可能有多个提醒(钥匙、手机、煤气、天气)。绝对不能逐条播报——那会让老人烦躁。

Luma 应该把所有出门相关提醒合并成 1-2 句话:"Keys, phone, and it looks like rain — grab an umbrella."

合并逻辑:安全类优先(钥匙/煤气)→ 天气类 → 携带类(手机/药)。超过3项时,选最重要的2项说,其余静默记录。

Family App UX
儿女端设计 Family App Design
儿女端的 Reminder 功能是独立页面,不在首页展示。首页只显示最高优先级状态。
Reminders 页面
9:41●●●
← Home
Lily's Reminders
Safety · Set by you
💊 11:00
Morning tablets
Daily · Confirmed today ✓
Collaborative · Accepted by Lily
📞 Sunday
Call with you
Weekly · Lily accepted this
On
🩺 Mon
Doctor visit reminder
Suggested by you · Awaiting Lily
Pending
Lily's own · Private
🌿 15:00
Set by Lily herself
Content is private · Active
Private
+ Suggest a reminder for Lily
🏠
Home
💬
Messages
Reminders
👤
Profile
📋 页面结构规则
四个分区:安全级 / 协作(已接受)/ 待确认 / 老人私人
老人私人分区只显示"Set by Lily herself",不显示内容
状态只显示:✓ Confirmed / On / Pending / Private
"Missed" / "Not confirmed" / "Overdue" 等负面状态
显示老人私人提醒的内容
➕ 建议提醒流程
1
儿女点击"Suggest a reminder",从库里选或自填
2
填写:内容、时间、频率,加可选备注(Luma 不播放备注)
3
提交后立即显示"Pending Lily's confirmation"
4
Luma 在合适时机询问老人(不立即打扰)
5
老人确认后状态变为"Accepted",老人拒绝后变为"Lily preferred not to"
📱 首页的 Reminder 入口

REMINDER 状态下,首页解释文案:"11:00 reminder sent. Not yet confirmed."

CTA:"See today's reminders" → 跳转到 Reminders 页。

首页不显示提醒列表,不显示"未确认"状态。首页只给结论。

Engineering Specification
工程规范 Engineering Specification
数据模型 · Data Model
Reminder Object Schema
// Reminder object
{
  "id": "rem_uuid",
  "user_id": "string",
  "title": "string", // life-language label, not medical
  "luma_script": "string", // exact voice copy Luma uses
  "category": "exit_safety | health_rhythm | family | life_ritual | weather | custom",
  "type": "self | collaborative | system",
  "visibility": "private | family | all", // self=private default
  "schedule": {
    "trigger_type": "time | event | weather | activity",
    "time": "HH:MM", // if trigger_type = time
    "frequency": "daily | weekly | once | event_based",
    "days_of_week": [0-6], // if weekly
    "event_trigger": "exit_detected | weather_rain | weather_cold"
  },
  "status": "active | paused | pending_confirmation | archived",
  "deletable": boolean, // false for system safety reminders
  "suggested_by": "user_id | null", // family member who suggested
  "confirmed_by_senior": boolean | null,
  "max_active": 5, // per user, system enforces
  "created_at": "ISO8601",
  "updated_at": "ISO8601"
}
事件定义
reminder_triggered — 提醒到时间,Luma 开始播报
reminder_confirmed — 老人语音确认("好的"/"做了"/"知道了"等)
reminder_skipped_today — 老人说"今天不用了",当日跳过,次日恢复
reminder_snoozed — 老人说"等一下",设置 30 分钟延迟
reminder_suggested — 儿女提交建议,等待老人确认
reminder_accepted_by_senior — 老人接受儿女建议
reminder_declined_by_senior — 老人拒绝儿女建议
reminder_created_by_voice — 老人通过语音创建新提醒
NLU 识别要求(语音设置)
时间识别:绝对时间("三点"、"下午3点")+ 相对时间("吃饭前"、"睡前")+ 模糊时间("上午")
事件识别:出门相关词(走、出去、下楼)/ 睡前相关词(睡觉、休息)/ 吃饭相关词
频率识别:每天 / 每周X / 每隔X天 / 只有今天 / 以后不用了
取消识别:"不用了"/"取消"/"删掉"/"以后不提了"→ 老人确认后删除或归档
容错要求:识别失败时 Luma 复述理解内容并请老人确认,不默默失败
触发逻辑 · Trigger Logic
触发规则
时间触发
基础逻辑:系统时钟到达 schedule.time → 触发 reminder_triggered → Luma 播报
延迟重发:30分钟内无回应 → reminder_snoozed(若老人未主动要求)× 1次,再无回应静默记录
合并规则:同一时间窗口(±10分钟)内的多个提醒,合并为一条语音,安全类优先
事件触发(出门安全)
触发条件:radar检测到门口区域活动 AND 时间在 06:00–22:00 AND exit_safety提醒已激活
天气叠加:同时查询 weather_api → 雨天加"带伞"、低温加"多穿"、极端天气加出行建议
防重复:同一天内出门提醒触发不超过 2 次,避免老人出入频繁时重复打扰
协作提醒的确认时机
不立即打扰:儿女提交建议后,不在5分钟内向老人询问
合适时机:老人主动说话后的自然对话结束时 OR 下午14:00–16:00平静时段
超时处理:3天内无回应 → 再询问一次 → 再无回应 → status = archived,儿女端显示"Lily preferred not to add this"
Family App 可见性规则(强制执行)
visibility=private:API 不返回 title 字段,只返回 { id, type:"self", status:"active", time: null }
reminder_confirmed 事件:对 visibility=private 的提醒,不推送任何通知给家属
reminder_skipped_today:任何类型的跳过事件,均不推送给家属
活跃提醒上限:status=active 的提醒超过5条时,系统拒绝新建并让 Luma 告知老人
与现有状态机的集成 · Integration with State Machine
Reminder System ↔ State Machine
状态切换:reminder_triggered → 触发 REMINDER 状态(已在现有状态机中定义)
优先级遵守:ALERT / HELP / OFFLINE 触发时,暂停所有 reminder_triggered,待状态恢复后补发或跳过
Onboarding 期间:Day 5 之前不触发非安全类提醒,避免信息过载(与 onboarding_mode 联动)
CALM 状态:提醒正常按计划触发,这是提醒的正常工作场景
与 Experience Enhancement Spec 的联动
Voice Postcard:每日邀请老人录制 Postcard 与提醒系统共用同一个"下午平静时段"触发窗口,二者不在同一分钟触发
Life Moments:老人说"今天老王来了"等生活事件,NLU 区分是否为提醒设置意图,避免误触发 reminder_created_by_voice
月度报告:monthly_companion_report 包含 reminder_confirmed_count,但不包含 reminder_skipped/missed 数据