作为 第一次打开 App 的新用户,我想要 用几分钟回答跨饮食、睡眠、咖啡因、活动的几个问题,以便 不用先想清目标也能开始。
元气产品逻辑总览
按模块拆分梳理:首次使用 / 今日 / 周计划 / 资料库 / 我的 / Agent。每个模块都能查看模块逻辑、C 端页面图示、完整状态枚举、全部业务规则和数据对象。生成于 2026-08-14 15:57 CST。
产品一页纸
按亚马逊 Working Backwards 的方式,先把「元气是什么、为谁解决什么」写清楚,再倒推功能。
定位
元气是一款面向普通成年人的日常健康与营养记录应用:如实记录正在使用的补剂和每天的真实状态,给出现阶段可执行的建议,并用对话方式维护这些记录。
目标用户
开始吃补剂、或想改善睡眠/精力/饮食/恢复的普通成年人。他们需要的是:记清楚自己吃了什么、看懂今天该注意什么、不被推荐牵着走。
核心价值
- 真实记录:计划里只放用户确认过的事实,推荐、AI 建议不自动进入。
- 当天可行:建议落到今天能做的事(时间、数量、频率尽量具体)。
- 对话可控:所有对话修改先给「修改前 → 修改后」预览,确认才生效。
产品红线
- 不诊断疾病、不开处方,红旗症状引导就医。
- 一次睡差、一次训练不触发补剂新增或加量。
- 科学证据高于用户偏好;补剂/食疗不替代治疗。
- 缺少剂量/时间/频次的记录如实标「未说明」,不伪造日程。
产品端:原生 iOS 为主,Web 为线上兼容端。对话理解由 DeepSeek 语言模型提供,业务计算与写入校验全部由确定性规则完成。
用户故事地图
按用户旅程排列的用户故事:作为(谁),我想要(什么),以便(价值)。
认识元气 · 首次使用
作为 在吃药的用户,我想要 在开始前把用药、孕哺期等必要信息告诉 App,以便 后面的建议不会碰到我的安全边界。
作为 只想先看看的用户,我想要 跳过对话、直接看到初步结果,以便 不被强迫聊完才能用。
作为 还没注册的用户,我想要 以游客身份先用起来,以便 确认它有用之后再决定注册。
日常使用 · 今日与周计划
作为 每天吃几种补剂的用户,我想要 把自己在吃的东西记进「当前计划」,以便 今天该吃什么、吃没吃,一眼看清楚。
作为 早上起床的用户,我想要 看到今天的状态和今天该做什么,以便 不用自己拼凑睡眠、运动和各种建议。
作为 昨晚没睡好的用户,我想要 告诉 App 昨晚的情况,以便 拿到只针对今天的调整,而不是长期计划被悄悄改掉。
作为 记不清今天有没有吃的用户,我想要 点一下就完成打卡,以便 今天和周计划同步显示完成。
作为 想提前看一周安排的用户,我想要 用周概览看七天四个时段的安排,以便 知道哪天多、哪天少。
选择补剂 · 资料库
作为 想了解某款补剂的用户,我想要 看到它是什么、有什么依据、适合谁、有什么注意事项,以便 不被广告词带着买。
作为 正在吃镁的用户,我想要 不再被推荐另一种镁,以便 不用在同类产品里重复比较。
作为 有体检标记的用户,我想要 匹配结果尊重我的安全边界,以便 分数再高也不会绕过禁忌提醒。
作为 只想知道「适不适合我」的用户,我想要 看到基于自己画像的匹配结果,以便 知道这是针对我的判断,而不是通用广告。
用对话管理 · 问元气
作为 懒得填表单的用户,我想要 说一句「我在吃鱼油 2 粒」就能记下计划,以便 记录这件事几乎零成本。
作为 担心说错话被乱改数据的用户,我想要 每次修改都先看到前后对比再确认,以便 App 永远改不了我没同意的东西。
作为 只是随便问问的用户,我想要 咨询就是咨询,不变成记录,以便 「假如我明天训练」不会被当成今天已发生。
作为 想改善精力和睡眠的用户,我想要 一个先改生活方式的小方案,以便 不是一上来就被塞补剂。
长期与信任 · 我的与账号
作为 换过手机的用户,我想要 登录后资料和计划原样回来,以便 不用重新录一遍。
作为 关心隐私的用户,我想要 健康数据默认只留在本机、同步要我自己开,以便 云端没有我不愿意给的数据。
作为 想彻底离开的用户,我想要 一键清空账号数据,以便 数据主权在我手里。
功能架构
按美团 PRD 的功能架构方式分层:从用户能摸到的入口,到支撑这些功能的规则与数据。
今日
状态卡(恢复等级+当日运动事实)、正在吃的补剂、今日打卡、今天记得做什么、可进一步了解
周计划
四时段×七天周概览 → 单日安排与打卡;应完成统计;需登录
资料库
搜索/分类浏览、五档匹配分、补剂详情与依据、加入当前记录;需登录
我的
画像、健康数据来源与同步、提醒、外观、账号与数据控制
问元气 Agent
咨询 / 读取状态 / 待确认修改,14 项受控能力,游客与登录两条路径
首次使用
多维画像 → 基础与安全信息 → 初步结果 → 可选对话
首次使用流程:从画像到进入今日
跨饮食、睡眠、咖啡因、活动等维度回答若干题,不先强迫选择单一健康目标
年龄/身高/体重/性别、体检标记、正在用药、孕哺期等;风险字段按回答渐进显示,其他药物必须填具体名称
生活方式线索初筛(非诊断);有用药或特殊状态时不自动给补剂建议;目标需弹窗原文确认
可随时跳过;登录用户画像保存到账号
游客数据先保存在本机
数据联动:一处修改,全局刷新
任何一处变化都会触发相关联的页面刷新
计划与打卡列表
同一份计划数据
正在吃的同成分不再推荐
登录/退出/回前台重新核对
页面权限与入口
| 页面 / 能力 | 游客 | 登录账号 | 未登录时的当前行为 |
|---|---|---|---|
| 首次画像 | 可用 | 可用 | 保存在本机 |
| 今日 | 可用 | 可用 | 使用游客画像与本机计划 |
| 周计划 | 不可用 | 可用 | 打开登录层;成功后继续进入周计划 |
| 资料库 | 不可用 | 可用 | 打开登录层;成功后继续进入资料库 |
| 我的 | 可用 | 可用 | 展示本机设置,引导登录使用同步能力 |
| 问元气 | 可用(初始化对话) | 可用(全局 Agent) | 游客对话不提供账号修改确认能力 |
| 打卡云同步 | 不可用 | 可用 | 游客打卡只改变本机当前显示 |
| 导出健康数据、修改密码 | 不可用 | 可用 | 在我的页显示登录入口 |
业务术语表
元气产品文档
本文目录
目录维护规则docs/产品/ 存放产品使命、体验原则、各功能业务逻辑、计算规则和功能迭代状态。视觉规范、交互规范与设计素材统一放在 docs/设计/;跨端接口合同放在 docs/技术/;发布流程放在 docs/发布/。
目录
| 功能目录 | 内容 |
|---|---|
| 产品总览 | 使命、愿景、产品原则、全局逻辑、文案原则,以及 PMF 与商业化分析 |
| 首次使用与账号 | 首次画像、登录、游客与账号恢复 |
| 今日 | 今日状态、计划、打卡、行动和当前迭代记录 |
| 周计划 | 周视图、汇总、完成、跳过与撤销 |
| 资料库 | 搜索、分类、匹配、详情、加入记录、匹配计算规则与独立补剂数据库 |
| 我的 | 长期画像、健康数据、提醒、账号与数据控制 |
| Agent | 对话、读取、待确认修改、流式和错误恢复;PRD、能力清单与业务规则 |
只读总览页:产品逻辑总览.html把本目录全部文档按模块拆分为七分页单页(产品总览 / 今日 / 周计划 / 资料库 / 我的 / Agent / 业务规则库),每模块含定位、核心功能、业务流程、关键规则速览与模块联动,由scripts/build_product_docs_html.py生成;模块速览与总览页的策展内容在生成脚本中维护,文档更新后重跑脚本即可。
维护规则
- 新增产品逻辑时,先判断属于哪个用户功能,再放入对应目录。
- 跨功能的长期原则放入“产品总览”,不要在每个功能文档重复。
- 视觉样式、组件外观、图标和动效不放在产品目录。
- 已确认逻辑、代码实现和真实上线必须分别标记,不能把讨论稿写成现状。
- 文件新增、移动、删除或业务规则变化时,同步更新
docs/项目架构与文件说明.md。
元气使命、愿景与产品原则
本文目录
使命愿景产品原则后续迭代检验使命
在科学基线与安全红线内,尊重每个人对健康的理解、经验与选择。以真实的个人状态为起点,提供可解释、可调整、可执行的个性化健康生活方式建议。
愿景
让拥有不同健康观念的人,都能在科学和安全边界内,获得与自身理念和当下状态匹配的整体方案,并始终保有最终决定权。
产品原则
- 科学是基线与红线。 不认可违背可靠证据、延误诊疗或造成明确健康风险的做法。
- 在边界内尊重选择。 先理解用户相信什么、正在做什么、希望改善什么,再提供匹配的建议。
- 多种路径分层呈现。 在适用时说明饮食与作息、补剂、草本或中医药等可选路径,并标明证据、边界与风险。
- 尊重不等于背书。 不把个人信念包装成确定疗效;证据不足时明确说明不确定性。
- 建议必须个性化且可调整。 结合当天睡眠、饮食、运动、压力和长期画像动态回应;用户可以增删改查自己的计划与记录。
- 用户确认后才改变账号。 对话可以给建议和生成预览,但计划、画像与记录的写入权始终属于用户。
- 健康安全优先。 产品不替代诊断和治疗;出现红旗症状、用药冲突或高风险情况时,明确建议寻求医生、药师或合格专业人士帮助。
- 只说用户需要知道的话。 页面必须从用户当前要理解和完成的事情出发,文案短、具体、可行动;不暴露模型、规则、同步、证据分级等内部逻辑。涉及时间、数量或步骤的建议必须给出明确范围或例子。安全提醒只在相关情境出现,不用重复标签淹没主要任务。
后续迭代检验
每次功能迭代都要回答:
- 是否先通过科学与安全检查,再尊重用户的健康理念?
- 是否提供了与用户当前状态相关的可执行方案?
- 是否把不同路径的证据、边界与风险讲清楚?
- 是否让用户保有调整、拒绝和最终确认的权利?
- 用户能否在第一次阅读时看懂,并知道下一步做什么?
- 是否删掉了不影响状态、选择、风险、错误恢复或下一步行动的文案?
元气产品逻辑梳理
本文目录
1. 当前产品地图2. 专项文档3. 全局业务对象4. 所有页面共同遵守的逻辑4.1 状态与推荐分开4.2 当天事实与长期事实分开4.3 游客与账号分开4.4 所有写入都有明确边界4.5 页面刷新使用同一份状态5. 页面权限和入口6. 产品文档驱动的迭代方式7. 当前实现入口文档性质:当前产品逻辑总索引 <br>现状基线:2026-08-13 产品现状 <br>默认产品端:原生 iOS;Web 只作为线上兼容端
本文是产品逻辑 review 的第一入口。它回答“元气现在有哪些用户流程、每个页面负责什么、数据怎样跨页面流动”,各页面的细节进入对应专项文档。
1. 当前产品地图
首次打开
├── 快速画像(7 个跨维度问题)
├── 基础与安全信息
├── 初步结果与可选当前目标
└── 进入今日 / 先和元气补充信息
完成首次画像后
├── 今日 查看今天状态、当日计划、打卡、今日行动和计划核对
├── 周计划 用周概览看七天四时段安排,再进入单日打卡;需要登录
├── 资料库 搜索、分类浏览、查看匹配与资料;需要登录
├── 我的 查看画像、健康数据、提醒、账号和数据设置
└── 问元气 全局入口,打开独立全屏对话“问元气”在底部导航中固定最右,但当前不是一个持续停留的内容页。点按后打开独立全屏对话,关闭后回到用户原来的内容 Tab。
2. 专项文档
| 文档 | 负责说明 |
|---|---|
| 首次使用与账号产品逻辑 | 首次画像、结果页、游客与账号恢复、登录后的状态优先级 |
| 今日产品逻辑 | 今日状态、当前计划、打卡、每日行动和计划核对 |
| 周计划产品逻辑 | 四时段课程表式周概览、单日安排、应完成统计、完成/跳过/撤销和未来日期边界 |
| 资料库产品逻辑 | 搜索、分类、匹配分、详情、研究来源和加入记录 |
| 我的产品逻辑 | 画像、科学基线、Apple 健康、提醒、连接、账号与数据 |
| Agent 产品文档 | 游客/登录对话、对话状态、受控能力、动作预览和确认;能力清单与业务规则 |
| 产品逻辑总览(HTML) | 全部产品文档的单页只读渲染,由生成脚本维护 |
| 视觉设计规范 | 品牌、色彩、字体、布局、材料、图标和组件视觉 |
| 交互规范 | 导航、输入、状态、反馈、动效、无障碍和交互验收 |
具体业务计算继续放在所属功能目录,不在总览重复维护:补剂匹配公式以补剂匹配规则为准。各端之间的流式传输属于技术合同,以Agent 流式协议 V1为准。
3. 全局业务对象
| 对象 | 用户看到的含义 | 当前归属与规则 |
|---|---|---|
| 首次画像 | 用户回答的生活方式与必要安全信息 | 游客先保存在本机;登录账号以服务端上下文为准 |
| 当前计划 | 用户确认自己正在使用的补剂记录 | 推荐和 Agent 建议不能自动进入;确认的空计划也是有效状态 |
| 今日打卡 | 某条计划在某一天的完成/跳过状态 | 登录后按“计划项 + 日期”保存在服务端;不能改未来日期 |
| 今日事件 | 用户明确描述的昨晚或今天的一次性事实 | 只影响当天建议,不自动变成长期开关、画像或补剂计划 |
| 健康模型 | 目标、偏好、限制、基础线索和生活安排 | 登录账号的服务端状态;科学边界高于个人偏好 |
| Apple 健康摘要 | 睡眠、活动、训练类别与时长、步行/跑步距离、静息心率和 HRV 等每日摘要 | 原始样本留在 Apple 健康;本机计算摘要并直接支持今日状态与当日运动事实回显,账号同步默认关闭,用户按账号明确开启后才同步加密摘要 |
| 待确认修改 | Agent 根据用户本轮明确表达生成的修改预览 | 确认前不改变账号;可逐项确认、全部确认或取消 |
| 补剂资料 | 成分、关注方向、研究来源、适用边界和注意事项 | 目录和研究来源可读取;资料不等于个人需要或处方 |
4. 所有页面共同遵守的逻辑
4.1 状态与推荐分开
- 当前计划只放用户已确认的真实记录。
- “与你匹配”、资料库内容、Agent 建议和今日行动都是候选信息,不得伪装成已执行计划。
- 缺少剂量、时间或频次的真实记录可以标为“未说明”,但不能自动补成默认剂量、每日计划或提醒。
4.2 当天事实与长期事实分开
- “昨晚没睡好”“今天训练了”“今天漏餐”属于今日事件。
- “我长期凌晨一点睡”“我想先从饮食改善”“我正在吃鱼油”才可能形成长期资料或计划。
- 一次性状态不能触发自动加补剂、加量或修改周期安排。
- 今日卡把恢复状态与运动事实分开:恢复等级仍由睡眠、睡眠时段、静息心率和 HRV 决定;只有当天训练或活动圆环记录可以调整本机参考建议,昨天的运动不能进入今天建议。
4.3 游客与账号分开
- 游客可以完成首次画像、进入今日、查看我的和使用基础对话。
- 周计划、资料库以及账号同步能力需要登录。
- 登录账号存在服务端状态时,服务端状态优先;不得用设备上的游客缓存覆盖账号资料。
- 登录账号尚无画像时,可以把本机游客画像迁移到账号;迁移完成后清除对应游客缓存。
4.4 所有写入都有明确边界
- 页面直接编辑计划时,先预览,再由用户确认保存。
- Agent 写入先生成“修改前 / 修改后 / 影响”的动作卡,确认后才执行。
- 计划、画像、健康目标、生活安排和今日事件不能只凭模型一句口头承诺写入。
- 网络失败时保留待确认状态或恢复原内容,不能显示假成功。
4.5 页面刷新使用同一份状态
- 今日和周计划读取同一组已确认计划与打卡。
- 周计划默认显示“早 / 午 / 下午 / 晚 × 周一至周日”的周概览;表头或有安排的格子只负责进入单日,完成/跳过仍在单日操作。
- 资料库用当前计划排除已经在用的同成分记录。
- Agent 确认修改后刷新计划、今日、周计划和健康模型。
- 提醒随计划新增、编辑、删除、登录、退出和回到前台重新核对。
- 通知点开后回到今日,并高亮对应计划项。
- Apple 健康里的当天训练、活动圆环、步数和步行/跑步距离由本机摘要直接回显在今日卡,不要求登录或开启云同步;步数和距离只是事实,不被当作已完成训练。
- 训练时长与活动圆环运动分钟按各自口径保留并分别展示,不相加;缺失不等于没有运动,也不能自动改变补剂计划。
5. 页面权限和入口
| 页面/能力 | 游客 | 登录账号 | 未登录时的当前行为 |
|---|---|---|---|
| 首次画像 | 可用 | 可用 | 保存在本机 |
| 今日 | 可用 | 可用 | 使用游客画像与本机计划 |
| 周计划 | 不可用 | 可用 | 打开登录层;成功后继续进入周计划 |
| 资料库 | 不可用 | 可用 | 打开登录层;成功后继续进入资料库 |
| 我的 | 可用 | 可用 | 展示本机设置,并引导登录使用同步能力 |
| 问元气 | 可用 | 可用 | 使用初始化对话,不提供账号修改确认能力 |
| 今日/周打卡云同步 | 不可用 | 可用 | 游客今日完成只改变本机当前显示 |
| 导出健康数据、修改密码 | 不可用 | 可用 | 在我的页显示登录入口 |
6. 产品文档驱动的迭代方式
以后围绕本文档 review 产品逻辑时,每一个逻辑点使用以下状态,避免“讨论过”等于“已经上线”:
| 状态 | 含义 | 能否写成当前产品事实 |
|---|---|---|
现状 | 已在当前代码中存在并经过本轮核对 | 可以 |
待确认 | 正在讨论,尚未形成产品决定 | 不可以 |
已确认待实现 | 产品逻辑已确认,但代码尚未完成 | 不可以 |
已实现待验收 | 代码完成,尚未完成真实页面与关键状态验收 | 不可以 |
已上线 | 生产版本和真实路径均已验证 | 可以,并写明版本或日期 |
一次产品迭代的最小闭环:
- 在对应专项文档中写清问题、目标逻辑、受影响状态和验收标准,标为
待确认。 - 用户确认后改为
已确认待实现,再修改代码、规则和测试。 - 实现时同步更新本专项文档、项目架构与文件说明以及受影响的业务/技术/发布文档。
- 完成构建、自动化检查和真实页面走查后,依次标为
已实现待验收、已上线。 - 被否决的方向不单独堆积历史稿;只在必要时保留一条决策结论。
7. 当前实现入口
文件级实现地图见《项目架构与文件说明》。
元气产品体验与文案原则
本文目录
1. 体验目标2. 信息优先级3. 文案必要性4. 具体写法5. 安全与专业信息6. 功能文案归属适用范围:所有用户可见功能与文案 <br>本文只规定产品体验和表达原则;视觉与交互实现分别见 docs/设计/。1. 体验目标
用户打开元气后,应在几秒内知道:现在是什么状态、今天最值得做什么、哪些内容来自自己的确认、下一步可以按哪里。
产品语气平静、直接、可信。页面不通过展示模型能力、内部规则或大段解释来证明专业。
2. 信息优先级
- 当前状态和今天的动作。
- 用户已经确认的计划或资料。
- 可进一步了解的候选信息。
- 依据、限制和专业详情,按需展开。
推荐、资料和待确认预览不能在文案上伪装成已经执行的计划。
3. 文案必要性
每句话发布前必须通过三个问题:
- 用户第一次看能否理解?
- 看完是否知道该做什么?
- 删除后是否影响状态、选择、风险、错误恢复或下一步?
如果删除后不影响上述任何一项,就删除这句话。
4. 具体写法
| 不使用 | 使用 |
|---|---|
| 把咖啡因放在更早时段 | 睡前 8 小时停止咖啡因。例如计划 23:30 入睡,15:30 后不再喝咖啡、浓茶或能量饮料。 |
| 先稳住下一餐,把能量拉回稳定 | 下一餐同时吃主食、蛋白质食物和蔬菜,例如米饭、鸡蛋和青菜。 |
| 证据不一致 | 研究结果不一;详情解释“有些研究发现有帮助,有些没有”。 |
| 来自快速画像,依据与边界先于选择 | 先看是否适合你,再决定要不要用。 |
| 每页重复“健康信息参考” | 只在用药、孕哺期、症状风险或计划确认时显示相关提醒。 |
- 标题描述对象或状态,按钮使用动词。
- 时间、数量、频率、时长和份量尽量具体。
- 错误说明发生了什么以及下一步,不显示内部服务名称和原始错误。
- 没有足够依据时减少建议数量,不用泛泛正确的话填满页面。
5. 安全与专业信息
- 安全提醒靠近实际风险,不做每页常驻横幅。
- 用药、备孕、孕哺期、明显异常症状或真实写入前,必须说清后果和专业帮助路径。
- 不把生活习惯直接写成营养缺乏诊断。
- 在补剂评价体系完整定义前,列表和详情不展示笼统的证据等级标签;具体研究来源和必要安全提醒可以在详情中出现。
6. 功能文案归属
具体功能文案必须跟随对应功能逻辑维护:
- 首次画像与账号:
docs/产品/首次使用与账号/ - 今日:
docs/产品/今日/ - 周计划:
docs/产品/周计划/ - 资料库:
docs/产品/资料库/ - 我的:
docs/产品/我的/ - 问元气 Agent:
docs/产品/Agent/
视觉层级、色彩、字体和图标不在本文维护;交互状态、键盘、动效和无障碍也不在本文维护。
首次使用与账号产品需求文档(PRD)
本文目录
1. 需求概述1.1 模块定位(一句话)1.2 用户价值1.3 范围与边界2. 用户与使用场景2.1 目标用户2.2 典型场景3. 功能需求3.1 功能点一:首次画像(七个快速问题)3.2 功能点二:基础与安全信息3.3 功能点三:初步结果3.4 功能点四:可选对话(初始化对话)3.5 功能点五:游客模式3.6 功能点六:注册 / 登录 / 修改密码3.7 功能点七:账号恢复与状态优先级3.8 功能点八:画像保存的并发保护4. 业务规则4.1 数据规则4.2 权限规则4.3 安全规则5. 数据与状态5.1 对象表5.2 关键状态流转6. 异常与边界7. 关联模块8. 验收要点(现状基线)9. 迭代记录9.1 历史9.2 保留的已确认边界(原「不属于当前逻辑」)9.3 待确认 / 未验收项文档状态:现状(核对日期 2026-08-13) | 产品端:原生 iOS,Web 为线上兼容端
本文描述「首次使用与账号」模块当前已实现并核对过的逻辑。凡是讨论中尚未形成产品决定的点,一律标注 待确认,不写成现状。
1. 需求概述
1.1 模块定位(一句话)
首次使用与账号模块负责新用户从「打开 App」到「进入今日」的完整冷启动路径:用少量具体问题快速了解用户、补齐必要安全信息、展示初步结果,并把用户数据在「本机游客」与「登录账号」两种状态下正确归属、恢复与隔离。
1.2 用户价值
- 低门槛上手:首次使用不要求用户先选一个抽象健康目标,而是用 7 个跨饮食、睡眠、咖啡因、活动等维度的具体问题了解用户,答完即可查看初步建议,不用等待或被迫对话。
- 安全边界前置:年龄、用药、特殊状态等安全检查项在首次画像阶段就收集并校验,存在风险时不自动给补剂建议,先引导专业确认。
- 数据不丢、不乱:游客期的数据在本机保存;登录后按「服务端状态优先」恢复,尚未初始化的新账号可认领本机游客数据;不同账号与游客之间的数据互不串扰。
- 账号能力对等:周计划、资料库、账号级同步等能力以登录为门槛,受保护页面触发登录后能回到原目标页。
1.3 范围与边界
做什么
- 首次画像:7 个快速问题(可跳题、可回退)+ 基础与安全信息 + 初步结果页。
- 可选对话:用户主动补充目标或困扰后更新「生活画像」,对话不是必经步骤。
- 游客模式:本机保存画像与当前计划,可用今日、我的和初始化对话。
- 注册 / 登录 / 退出 / 修改密码,以及登录后的账号恢复与状态优先级。
- 多页面 / 多设备同时编辑画像时的并发保护(旧版本保存被拒绝并提示刷新)。
不做什么(已确认的边界)
- 不先要求用户在睡眠、精力、饮食、运动中单选一个目标。
- 不根据七题自动创建补剂计划;推荐与问元气建议都不能自动进入「当前计划」。
- 初步画像不等于营养缺乏诊断,只描述生活方式线索。
- 补充对话不是进入产品的必经步骤。
- 登录账号已有状态时,不使用游客缓存覆盖账号数据。
- 游客不能使用周计划、资料库及账号级同步能力。
2. 用户与使用场景
2.1 目标用户
| 用户类型 | 说明 |
|---|---|
| 首次打开 App 的游客 | 未注册,希望先快速了解 App 与自己的初步情况 |
| 已在其他设备使用过的老用户 | 登录后需要恢复服务端画像与计划,跨设备续用 |
| 游客期已填过画像的新用户 | 登录新账号,希望把本机游客数据迁移到账号 |
| 已登录用户 | 修改画像、改密码、退出登录,或从受保护页面触发登录 |
2.2 典型场景
| 场景 | 前置条件 | 登录要求 | 主要路径 |
|---|---|---|---|
| 新用户首次使用 | 无任何本机与账号数据 | 无需 | 欢迎页 → 7 个快速问题 → 基础与安全信息 → 初步结果 → 进入今日(或先补充信息) |
| 游客先试用再注册 | 本机已存在游客画像 | 无(注册在登录层完成) | 游客使用今日/我的/初始化对话 → 触发登录 → 新账号认领游客画像并清除游客缓存 |
| 老用户换设备登录 | 账号已有画像 | 登录 | 登录 → 服务端状态优先,恢复画像与计划 → 进入受保护目标页(如周计划) |
| 老账号从未初始化 | 账号无画像,本机有游客画像 | 登录 | 登录 → 上传游客画像到账号 → 清除游客缓存 → 继续 |
| 账号与本机都没有画像 | 全新注册 | 注册即登录 | 登录后进入首次画像流程(快速卡片 → 基础信息) |
| 修改密码 | 已登录 | 登录 | 我的 → 修改密码 → 校验当前密码 → 换新密码 → 旧登录态立即失效,获得新的登录态 |
| 退出登录 | 已登录 | 退出 | 清除登录态 → 清空账号会话状态 → 回到今日 → 回到本机游客状态 |
3. 功能需求
3.1 功能点一:首次画像(七个快速问题)
入口
- 欢迎页主按钮「快速了解一下」;欢迎页同时展示品牌、「生活协同 / 科学依据 / 持续调整」三项能力与声明「元气提供健康信息参考,不替代诊断或医疗建议。」
- 全新账号登录后无画像时,也会被送往该流程。
主流程
- 逐题展示卡片,每题含维度、回顾周期、问题、选项。
- 用户选中一个答案后自动进入下一题;最后一题作答后进入基础与安全信息页。
- 顶部可「返回 / 上一题」,右上可「跳过剩余问题」直接进入基础与安全信息页。
交互与文案要点
- iOS 端固定 7 题,顺序为:深色蔬菜(饮食)→ 鱼类(饮食)→ 入睡时间(作息)→ 睡眠质量(睡眠)→ 咖啡/浓茶(咖啡因)→ 运动频率(活动)→ 白天户外(户外)。
- 每题必须给出明确的周期与数量级(如「过去 4 周」「0–2 天 / 周」),不提供含糊的「一般」选项。
- 动画推进期间屏蔽连续点按,避免快速连点把后续题目一并答掉。
- 返回上一题时删除该题答案,回到未作答状态(Web);iOS 返回后已答答案保留并高亮,可修改后继续。
- 页面提示「不确定可以跳过,之后随时能改。」(Web)。
- 跳题后进度按实际已答数量计算;结果页显示「已完成 X 个问题」(X 为实际作答数)。
状态
- 答案仅保存在本机(游客)或随画像上下文保存到账号,见 3.8 与第 5 章;七题本身不触发任何计划或补剂写入。
- 卡片加载失败(Web):显示「卡片加载失败,请稍后重新进入」。
差异标注(待确认):iOS 七题含「鱼类」一题;Web 兼容端快速题为六题(不含「鱼类」);题库目录为 18 题(不含「鱼类」),iOS 本地题库为 19 题。产品端以 iOS 七题为准,两端题目集是否统一待确认。3.2 功能点二:基础与安全信息
入口
- 完成七题(或跳过剩余问题)后自动进入。
主流程
依次填写/选择:性别(选填)→ 年龄(必填)+ 身高(选填)+ 体重(选填)→ 近期体检异常项(选填)→ 正在服用的药物(必填)→ 特殊状态(必填);全部校验通过后「查看初步结果」按钮可用。
交互与文案要点
| 字段 | 选项与规则 |
|---|---|
| 性别 | 选填:女 / 男 / 不便透露 |
| 年龄 | 必填,范围 18–100 岁 |
| 身高 | 选填,填写时范围 120–220 cm |
| 体重 | 选填,填写时范围 30–250 kg |
| 近期体检异常项 | 选填,多选:血红蛋白偏低 / 血脂偏高 / 尿酸偏高 / 维生素 D 不足 / 肝功能异常;「无 / 没查过」与其他项互斥 |
| 正在服用的药物 | 必填:无 / 甲状腺药物 / 避孕药 / 降压药 / 其他;「无」与其他项互斥 |
| 其他药物 | 选择「其他」后必须填写具体名称,未填写时提示「填写药物名称后才能继续。」且不可继续 |
| 特殊状态 | 必填:无 / 备孕 / 孕期 / 哺乳期;「无」与备孕、孕期、哺乳期互斥 |
- 页面说明:「年龄、用药与特殊状态用于安全检查;其他项目可选,之后随时能修改。」(iOS)与「仅用于个性化与安全检查,之后随时可改。」(Web)。
- 选择男性后不再询问孕期或哺乳期,数据中按「无」处理;Web 兼容端始终展示特殊状态区(差异见
待确认)。 - 数值输入框只接受数字;超出范围时给出明确提示「年龄为 18–100;身高为 120–220cm;体重为 30–250kg。」
- 未通过校验时,提交按钮禁用并提示「请确认年龄、用药与特殊状态。」;「其他药物」选择了但未填名称时同样禁止继续。
状态
- 只有年龄、用药、特殊状态(以及已填写的身高体重)全部通过校验,才能进入初步结果页。
- 校验为纯本机交互,不依赖网络。
3.3 功能点三:初步结果
入口
- 基础与安全信息校验通过后进入。
主流程
- 结果页回显用户刚刚回答的具体事实:已完成题数、睡眠、饮食、活动、规律用药、特殊状态——不把用户压缩成单一标签。
- 页面上方声明「这是基于生活方式线索的初筛,不等同于营养缺乏诊断。」
- 「当前目标」为可选项:输入一句具体目标 → 点「设为当前目标 / 更新当前目标」→ 弹窗展示原文并再次确认 → 确认后才写入本次画像上下文。
- 两个去向:
- 「进入今日」:保存画像并进入今日 Tab。
- 「还有什么想补充的吗?」:先保存画像,再打开全屏问元气(iOS 打开全屏对话界面)。
- 存在用药或特殊状态风险时,结果页展示:「你标记了用药或特殊状态。元气不会据此自动给出补剂建议;请先让医生或药师确认。」
交互与文案要点
- 结果行示例:「已完成 5 个问题」「通常 23:00 前入睡;每周 2–3 晚睡不好」「深色蔬菜每周 3–5 天;鱼类每周 2 餐」「每周运动 2 次;户外 10–29 分钟/天」「规律用药:建议前需要先核对」「特殊状态:需要先咨询专业人士」;未作答项显示「未回答」。
- 目标确认弹窗展示用户输入的原文,「确认」后才生效;弹窗期间不打断其他操作。
- Web 兼容端结果页(可对话页)展示「初步理解」画像卡(改善方向/作息/饮食/咖啡因/关注方向),并提供「查看补剂建议」(→ 今日)与「直接安排计划」(→ 今日管理计划)两个去向,另有「跳过对话」入口;Web 端当前无「当前目标」输入框(差异见
待确认)。
状态
- 选择任一去向即完成画像保存(游客存本机,登录用户存账号,见 3.7/3.8);返回按钮可回退修改,修改后重新保存。
3.4 功能点四:可选对话(初始化对话)
入口
- iOS:初步结果页「还有什么想补充的吗?」→ 保存画像后打开全屏问元气。
- Web:初步结果(可对话)页「和元气聊聊」→ 就地展开对话区,或直接「跳过对话」进入今日。
主流程
- 对话开场先说明已基于用户真实数据完成初步理解,再邀请用户补充目标或困扰(如「我最想改善睡眠」「最近总觉得累」「我有健康问题想说明」快捷问法)。
- 用户补充后,服务端结合初始化上下文更新「生活画像」(改善方向 / 作息 / 饮食 / 咖啡因 / 关注方向)。
- 对话可随时结束;结束后用户仍可查看建议或安排计划。
交互与文案要点
- 对话不是必经步骤;页面明示「AI 对话可以跳过」「你仍可以直接查看建议」。
- 只追问当前判断所必需的缺失信息,不重复询问卡片与基础信息里已回答过的问题,不要求用户描述「典型的一天」。
- 服务端对话不可用时,自动降级为内置顾问脚本;画像仍从用户真实划卡答案与结构化表单按规则推导,不出现写死的演示数据。
- 涉及剂量、药物相互作用、孕期等安全问题时,回复说明个体差异大、不建议自行调整,并建议咨询医生或药师;不做疾病诊断、不开处方。
- 对话回复只向用户展示面向用户的正文,不展示内部推理等过程性内容。
- 对话期间发送态互斥,防止快速连发;回复中断时给出「这次回复没有完成,请重试。」等可理解的提示,已显示的正文不被另一段完整回复静默覆盖。
状态
- 画像随对话更新:登录用户的画像保存到账号(跨设备恢复);游客不保存,仅当次对话使用。
- 「关注方向」恒由确定性规则从真实数据推导,不允许模型自由编造。
3.5 功能点五:游客模式
入口
- 未登录状态下完成首次画像即进入游客模式。
主流程 / 能力边界
| 能力 | 游客 | 说明 |
|---|---|---|
| 首次画像 | 可用 | 保存在本机 |
| 今日 | 可用 | 使用游客画像与本机计划;今日完成只改变本机当前显示 |
| 我的 | 可用 | 展示本机设置,并引导登录使用同步能力 |
| 问元气(初始化对话) | 可用 | 游客对话不提供账号修改确认能力 |
| 周计划 | 不可用 | 打开登录层;成功后继续进入周计划 |
| 资料库 | 不可用 | 打开登录层;成功后继续进入资料库 |
| 今日 / 周打卡云同步、导出健康数据、修改密码 | 不可用 | 在我的页显示登录入口 |
交互与文案要点
- 游客数据存储在本机,不区分账号。
- 从受保护 Tab 触发登录时,登录层独立呈现,不把完整表单塞进底部标签页。
- 登录成功后根据账号状态分流(见 3.7),本机游客记录在迁移成功后清除。
3.6 功能点六:注册 / 登录 / 修改密码
入口
- 欢迎页「已有账号,登录」;受保护页面(周计划 / 资料库)触发登录;我的页导出、改密等能力触发登录引导。iOS 使用独立登录界面,Web 使用登录门槛页。
主流程(注册)
- 输入账号(2–20 位字母、数字或中文;不区分大小写唯一)与密码(12–64 位,允许中文与空格,无机械复杂度规则)。
- 校验通过后创建账号,注册即登录(直接建立登录态)。
- 登录后按账号状态分流(见 3.7)。
主流程(登录)
- 输入账号与密码;账号或密码不正确时在登录层内提示「账号或密码不正确」,不进入主页面。
- 老账号登录成功后渐进升级密码保护标准,不打断本次登录。
- 登录成功即按 3.7 恢复或迁移数据。
主流程(修改密码,已登录)
- 输入当前密码、新密码与确认密码。
- 依次校验:当前密码不正确 → 提示「当前密码不正确」(表单错误,不把用户当会话过期踢出,方便直接更正重试);两次新密码不一致 → 提示「两次输入的新密码不一致」;新密码与当前相同 → 提示「新密码需与当前密码不同」;长度不符 → 提示「新密码需为 12–64 位」。
- 成功后,本设备获得新的登录态,其他设备上的旧登录态立即失效。
状态
- 登录 / 注册进行中:表单按钮进入处理状态,防止重复提交。
- 注册重名:提示「该账号已被注册,直接登录即可」。
- 登录态失效:退出失效会话并回到本机游客状态。
3.7 功能点七:账号恢复与状态优先级
入口
- App 启动时本机仍处于登录状态,或用户登录 / 注册成功时。
主流程(三分支,按顺序判定)
- 账号已有画像:恢复服务端画像与计划,服务端状态优先,覆盖本机缓存;不采用本机游客或其他账号缓存。
- 账号没有画像,但本机存在游客画像:把游客画像保存到该账号,保存成功后清除相应游客缓存。
- 两边都没有画像:进入全新首次使用流程(快速卡片 → 基础信息)。
交互与文案要点
- App 启动:显示品牌、三项能力与「正在准备元气…」;恢复账号时显示「正在恢复你的账号…」。
- 恢复账号失败(Web):不进入业务页面,提示稍后重试,避免旧缓存被继续编辑后反向覆盖账号数据。
- 从受保护 Tab 触发登录时,成功后继续进入原目标 Tab。
状态
- 服务端是账号数据的权威来源;任何本机缓存的编辑必须以「基于服务端最新版本」为前提(见 3.8)。
3.8 功能点八:画像保存的并发保护
入口
- 画像上下文(划卡答案 + 结构化信息 + 计划摘要等)随账号保存时。
主流程
- 每次读取账号画像时,同时取得一个账号状态的版本标记(防止旧页面覆盖新状态);保存时把该标记一并提交。
- 保存时比对:若内容与当前完全一致 → 视为保存成功;若当前已有数据且提交的版本不是最新版本 → 保存被拒绝,提示「账号数据已在其他页面更新,请刷新后再修改」;若当前无数据却提交了版本标记 → 同样拒绝保存。
- 保存被拒绝后,从服务端刷新最新画像,再让用户基于新版本继续修改。
产品意义
- 防止「旧页面 / 旧设备上保存的画像覆盖新数据」:多页面或多设备同时编辑时,最后保存方必须基于最新版本,否则保存被拒绝并要求刷新,保证用户的近期修改不丢失。
- 保存绑定发起时的登录状态;若保存期间用户切换了账号,迟到的保存结果不会写入新账号;对话中迟到的回复同样不会写入切换后的新会话。
状态
- 冲突时用户看到的是可理解的提示与「刷新后再修改」的下一步,不是技术错误原文。
4. 业务规则
规则按「数据 / 权限 / 安全」分类编号。
4.1 数据规则
| 编号 | 规则 |
|---|---|
| R-01 | 首次画像不要求用户先选择单一健康目标;用跨饮食、睡眠、咖啡因、活动等维度的具体问题了解用户,再从回答中识别关注方向 |
| R-02 | iOS 快速画像固定 7 题(含「鱼类」一题);Web 兼容端为 6 题(不含「鱼类」);两端题目集差异 待确认 |
| R-03 | 选择男性后不再询问孕期 / 哺乳期,特殊状态按「无」处理 |
| R-04 | 「无 / 没查过」类选项与同组其他项互斥;「其他药物」必须填写具体名称才能继续 |
| R-05 | 年龄、用药、特殊状态必填,连同已填身高体重均通过校验后才能查看初步结果 |
| R-06 | 初步结果是生活方式线索的初筛,不是营养缺乏诊断;存在用药或特殊状态风险时不自动给补剂建议 |
| R-07 | 「当前目标」须经弹窗原文确认后才进入本次画像上下文 |
| R-08 | 画像上下文(划卡答案 + 结构化信息 + 计划 + 摘要)随账号长期保存;登录用户跨设备可直接恢复 |
| R-09 | 账号已有画像时服务端状态优先,恢复时覆盖本机缓存,不使用游客或其他账号缓存覆盖账号数据 |
| R-10 | 账号无画像且本机有游客画像时,把游客画像上传到账号,成功后清除游客缓存;两边都没有则进入全新首次使用流程 |
| R-11 | 游客缓存与账号缓存隔离存储;新账号认领只读游客缓存,账号缓存不参与新账号认领 |
| R-12 | 迟到保存 / 迟到回复不能写进新账号或新会话:保存完成时校验账号未切换,对话中迟到的回复不写入切换后的新会话 |
| R-13 | 画像保存必须基于账号状态的最新版本标记:版本不一致时保存被拒绝,重新加载最新数据后再修改;内容相同的重复保存视为成功,不重复产生版本变化 |
| R-14 | 对话生成的「生活画像」仅登录用户长期保存(跨设备恢复);「关注方向」恒由确定性规则推导,不允许模型自由编造 |
| R-15 | 对话服务不可用时降级为内置顾问脚本;画像仍从用户真实答案按规则推导,不出现写死的演示数据 |
| R-16 | 可选对话不是进入产品的必经步骤;跳过对话仍可直接查看建议 |
4.2 权限规则
| 编号 | 规则 |
|---|---|
| R-20 | 游客可用:首次画像、今日、我的、初始化对话;周计划、资料库及账号级同步需登录 |
| R-21 | 受保护 Tab 触发登录,成功后继续进入原目标 Tab |
| R-22 | 退出登录:清除登录态、停止账号同步、主 Tab 回到今日、清空账号会话中的今日 / 周计划 / 健康模型 / 问元气待确认动作与对话状态,然后回到本机游客状态;本机记录不因退出自动删除 |
| R-23 | 游客对话不提供账号修改确认能力(不产生待确认修改动作) |
4.3 安全规则
| 编号 | 规则 |
|---|---|
| R-30 | 密码不以明文保存:只保存经单向算法处理、不可逆还原的密文,且处理时加入随机值;任何情况下不保存明文 |
| R-31 | 登录凭证绑定用户并含有效期限;修改密码后,旧的登录凭证立即失效,其他设备上的旧登录态同时失效 |
| R-32 | 老账号登录成功后,密码保护自动升级到当前安全标准,不打断本次登录 |
| R-33 | 用户名不区分大小写唯一,2–20 位字母 / 数字 / 中文;密码 12–64 位,不设机械的大小写与符号组合规则 |
| R-34 | 账号或密码不正确时统一提示「账号或密码不正确」;注册重名提示「该账号已被注册,直接登录即可」 |
| R-35 | 修改密码时当前密码错误按表单错误提示,不把用户当作会话过期踢出;新密码须与当前密码不同 |
| R-36 | 画像保存时内容与当前完全一致则视为保存成功,不重复产生版本变化 |
5. 数据与状态
5.1 对象表
| 对象 | 用户看到的含义 | 归属 | 生命周期 |
|---|---|---|---|
| 首次画像上下文 | 划卡答案、结构化信息、当前目标、计划与摘要 | 登录账号(游客期为本机缓存) | 随账号长期保存;每次编辑基于最新版本覆盖;「重新开始」可清空;退出登录不删除 |
| 生活画像 | 对话生成的改善方向、作息、饮食、咖啡因、关注方向 | 登录账号 | 随对话更新;游客不保存 |
| 登录凭证 | 登录态凭证 | 当前登录会话(本机保存) | 登录 / 注册时建立;修改密码后刷新;退出或失效时清除 |
| 游客缓存 | 游客期画像与当前计划 | 本机 | 从创建持续到迁移成功(登录新账号)后清除;退出登录不删除 |
| 账号本机缓存 | 账号画像与计划的本地副本(含版本标记) | 按账号隔离的本机存储 | 随账号恢复 / 保存刷新;退出登录不清除,但不再参与其他账号认领 |
| 问元气会话 / 消息 / 动作 | 问元气对话记录与待确认修改 | 登录账号 | 随对话与确认操作变化;退出登录时清空对话与待确认状态 |
| 今日打卡 | 某条计划在某一天的完成 / 跳过 | 登录账号 | 按「计划项 + 日期」保存,可撤销;不能改未来日期 |
5.2 关键状态流转
- 登录三分支:账号有画像 → 服务端恢复;账号无画像 + 本机有游客 → 游客迁移并清缓存;都无 → 全新首次使用。
- 画像保存冲突:旧版本保存 → 冲突提示 → 刷新最新版本 → 基于新版本重试。
- 登录态失效 / 退出:清除登录态 → 清空账号会话状态 → 回到本机游客状态。
6. 异常与边界
| 异常情况 | 当前行为 |
|---|---|
| 断网 / 网络失败 | 保留可用的本机状态;账号同步状态显示失败;游客今日完成只改变本机当前显示 |
| 账号或密码错误 | 在登录层内显示「账号或密码不正确」,不进入主页面 |
| 登录态失效 | 退出失效会话,回到本机游客状态 |
| 画像保存版本冲突 | 提示「账号数据已在其他页面更新,请刷新后再修改」,从服务端刷新最新数据后再修改 |
| 保存期间切换账号 | 迟到的保存结果被丢弃,不写入新账号 |
| 卡片加载失败(Web) | 显示「卡片加载失败,请稍后重新进入」 |
| 对话服务不可用 | 降级为内置顾问脚本,画像仍来自用户真实数据;回复中断时保留已显示正文并给出可重试提示,不静默替换为另一段回复 |
| 注册重名 | 提示「该账号已被注册,直接登录即可」 |
| 年龄 / 身高 / 体重超出范围 | 本地校验提示具体范围,不能继续 |
| 「其他药物」未填名称 | 提示「填写药物名称后才能继续。」 |
| 修改密码:当前密码错误 / 两次不一致 / 与旧密码相同 | 分别给出明确表单提示,不踢出会话 |
| 恢复账号失败(Web) | 不进入业务页面,提示稍后重试,避免旧缓存反向覆盖账号数据 |
| 未来日期打卡(关联) | 不能修改未来日期(修改被拒绝) |
7. 关联模块
| 模块 | 与本模块的关系 |
|---|---|
| 今日 | 初步结果页「进入今日」完成画像保存并进入今日;游客用本机状态,登录后今日打卡按账号云同步 |
| 问元气 | 首次画像后的「还有什么想补充的吗?」即打开问元气;游客对话使用初始化对话且不提供账号修改确认;问元气修改画像后,以账号数据为准刷新画像 |
| 我的 | 展示画像与账号能力:修改密码、导出健康数据(需登录)、重新开始;游客展示本机设置并引导登录 |
| 周计划 / 资料库 | 登录门槛触发本模块登录层;成功后回到原目标页 |
| Apple 健康(关联) | 账号级云同步开关按账号区分,与登录态相关;本模块不负责其数据内容 |
8. 验收要点(现状基线)
以下为当前已核对并测试覆盖的行为基线,新增改动不得破坏:
- 七题流程:iOS 端 7 题固定顺序、自动推进、推进期间屏蔽连点、可返回、可跳过;跳过与作答后均能进入基础信息页。
- 安全校验:年龄 / 用药 / 特殊状态必填,「无」类互斥,「其他药物」必填名称;校验不过不能查看初步结果。
- 画像保存到正确归属:游客数据存本机;登录用户随账号保存;服务端状态优先;游客迁移成功后清除游客缓存。
- 改密安全:旧登录态立即失效、旧密码不能登录、新密码可登录、当前密码错误按表单错误提示而不踢出会话。
- 并发保护:旧版本画像保存被拒并提示刷新;内容相同的重复保存视为成功。
- 对话降级与隐私:对话服务不可用时也能完成全流程且画像来自真实数据;回复只呈现面向用户的正文,不泄露内部推理过程。
- 真实页面走查(按 AGENTS.md):首次使用、登录、断网 / 超时、错误密码、键盘遮挡、受保护页登录后回到原目标页。
9. 迭代记录
9.1 历史
- 2026-08-12:本文档前身为「首次使用与账号产品逻辑」,以逻辑合同风格记录首次画像、基础与安全信息、初步结果、游客与账号恢复、加载失败与恢复等现状;基线为当日已核对现状。
- 2026-08-13:改写为 PRD 结构(需求概述 / 用户与场景 / 功能需求 / 业务规则 / 数据与状态 / 异常与边界 / 关联模块 / 验收要点),保留前版全部已核对现状事实与迭代信息,并新增现状核对与差异标注;基线更新为当日已核对现状。
9.2 保留的已确认边界(原「不属于当前逻辑」)
- 不先要求用户在睡眠、精力、饮食、运动中单选一个目标。
- 不根据七题自动创建补剂计划。
- 初步画像不等于营养缺乏诊断。
- 补充对话不是进入产品的必经步骤。
- 登录账号有状态时,不使用游客缓存覆盖账号。
9.3 待确认 / 未验收项
| 项目 | 说明 |
|---|---|
| iOS 与 Web 快速题集差异 | iOS 七题含「鱼类」一题,Web 兼容端六题不含;题库目录 18 题、iOS 本地题库 19 题(题库目录不含「鱼类」)。产品端以 iOS 为准,两端是否统一待确认 |
| 特殊状态区显示差异 | iOS 选择男性后隐藏特殊状态询问并按「无」处理;Web 兼容端始终显示该区域 |
| Web 端「当前目标」 | iOS 初步结果页有「当前目标」输入与确认;Web 兼容端无对应输入,目标通过可选对话的画像表达 |
C 端页面图示与状态枚举
每个模块严格按「1. 模块 → 2. 模块逻辑 → 3. 图示」呈现。图示使用用户实际可见的标题、反馈和行动入口;内部规则编号与数据字段只出现在图示旁边的追溯区。
今日 · 模块定位
今日是每天打开 App 的第一屏,回答四件事:今天整体状态怎样、今天有哪些已确认安排、现在能做什么、当前计划里有什么需要进一步核对。它只呈现已确认事实和当天建议,不是资料库首页,也不靠推荐填满页面。
今日状态卡
五种状态(状态不错/值得留意/放慢一点/数据不足/未连接);恢复等级只看睡眠、睡眠时段、静息心率、HRV 相对个人基线,当日训练/圆环只调整参考建议,不改变等级。
正在吃的补剂
未确认过计划:提供「添加」与「我目前没有在吃」两个互斥选择;已确认空计划:只保留单一添加入口;有计划:今天到期项可打卡,未到期折叠只读。
今日打卡
到期项在「待完成/已完成」间切换;登录后按「计划项 + 日期」保存,成功刷新今日与周计划;失败撤销本次变化,不显示假成功。
今天记得做什么
来自用户确认的今日事件与画像;服务端行动优先、本地画像回退兜底;每条都可直接执行并判断完成;一次睡差/训练不会在这里自动加补剂。
可进一步了解
只绑定当前计划项、安全类优先、最多 3 条;是核对入口,不是自动修改。
提醒跳转
补剂提醒点开后回到今日并高亮对应计划项;提醒随计划、登录、退出和回前台重新核对。
今日 · 核心业务流程
① 今日状态:两层确定性规则
只用睡眠、睡眠时段、静息心率、HRV 相对个人基线(近 28 天)判断:状态不错 / 值得留意 / 放慢一点 / 数据不足
只读「今天」的训练或活动圆环记录,调整同一张卡里的参考建议;昨天及更早的运动不进今天
训练、活动圆环、步数、步行/跑步距离分开展示;训练分钟与圆环分钟不相加;步数/距离只是事实,不当成已完成的训练
② 今日打卡
按计划周期判断今天是否有安排;今天无需服用的项目折叠只读,避免误打卡
在「待完成 / 已完成」之间切换;跳过统一在周计划操作(iOS)
按「计划项 + 日期」保存到账号,成功刷新今日与周计划;失败撤销本次变化,不显示假成功
只改变本机当前显示,不产生账号级日期记录
关键业务规则速览
该模块最核心的规则,完整 27 条在「业务规则库」分页。
与其他模块的联动
今日产品需求文档(PRD)
本文目录
1. 需求概述1.1 模块定位1.2 用户价值1.3 范围与边界2. 用户与使用场景3. 功能需求3.1 今日状态卡与五状态3.2 两层规则(恢复状态层 / 当日活动层)3.3 今日运动参考(事实区)3.4 今日状态明细(近 28 天)3.5 正在吃的补剂(三态)3.6 今日打卡3.7 今天记得做什么(服务端行动 + 本地回退)3.8 可进一步了解3.9 提醒跳转3.10 Web 兼容端差异4. 业务规则5. 数据与状态5.1 全局对象5.2 跨页刷新6. 异常与边界7. 关联模块8. 验收要点(现状基线)9. 迭代记录9.1 当前状态9.2 已进入实现的能力9.3 仍未完成的验收9.4 当前有效决策9.5 已验证证据(摘要)文档状态:现状(核对日期 2026-08-13) | 产品端:原生 iOS,Web 为线上兼容端
1. 需求概述
1.1 模块定位
「今日」是登录与游客都可使用的每日首页,按固定顺序回答四个问题:
- 今天整体状态怎样(身体恢复信号与当日运动事实);
- 今天有哪些已确认的安排(正在吃的补剂与当日打卡);
- 现在能做什么(今日行动);
- 当前计划里有什么需要进一步核对(计划核对)。
它不是资料库首页,也不负责用推荐把计划填满;推荐内容只作为"可以考虑"的候选信息呈现,必须经用户确认后才进入当前计划。
1.2 用户价值
- 用户打开即知道今天的状态、要吃的补剂和可以做的事,减少"该吃什么、该不该动"的决策负担。
- 打卡闭环让执行可记录、可在周计划回看,为长期习惯提供依据。
- 计划核对帮助用户发现剂量缺失、时间未说明、用药间隔等需要自己核对的事项,但绝不自动修改计划。
1.3 范围与边界
- 范围:今日状态卡(五状态)、今日运动参考事实区、近 28 天明细、正在吃的补剂(三态)、今日打卡、今天记得做什么、可进一步了解、通知跳转与高亮。
- 边界:
- 本页所有运动与健康内容是基于个人趋势的产品提示,不是诊断、训练负荷评分或恢复分数。
- 运动数据(训练、圆环、步数、距离)只能回显事实与调整本卡的一条即时建议,不能自动新增、停用、改量或改周期补剂计划。
- "今天记得做什么"与"可进一步了解"在 iOS 展示;Web 为线上兼容端,不展示这两个区块(见 3.10)。
2. 用户与使用场景
| 场景 | 前置条件 | 登录要求 | 主要路径 |
|---|---|---|---|
| 早上查看今日状态与安排 | 已连接 Apple 健康或已确认空/非空计划 | 均可(游客可用) | 今日 → 状态卡 → 明细;补剂列表 → 打卡 |
| 记录一次补剂执行 | 当前计划已确认,今天有到期项 | 打卡云同步需登录;游客仅本机显示 | 今日 → 待完成行 → 点按切换已完成;成功后刷新今日与周计划 |
| 查看今天可做的具体行动 | 有已记录的今日事件,或首次画像含明确答案 | 今日行动需登录;本地回退游客可用 | 今日 → 今天记得做什么 |
| 核对当前计划缺漏 | 当前计划已确认 | 均可(内容来自服务端或本地规则) | 今日 → 可进一步了解 → 编辑记录/补剂详情 |
| 游客首次使用 | 未登录,已完成或未完成画像 | 游客可用 | 今日 → 空计划卡 → 添加记录或确认没有在吃 |
| 补剂提醒点开 App | 系统通知被点按 | 均可 | 切到今日 → 关闭其他已打开的界面 → 高亮对应计划项 |
| Web 端使用今日 | 浏览器打开今日页 | 打卡按钮仅登录可见;其余均可 | 今日 → 管理计划/打卡/建议核对 |
3. 功能需求
3.1 今日状态卡与五状态
入口:今日页首屏,日期与时段问候之下第一张卡。整卡可点按。
主流程:卡片展示「今日状态」标题、状态标题、解释文案、一个可执行下一步(推荐语)和已读取到的指标摘要;点按进入明细(未连接状态进入健康数据来源页)。
五状态(卡片文案为示例,括号内为产品含义):
| 状态 | 卡片文案示例 | 产品含义 | 点按去向 |
|---|---|---|---|
| 状态不错 | 今天状态不错 | 睡眠与恢复信号接近个人基线,无明显提示 | 今日状态明细 |
| 值得留意 | 值得留意(昨晚睡得偏少 / 昨晚作息有些偏 / 静息心率偏高 / 恢复信号偏弱) | 某项趋势需要今天稍加注意 | 今日状态明细 |
| 放慢一点 | 今天放慢一点 | 恢复信号偏弱,建议降低强度或优先休息 | 今日状态明细 |
| 数据不足 | 还在了解你的节奏 | 数据不足以形成可靠个人基线 | 今日状态明细 |
| 未连接 | 连接 Apple 健康 | 元气没有 Apple 健康摘要 | 健康数据来源 |
交互:卡片按压有缩放反馈;状态变化时卡片内容平滑过渡。推荐语前有标签:「今天可以」(稳定/留意/放慢)、「接下来」(数据不足)、「下一步」(未连接)。
状态(页面状态表见第 6 章):
- 无 Apple 健康:显示连接入口,不显示任何指标。
- 有部分数据:只显示读到的指标,缺失项不写成异常。
- 状态插图:五种状态共用同一组三色元气体(珊瑚/草本/琥珀),插图只帮助快速识别,不替代标题、原因与下一步文字;状态文本由确定性规则完整表达。
3.2 两层规则(恢复状态层 / 当日活动层)
今日状态采用两层规则,分别回答"今天恢复得怎样"与"今天动了多少":
- 恢复状态层(决定状态等级):只由睡眠时长、睡眠时段(中点偏移)、静息心率、HRV 相对个人基线判断。
- 基线窗口:近 28 天(不含今天),至少 7 个有效睡眠日;不足则进入"信息不够"。
- 触发放慢:睡眠 < 5 小时,或偏离信号 ≥ 2 项。
- 触发留意:仅 1 项偏离(睡少、作息偏、静息心率偏高、HRV 低于基线 80%)。
- 一次训练、活动圆环分钟、步数或距离都不能单独把状态改好或改差,也不能覆盖已有恢复提示。
- 当日活动层(只影响事实区与参考建议,不影响等级):只读取本机"今天"的结构化摘要,在卡片下方"今日运动参考"事实区回显训练、活动圆环、步数和步行/跑步距离,并用训练记录或活动圆环记录调整同一张卡片的参考建议。昨天及更早的运动不进入今天的事实区和建议。
3.3 今日运动参考(事实区)
入口:今日状态卡内、指标下方,仅在今天读到正值数据时出现(有训练、活动圆环分钟、步数或步行/跑步距离之一)。
呈现:
- 一次且只有一个训练类别:「类别 + 时长」(如"力量训练 32 分钟")。
- 多次训练:「N 次训练 · 总时长 · 最多两个主要类别」。
- 独立指标:活动圆环分钟、步数、步行/跑步距离(最多三项,按读取到的展示)。
- 训练时长与活动圆环分钟同时存在时,明确说明"分别记录,不相加"。
建议优先级(按恢复风险):
- 已有训练或活动圆环记录 + 稳定状态:按原计划,训练后留出放松时间。
- 已有训练或活动圆环记录 + 留意/放慢:先保留休息、作息与不再追加高强度活动的提示。
- 数据不足:只给保守的休息与继续佩戴建议,不据此判断"恢复良好"。
- 没有读到训练或圆环记录:沿用原建议,不能反推"今天没有运动"。
步数或距离只是移动事实,不能被当作已完成训练,本身不改变参考建议。恢复状态的解释与指标只讲恢复信号,不把运动事实混入其中。
边界:这些建议由本机确定性规则生成,不需要开启账号摘要同步。
3.4 今日状态明细(近 28 天)
入口:状态卡点按(未连接除外)。
内容:
- 顶部:当前状态标题、解释、推荐语,并注明"这是基于个人趋势的产品提示,不是诊断或恢复分数"。
- 近 28 天逐日:恢复指标(睡眠、静息心率、HRV)与日常活动(步数、运动分钟、活动能量)分开呈现。
- 近期运动:只列有训练记录或步行/跑步距离的天,展示训练次数、总时长、类别及类别时长,并注明"运动分钟与训练时长是两种不同记录,不会相加;没有记录也不代表当天没有运动"。
- 底部:管理健康数据来源入口。
3.5 正在吃的补剂(三态)
入口:今日页固定区块,标题随状态变化。
状态一:未确认过当前计划。显示两个互斥选择:
- 「添加我正在吃的补剂」→ 打开计划管理。
- 「我目前没有在吃」→ 把空计划保存为已确认状态。
状态二:已确认空计划。显示"目前没有在吃补剂"与一句解释,只保留一个就近的「添加记录」入口。
状态三:已有计划:
- 标题右侧显示「管理」,打开计划管理。
- 只把今天按计划应到期的项目放入可打卡列表(显示补剂名、剂量、时段、可选提醒时间,以及待完成/已完成状态)。
- 今天无需服用的项目默认折叠,展开后只能查看(显示"无需服用"),不能误打卡。
- 有计划但今天没有任何到期项:显示"今天没有安排的补剂"。
3.6 今日打卡
入口:今日到期项的整行。
主流程:点按到期行,在「待完成」与「已完成」之间切换(已完成行有删除线与对勾)。
交互与状态:
- 登录账号:切换后按「对应计划项 + 当天日期」保存到账号,保存成功后刷新今日与周计划。
- 写入失败:撤销本次界面变化,并记录页面错误状态。
- 游客:只更新本机显示,不产生账号级日期打卡记录。
- 「跳过」:iOS 今日页不提供,统一在周计划中操作(Web 兼容端今日提供"今天跳过",见 3.10)。
3.7 今天记得做什么(服务端行动 + 本地回退)
入口:今日页固定区块,只在存在具体行动时显示。
内容来源(优先级):
- 服务端确定性行动:根据用户已确认的今日事件(如睡得不好、今天训练、漏餐、饮酒、肠胃不适、压力大、身体不适等)生成可执行的行动卡(食物、补水、作息、安全、计划提醒等类别),最多 6 条;iOS 全量展示。
- 本地回退:服务端没有行动时,iOS 根据首次画像的明确答案提供有限本地回退,最多 3 条,只覆盖可直接执行的生活方式行动,例如睡前 8 小时停咖啡因、下一餐主食/蛋白质/蔬菜组合、快走或户外时间。
与状态卡的分工:今日状态卡的运动参考建议只在本机根据恢复状态与当日训练/圆环生成一条即时提示,不进入「今天记得做什么」的行动列表;本区继续展示既有的今日事件与画像行动。若当天已读到训练或活动圆环记录,本地画像回退不再重复催促"快走";低户外时长对应的"白天到户外"仍可独立保留。
边界:一次睡差或一次训练不能在这里自动新增、停用或加量补剂。所有行动都标注"仅今天,不会改动长期画像或周期计划"。
3.8 可进一步了解
入口:今日页末位区块,只在存在核对内容时显示,最多 3 条。
规则:
- 只针对仍在当前计划中的对应计划项生成核对项,绝不推荐新的补剂。
- 优先级:安全 > 剂量 > 时间 > 依据/复查。
- 安全类:用药间隔核对(甲状腺药物间隔、铁与钙/镁间隔、膳食纤维错开等)。
- 剂量类:剂量缺失、"按产品标签"、鱼油未记录 EPA/DHA。
- 时间类:时间或频次未说明,无法生成准确提醒。
- 依据/复查类:维 D 检测、铁剂复查、鱼油依据等。
交互:动作指向计划项时打开该记录的编辑页;其他情况打开补剂详情。它是核对入口,不是自动修改。
3.9 提醒跳转
入口:补剂提醒的系统通知(本地通知)。
主流程:点按通知 → 写入待跳转计划项 → 切换今日 Tab、关闭其他已打开的界面、高亮对应计划项(冷启动时从本机待跳转记录恢复高亮)。
规则:通知按"提醒时点 × 星期"创建;同一时点多条记录合并为一条通知;全 App 最多 8 个不同提醒时点;锁屏默认只显示通用文案,用户可在「我的 → 提醒」选择是否在通知中显示补剂名称。
3.10 Web 兼容端差异
- 不展示:今日状态卡(含运动事实区)、今天记得做什么、可进一步了解、近 28 天明细。
- 常驻「管理计划」按钮(即使空计划),与 iOS 只在有计划时显示"管理"不同。
- 打卡按钮仅登录可见,提供「记录完成 / 今天跳过 / 已完成·撤销 / 已跳过·撤销」;游客只能查看。
- 展示「可以考虑 · 尚未加入」建议区(查看依据 / 核对后加入计划),iOS 今日不展示建议区。
- 页面文案与数据与 iOS 同源,计划与打卡数据一致。
4. 业务规则
| 编号 | 规则 |
|---|---|
| R-01 | 当前计划只放用户已确认的真实记录;规则推荐、问元气建议、资料库内容不得自动进入 |
| R-02 | 确认的空计划是有效状态(「我目前没有在吃」),与未确认计划在界面上严格区分 |
| R-03 | 时间或频次为「未说明」的记录仅作为正在服用的事实保留,不进入今日到期列表,也不伪造为周计划日程 |
| R-04 | 打卡绑定「计划项 + 日期」,同一「计划项 × 日期」只有一条记录,重复打卡按更新处理 |
| R-05 | 打卡必须是登录账号;游客今日完成只改变本机显示,不产生账号级记录 |
| R-06 | 打卡只允许今天或过去 7 天内的日期;未来日期不可打卡 |
| R-07 | 打卡状态三态:已完成 / 已跳过 / 撤销;iOS 今日页只做完成/撤销,跳过统一在周计划;Web 兼容端今日提供跳过 |
| R-08 | 每条计划项只属于一个时段(早晨/午间/下午/晚上),同一事项不会跨时段合并 |
| R-09 | 今日事件是一次性事实,只影响当天建议;不得自动变成长期开关、画像或补剂计划 |
| R-10 | 恢复状态与运动事实分开:状态等级只由睡眠/睡眠时段/静息心率/HRV 相对个人基线决定;当日训练或圆环只调整本卡参考建议,不改变等级、不覆盖恢复提示 |
| R-11 | 训练记录时长与活动圆环分钟按各自口径分别展示,不相加;步数或距离只是移动事实,不被当作已完成训练,也不改变建议 |
| R-12 | 昨天及更早的运动只留在近期运动明细,不进入今天的事实区或参考建议 |
| R-13 | 恢复基线:近 28 天窗口、至少 7 个有效睡眠日;不足时进入「还在了解你的节奏」并只给保守建议 |
| R-14 | 今日运动参考只在今天读到正值时出现;无运动记录或数据缺失不显示空事实区,也不写成"当天没有运动" |
| R-15 | 「可进一步了解」只针对仍在当前计划中的对应计划项,最多 3 条,安全优先;动作是进入编辑页或补剂详情,不是自动修改 |
| R-16 | 今日行动:服务端确定性事件行动优先(iOS 全量展示,上限 6 条);服务端为空时用本地画像回退(最多 3 条);旧文档"最多三项"与当前行为不一致,是否收紧待确认 |
| R-17 | 状态卡运动建议与今日行动分工:前者只生成本卡一条即时提示,不进入「今天记得做什么」的行动列表;当天已有训练/圆环时本地回退不再重复"快走",日间户外建议独立保留 |
| R-18 | 本地事实回显与参考建议不依赖账号摘要同步;云同步默认关闭,按账号显式开启后加密同步最近 35 天摘要,切换账号不沿用上一账号的选择 |
| R-19 | 运动数据不能自动新增、停用、改量或改周期补剂计划;明细页明确内容是产品提示而非诊断/训练负荷/恢复分数 |
| R-20 | 提醒规则:按需申请权限、同一时点合并、最多 8 个不同时点、按星期安排建重复通知、计划变更后重建、回到前台重新核对 |
| R-21 | 通知点开:切到今日、关闭其他已打开的界面、高亮对应计划项;冷启动从本机待跳转记录恢复高亮 |
| R-22 | 打卡成功、计划编辑/确认空计划、问元气确认修改后均刷新今日与周计划;App 回前台重新核对提醒并刷新 Apple 健康 |
| R-23 | 打卡失败:撤销本次界面变化并记录可恢复错误;已知缺口:今日页尚未就近展示错误与重试入口,"已经撤销"不等于错误恢复体验完整 |
| R-24 | 登录账号以服务端上下文为权威,不回退到浏览器或本机缓存;未初始化账号显示空计划与引导文案,不把演示数据当个人建议 |
| R-25 | 新增/编辑计划按成分去重(同成分或同剂型不能重复加入);当前计划最多 20 条,异常记录直接忽略 |
| R-26 | 日期与问候按北京时间(东八区)固定计算,打卡日期按北京时间写入 |
| R-27 | 同一「计划项」贯穿今日、周计划、提醒与打卡;删除后重新添加视为新的计划项,不复用旧打卡历史 |
5. 数据与状态
5.1 全局对象
| 对象 | 用户看到的含义 | 归属与规则 |
|---|---|---|
| 当前计划 | 用户确认自己在吃的补剂记录 | 已确认状态存于账号数据;确认的空计划也是有效状态 |
| 今日打卡 | 某条计划在某一天的完成/跳过状态 | 按「计划项 + 日期」保存到账号;游客仅本机显示 |
| 今日事件 | 用户明确描述的昨晚或今天的一次性事实 | 登录账号按日保存;只影响当天建议 |
| Apple 健康摘要 | 睡眠、训练、圆环、步数/距离、静息心率、HRV 的每日摘要 | 本机计算与回显;云同步默认关闭、按账号显式开启 |
| 今日行动 | 服务端事件驱动的确定性行动卡 | 按当日事件生成,仅当天有效 |
| 计划核对项 | 只针对当前计划的核对内容 | 安全优先,最多 3 条 |
5.2 跨页刷新
| 触发 | 刷新内容 |
|---|---|
| 今日打卡成功 | 刷新今日与周计划 |
| 周计划打卡成功 | 刷新今日与周计划 |
| 计划编辑 / 确认空计划 / 移除记录 | 刷新今日与周计划 |
| 问元气确认修改 | 刷新计划、今日、周计划、健康模型 |
| 通知点开 | 切到今日、关闭其他已打开的界面、高亮对应计划项 |
| App 回到前台 | 重新核对本地提醒 + 刷新 Apple 健康 |
6. 异常与边界
| 异常/边界 | 当前行为 |
|---|---|
| 无 Apple 健康 | 状态卡给出连接入口,点按进健康数据来源 |
| Apple 健康有部分数据 | 只显示读到的指标,缺失项不写成异常 |
| 今天有训练记录 | 状态等级仍由恢复信号决定;卡片显示当日训练事实并给出与恢复状态一致的参考建议;明细按天显示完整训练摘要 |
| 今天只有活动圆环记录 | 单独显示圆环分钟并用于调整参考建议,不冒充训练记录 |
| 今天只有步数或距离 | 只在事实区展示,不当作已完成训练,也不改变参考建议 |
| 训练与活动圆环同时存在 | 两种分钟分别展示,并明确不相加 |
| 只有昨天或更早的运动 | 只留在近期运动明细,不进入今天的事实区或参考建议 |
| 无运动记录或数据缺失 | 不显示空的今日运动事实区或近期运动列表,也不写成"当天没有运动" |
| 无计划且未确认 | 提供「添加记录」和「确认没有在吃」两个选择 |
| 已确认空计划 | 提供单一「添加记录」入口 |
| 有计划但今天无安排 | 显示明确空状态("今天没有安排的补剂") |
| 今日行动为空 | 不显示该模块 |
| 计划核对为空 | 不显示该模块 |
| 打卡失败 | 撤销该条完成状态;不显示假成功;错误记录到页面错误状态 |
| 打卡失败展示(已知缺口) | 今日界面尚未就近显示该错误和重试入口;"已经撤销"不等于错误恢复体验完整 |
| 未初始化账号 | 返回空计划与"完成生活方式初筛后…"引导文案,不把演示数据当个人建议 |
| 本地与云端上下文冲突 | 登录账号以服务端上下文为权威,不回退本机缓存 |
| 通知权限被拒 | 提醒设置页提示前往系统设置;开启提醒的请求失败时保存流程给出可理解错误 |
7. 关联模块
| 模块 | 关系 |
|---|---|
| 资料库 | 新补剂探索只在资料库;今日「可进一步了解」只服务于当前计划,不承担推荐 |
| 问元气 | 今日事件由问元气以动作卡形式确认后写入,驱动「今天记得做什么」;问元气确认修改后刷新今日/周计划/健康模型 |
| 我的 / 提醒 | 提醒设置、通知权限、是否在通知中显示补剂名称、健康数据来源与账号摘要同步开关均在我的页管理 |
| Apple 健康 | 状态卡、运动事实区、近 28 天明细全部来自本机摘要;云同步只影响账号摘要与问元气可用范围,不影响本机回显与建议 |
| 周计划 | 同一份当前计划与打卡数据;今日打卡与周计划打卡互相同步刷新 |
8. 验收要点(现状基线)
以下为当前实现已验证到位的现状基线,任何改动不得破坏:
- 五状态与两层规则:一次训练/圆环/步数/距离不改变状态等级;训练或圆环只调整本卡建议。
- 事实区口径:训练时长与圆环分钟不相加;步数/距离不是训练;昨天的运动不进今天;缺失不写成"没有运动"。
- 打卡闭环:登录按「计划项 + 日期」保存并刷新今日与周计划;游客仅本机;失败撤销本次变化且不显示假成功。
- 补剂三态:未确认 → 两个互斥选择;已确认空计划 → 单入口;有计划 → 管理 + 到期打卡 + 今日无安排空态。
- 今日行动:服务端事件行动优先,本地回退有限且与状态卡建议分工明确(不重复快走、保留日间户外)。
- 计划核对:只针对当前计划、安全优先、最多 3 条、进入编辑/详情而非自动修改。
- 提醒:同一时点合并、最多 8 个时点、通知点开回到今日并高亮。
- 跨页刷新:打卡、计划编辑、问元气确认修改后今日与周计划一致;回到前台重新核对提醒与健康数据。
- 未初始化账号不展示演示计划;登录账号不回退本地缓存。
9. 迭代记录
本节保留「今日功能迭代记录」的有效结论(该文件保持原样,不在此重复全文)。
9.1 当前状态
已实现待验收。今日功能从补剂任务列表升级为连续的每日入口:身体状态 → 今日行动 → 补剂执行 → 进一步核对。
9.2 已进入实现的能力
- Apple 健康只读睡眠、步数、运动记录、Apple 活动圆环运动分钟、步行与跑步距离、活动能量、静息心率和 HRV。
- 运动记录在本机按日汇总为训练次数、训练总时长、训练类别及类别时长;原始训练、轨迹和逐笔样本不上传。
- 本机合并每日摘要,使用近 28 天个人基线生成可解释状态。
- 今日状态覆盖稳定、留意、放慢、数据不足和尚未连接;状态卡采用两层规则,运动本身不改变等级。
- 卡片新增"今日运动参考"事实区:训练次数、时长和类别与活动圆环分钟、步数、步行/跑步距离分开回显;只读今天摘要,训练时长与活动圆环分钟不相加。
- 本地事实回显和参考建议不依赖账号摘要同步;步数或距离只作为事实,不当作已完成训练,也不改变建议。
- 当天已有训练或活动圆环记录时,本地画像回退不再重复展示快走行动;户外时间不足对应的日间户外建议保持独立。
- 当前补剂、今日安排、打卡、提醒和进一步了解都以同一「计划项」为纽带。
- 本地补剂提醒支持按需申请权限、同时间合并、八个时点上限和通知回到今日。
- 计划核对只针对当前已确认计划,安全核对优先。
- 登录账号的结构化健康摘要同步默认关闭;用户按账号明确开启后,才加密同步最近 35 天摘要。切换账号不沿用上一账号的选择。
9.3 仍未完成的验收
- 使用真实 Apple Watch 隔夜数据验证跨午夜睡眠合并和多来源去重。
- 使用 Apple Watch、iPhone 或其他已授权来源的真实训练,验证运动权限升级、按开始日期归日、训练类别、时长、步行/跑步距离以及多来源同时存在时的结果。
- 验证只有活动圆环运动分钟、只有训练记录、两者同时存在和两者都缺失;两种分钟不得相加,缺失不得写成"没有运动"。
- 在真实 iPhone 完成或读取一条当天训练后返回前台,验证今日状态卡、今日运动事实区与近期运动明细同时刷新且内容一致;真机实际运动尚未验收。
- 在稳定、留意、放慢和信息不足四种恢复状态下,分别走查有训练、只有活动圆环、只有步数/距离、昨天才有运动和全部缺失,确认恢复提示优先且不会误导追加运动。
- 验证账号摘要同步默认关闭、同意按账号与版本隔离、切换账号不继承开关,以及关闭同步与删除云端摘要的差异。
- 验证停止读取、删除本机摘要、删除云端摘要和再次连接的完整恢复路径。
- 在真机验证通知授权、合并通知、锁屏隐私、点按跳转和账号切换后的重建。
- 在真实 iPhone、320×568 和 VoiceOver 下完成今日首屏走查,覆盖长训练类别、多次训练与三项活动指标;本轮已完成 iPhone 17e 的浅色、深色和辅助功能超大字体渲染核对。
- 今日打卡失败目前会撤销状态,但页面尚未就近展示错误和重试入口。
未完成以上验收前,本轮不能标为 已上线。
9.4 当前有效决策
- 今日状态是可解释的产品提示,不是医学诊断或恢复百分比。
- 缺失、部分或过期数据不能被表现成健康异常。
- 两层规则:恢复状态仍由睡眠、睡眠时段、静息心率和 HRV 判断;只有当天训练记录或活动圆环记录可以调整卡片内的本地参考建议,不能改变状态等级或覆盖恢复提示。
- 今日运动事实区只使用当天摘要;训练次数、总时长、类别、活动圆环分钟、步数和步行/跑步距离分口径展示;步数或距离不等于训练,昨天的运动不进入今天建议。
- Apple 活动圆环运动分钟和训练记录时长分别呈现,不相加;没有训练记录不等于没有运动。
- 本地回显和参考建议不要求开启云同步;云同步仍默认关闭并按账号显式同意,只影响账号摘要与问元气可用范围。
- 今日状态与运动参考只能调整本卡的一条即时提示,不能自动新增、停用、改量或改周期补剂,也不把运动摘要写成计划任务。
- 今日最多展示三项具体行动(注:当前服务端事件行动上限为 6 条,与"最多三项"的旧表述存在出入,是否收紧待确认);没有足够依据时减少数量。
- 新补剂探索只在资料库;今日的"可进一步了解"只服务于当前计划。
- 当前正式产品不使用人物或情绪插画;重新启动插画方向时必须作为独立视觉课题评审。
- 2026-08-13 已确认重新启动"今日状态元气体"视觉课题:只把三块品牌形体作为状态卡内容插图,不引入人物情绪,不替代品牌 Logo;状态仍由文字和确定性规则完整表达。
9.5 已验证证据(摘要)
- 2026-08-12 服务端相关测试 6 项通过(加密摘要保存/读取/导出/删除/字段一致性/旧摘要兼容)。
- 2026-08-11 历史记录:37 项 iOS 测试(模拟器);2026-08-12 本轮 47 项;2026-08-13 运动感知今日状态领域 9 项 + 全量 56 项、57 项、49 项等,分别覆盖运动不改变恢复等级、建议优先级、步数不冒充训练、昨天运动不进今天建议、数据不足保守建议、缺失不写"没有运动"、已有训练不重复快走、五态元气体视觉与无障碍降级等。
- 已有多台设备(配对 iPhone 15 Pro)的真机构建、无线覆盖安装与启动证据(Apple 健康数据权限与签名有效);该证据确认发布链路,不替代真机运动权限、真实训练数据与 VoiceOver 的逐项验收。
- 完整证据清单以《今日功能迭代记录》为准。
今日功能迭代记录
本文目录
1. 本轮目标2. 已进入实现的能力3. 仍未完成的验收4. 当前有效决策5. 已验证证据最近更新:2026-08-13 <br>当前状态:已实现待验收本文只保留“今日”功能的当前实施范围、未完成验收和有效产品决策。完整现状逻辑见今日产品逻辑,视觉要求见视觉设计规范,交互验收见交互规范。
1. 本轮目标
把今日从补剂任务列表升级为连续的每日入口:
身体状态 → 今日行动 → 补剂执行 → 进一步核对用户打开页面后依次看见:
- 日期与问候。
- 今日状态。
- 正在吃的补剂。
- 今天记得做什么。
- 可进一步了解。
2. 已进入实现的能力
- Apple 健康只读睡眠、步数、运动记录、Apple 活动圆环运动分钟、步行与跑步距离、活动能量、静息心率和 HRV。
- 运动记录在本机按日汇总为训练次数、训练总时长、训练类别及类别时长;原始训练、轨迹和逐笔样本不上传。
- 本机合并每日摘要,使用近 28 天个人基线生成可解释状态。
- 今日状态覆盖稳定、留意、放慢、数据不足和尚未连接。
- 今日状态卡已经采用两层规则:恢复等级仍由睡眠、睡眠时段、静息心率和 HRV 决定;本机只用当天训练记录或活动圆环记录调整参考建议,运动本身不改变等级。
- 卡片新增“今日运动参考”事实区:训练次数、时长和类别与活动圆环分钟、步数、步行/跑步距离分开回显;只读今天的摘要,训练时长与活动圆环分钟不相加。
- 本地事实回显和参考建议不依赖账号摘要同步;步数或距离只作为事实,不当作已完成训练,也不改变建议。
- 当天已有训练或活动圆环记录时,本地画像回退不再重复展示快走行动;户外时间不足对应的日间户外建议保持独立。
- 当前补剂、今日安排、打卡、提醒和进一步了解共享同一个计划项标识。
- 本地补剂提醒支持按需申请权限、同时间合并、八个时点上限和通知回到今日。
- “可进一步了解”区只针对当前已确认计划,安全核对优先。
- 登录账号的结构化健康摘要同步默认关闭;用户按账号明确开启后,才按摘要规则版本加密同步最近 35 天摘要。切换账号不沿用上一账号的选择。
3. 仍未完成的验收
- 使用真实 Apple Watch 隔夜数据验证跨午夜睡眠合并和多来源去重。
- 使用 Apple Watch、iPhone 或其他已授权来源的真实训练,验证运动权限升级、按开始日期归日、训练类别、时长、步行/跑步距离以及多来源同时存在时的结果。
- 验证只有活动圆环运动分钟、只有训练记录、两者同时存在和两者都缺失;两种分钟不得相加,缺失不得写成“没有运动”。
- 在真实 iPhone 完成或读取一条当天训练后返回前台,验证今日状态卡、今日运动事实区与近期运动明细同时刷新且内容一致;真机实际运动尚未验收。
- 在稳定、留意、放慢和信息不足四种恢复状态下,分别走查有训练、只有活动圆环、只有步数/距离、昨天才有运动和全部缺失,确认恢复提示优先且不会误导追加运动。
- 验证账号摘要同步默认关闭、同意按账号与版本隔离、切换账号不继承开关,以及关闭同步与删除云端摘要的差异。
- 验证停止读取、删除本机摘要、删除云端摘要和再次连接的完整恢复路径。
- 在真机验证通知授权、合并通知、锁屏隐私、点按跳转和账号切换后的重建。
- 在真实 iPhone、320×568 和 VoiceOver 下完成今日首屏走查,覆盖长训练类别、多次训练与三项活动指标;本轮已完成 iPhone 17e 的浅色、深色和辅助功能超大字体渲染核对。
- 今日打卡失败目前会回滚状态,但页面尚未就近展示错误和重试入口。
未完成以上验收前,本轮不能标为 已上线。
4. 当前有效决策
- 今日状态是可解释的产品提示,不是医学诊断或恢复百分比。
- 缺失、部分或过期数据不能被表现成健康异常。
- 当前采用两层规则:恢复状态仍由睡眠、睡眠时段、静息心率和 HRV 判断;只有当天训练记录或活动圆环记录可以调整卡片内的本地参考建议,不能改变状态等级或覆盖恢复提示。
- 今日运动事实区只使用当天摘要。训练次数、总时长、类别、活动圆环分钟、步数和步行/跑步距离分口径展示;步数或距离不等于训练,昨天的运动不进入今天建议。
- Apple 活动圆环运动分钟和训练记录时长分别呈现,不相加;没有训练记录不等于没有运动。
- 本地回显和参考建议不要求开启云同步。云同步仍默认关闭并按账号显式同意,只影响账号摘要与 Agent 可用范围。
- 今日状态与运动参考只能调整本卡的一条即时提示,不能自动新增、停用、改量或改周期补剂,也不把运动摘要写成计划任务。
- 今日最多展示三项具体行动;没有足够依据时减少数量。
- 新补剂探索只在资料库;今日的“可进一步了解”只服务于当前计划。
- 当前正式产品不使用人物或情绪插画;重新启动插画方向时必须作为独立视觉课题评审。
- 2026-08-13 已确认重新启动“今日状态元气体”视觉课题:只把三块品牌形体作为状态卡内容插图,不引入人物情绪,不替代品牌 Logo;状态仍由文字和确定性规则完整表达。
5. 已验证证据
- 2026-08-12 本轮服务端相关测试 6 项通过,覆盖带运动字段的加密摘要保存、读取、导出、删除、字段一致性校验和旧摘要兼容。
- iOS 工程已经包含 Apple 健康读取能力、通知服务和相关页面。
- 2026-08-11 的历史记录显示:37 项 iOS 测试在 iPhone 17 Pro 模拟器通过;随后另行完成配对 iPhone 15 Pro 的真机构建、覆盖安装和启动。两者是独立证据,不能把模拟器测试写成真机测试。
- 2026-08-12 本轮 iOS 自动测试共 47 项通过,覆盖运动摘要聚合与分类、旧摘要兼容、账号级显式同步同意以及周计划安排数据。
- 已在独立的 iPhone 17e 模拟器核对 Apple 健康数据源页面:运动记录、活动圆环运动分钟、步行与跑步距离等读取范围可见,账号摘要同步初始为关闭。模拟器不能替代真实 Apple 健康运动权限与 Apple Watch / iPhone 训练数据验收。
- 2026-08-13 已完成配对 iPhone 15 Pro 的真机构建、覆盖安装和启动,Apple 健康权限配置与开发签名均通过;尚未据此标记运动授权、真实训练记录或多来源结果为已验收。
- 2026-08-13 今日状态卡已实现五种可缩放元气体、浅深色适配、动态字体纵向重排、降低透明度降级、无需颜色区分的形体描边,以及 iOS 26 详情控件 Liquid Glass;iPhone 17e 模拟器已逐一渲染五种状态,并核对深色模式与辅助功能超大字体布局;本轮 47 项 iOS 测试通过。尚未完成真机触控、提高对比度与最大动态字体的最终验收。
- 2026-08-13 继续细化五态组件:补齐 48 pt 紧凑变体、44 pt 详情触控范围、辅助功能大字纵向重排、卡片按压反馈、降低透明度的实体色降级,并把每种状态的最大块、展开距离、层级和轮廓定义为可测试视觉签名。已在 iPhone 17e 模拟器逐一核对五态总览、深色高对比、最大辅助功能字号,以及降低透明度、无需颜色区分和降低动态效果组合;本轮 49 项 iOS 测试全部通过。
- 2026-08-13 本轮五态状态卡已完成配对 iPhone 15 Pro(iOS 27.0 Beta)的真机签名构建、无线覆盖安装和启动。初次局域网安装因开发连接服务占用失败,重建连接后设备连续保持在线,应用安装成功、启动成功,并已在设备进程列表确认应用正在运行。此证据确认签名、无线发布和启动链路,不替代五种状态的真机逐一视觉与触控验收。
- 2026-08-13 运动感知今日状态领域相关 9 项测试通过,覆盖运动不改变恢复等级、训练/活动圆环的建议优先级、步数或距离不冒充训练、昨天运动不进入今天建议、数据不足时使用保守建议,以及缺失不写成“没有运动”;同次 iOS 全量 56 项测试通过。
- 2026-08-13 在最终“今日运动参考”UI 与行动去冲突规则完成后,iPhone 17e 模拟器全量 57 项测试通过、0 失败、0 跳过;新增用例确认当天已有训练时不再重复展示快走,同时保留独立的日间户外建议。
- 2026-08-13 已在 iPhone 17e 模拟器实际渲染最终运动事实区,核对浅色、深色和辅助功能超大字体下的训练摘要、活动圆环、步数、距离及“不相加”说明。当前仍无真机实际运动和 VoiceOver 完整走查证据。
- 2026-08-13 最终代码已完成真机签名构建,Apple 健康权限配置、开发证书和描述文件均有效,构建成功。首次覆盖安装时设备连接服务异常,恢复连接后已完成安装与启动;过程中的首次离线状态已保留作验收记录。
- 2026-08-13 测试机恢复连接后,最终开发版已成功覆盖安装并启动:设备为 iPhone 15 Pro“华人牌傻妞”,未清除现有用户数据。该证据仅代表开发版真机发布与启动链路通过,真实 Apple 健康训练数据、权限变化和 VoiceOver 仍需在设备上继续走查。
这些记录证明实现链路存在,不替代本节列出的真机视觉、权限和恢复路径验收。
周计划 · 模块定位
周计划用「四时段 × 七天」的周概览回答「这周整体怎么安排、执行得怎样」。它只读取已确认的当前计划,是今日打卡的另一种视角,不引入新的计划来源;需要登录。
周概览
早/午/下午/晚 × 周一至周日;表头和有安排的格子只导航到单日,完成/跳过/撤销仍在单日执行;无障碍大字号按日纵向排列,读取同一份数据。
单日安排与打卡
展示当天安排;完成/跳过/撤销三态;跳过不改长期计划、不改剂量。
应完成统计
统计周一至今天所有已安排次数;已完成/已跳过只统计应完成范围;未来日期不计入、不可打卡。
空态
无计划时只提供「添加记录」入口,不展示任何推荐填充。
周计划 · 核心业务流程
周计划的形成与执行
只取已确认的当前计划;按计划周期映射到七天 × 四时段(早/午/下午/晚),一项只属一个时段
统计周一至今天所有已安排次数;已完成/已跳过只统计应完成范围;未来日期不计入
周概览只导航,完成/跳过/撤销在单日执行;校验:已登录、今天或过去 7 天、仍在当前计划、当日确有安排
更新该事项与统计;其他事项不受影响
保留服务端真实状态,提供重试读取
关键业务规则速览
该模块最核心的规则,完整 23 条在「业务规则库」分页。
与其他模块的联动
周计划产品需求文档(PRD)
本文目录
1. 需求概述1.1 模块定位1.2 用户价值1.3 范围与边界2. 用户与使用场景3. 功能需求3.1 进入条件与登录3.2 当前信息结构3.3 周计划如何形成(数据来源)3.4 应完成统计3.5 周概览与单日操作3.6 周复盘(边界说明)3.7 Web 兼容端差异4. 业务规则5. 数据与状态5.1 全局对象5.2 跨页刷新6. 异常与边界7. 关联模块8. 验收要点(现状基线)9. 迭代记录(2026-08-12 周概览迭代)9.1 已实现9.2 尚未完成的验收9.3 当前验证证据文档状态:现状(核对日期 2026-08-13) | 产品端:原生 iOS,Web 为线上兼容端
1. 需求概述
1.1 模块定位
「周计划」把用户已经确认的当前计划按本周七天展开,用于查看安排和补记执行情况(完成 / 跳过 / 撤销)。它以四时段 × 七天的课程表式周概览为第一视图,再进入单日打卡。
周计划只呈现用户已确认的当前计划;推荐、待确认修改、资料库内容都不是本周安排,不会出现在这张表里。
1.2 用户价值
- 一眼看清本周早、午、下午、晚四个时段的补剂安排,不再逐日回忆"今天该吃什么"。
- 支持按"事项 + 日期"补记执行情况(完成 / 跳过 / 撤销),与今日打卡共用同一份数据。
- 提供应完成 / 已完成 / 跳过的本周执行汇总,帮助用户了解执行情况;它只是执行次数,不是服从率诊断、健康评分或效果判断。
1.3 范围与边界
- 范围:本周日期范围与说明、应完成/已完成/跳过汇总、周概览/单日分段、四时段 × 七天课程表、单日打卡(完成/跳过/撤销)、未来日期边界、空态与失败重试。
- 边界:
- 需要登录,游客不可用:游客点按周计划时先打开登录层,登录成功后自动继续进入周计划。
- 周计划不直接编辑计划;整周为空时的「添加记录」打开统一计划管理,已有安排时从今日或提醒设置进入管理。
- 当前只提供本周七天视图,不提供跨周历史图表。
- 课程表是四时段概览,不按具体提醒分钟拆行,也不把一条事项复制到多个时段。
- 「跳过」只表示该次没有执行,不自动删除长期计划,也不自动调整剂量。
- 周复盘(健康模型域的生活方式实验周复盘)当前不在本模块内,见 3.6。
2. 用户与使用场景
| 场景 | 前置条件 | 登录要求 | 主要路径 |
|---|---|---|---|
| 查看本周整体安排 | 当前计划已确认且有时间/频次 | 游客不可用 | 周计划 → 周概览(默认) |
| 查看某一天并补记执行 | 当前计划已确认 | 游客不可用 | 周概览点日期表头/有安排格子 → 单日 → 完成/跳过/撤销 |
| 补记今天的安排 | 当前计划已确认,今天有到期项 | 游客不可用 | 周计划 → 单日(预选今天)→ 打卡 |
| 游客尝试进入周计划 | 未登录 | 打开登录/注册层 | 登录成功后自动继续进入周计划 |
| 查看本周执行汇总 | 当前计划已确认 | 游客不可用 | 周计划顶部「应完成/已完成/跳过」 |
| 整周无安排时添加记录 | 已登录,已确认空计划或无时间频次记录 | 游客不可用 | 周计划 → 空态 → 添加记录 → 计划管理 |
| Web 端使用周计划 | 已登录 | 未登录显示登录门槛 | 课程表 → 点选事项 → 底部操作单打卡 |
3. 功能需求
3.1 进入条件与登录
入口:底部导航「周计划」Tab。
主流程:登录账号直接进入;游客点按周计划时,记录目标 Tab 并打开登录/注册界面;登录成功后自动继续进入周计划(Web 端登录成功后恢复账号数据再进入页面)。
状态与已知缺口:当前 iOS 18 以上导航层会先改变自身的 Tab 选中值,再请求登录;取消登录后没有显式恢复视觉选中项,可能造成视觉 Tab 与当前页面不一致。这是现状缺口,不是目标交互(目标交互:取消登录应回到原 Tab)。
3.2 当前信息结构
- 本周日期范围(如 8.11 – 8.17)和说明。
- 应完成、已完成、跳过三项汇总。
- 「周概览 / 单日」分段选择,默认进入周概览。
- 周概览:早、午、下午、晚四个时段 × 周一至周日七列,展示整周安排。
- 单日视图:日期选择器、当前选中日期的计划卡片和打卡操作。
首屏与日期记忆:页面首次加载时预选今天,但仍停留在周概览;点按周概览中的日期表头或有安排的格子,会选中对应日期并切换到单日视图;也可直接用分段控件切换。刷新时优先保留原选中日期,找不到时回到今天。
无障碍:普通动态字体下,周概览是可横向滚动的课程表;进入系统超大字号后,自动改为按日期纵向排列,每一天完整列出"时段、事项、状态",不压缩成难以阅读的小格子。
3.3 周计划如何形成(数据来源)
- 数据源只取用户已确认的当前计划。
- 每条记录按计划周期决定本周哪些天出现(每日 / 工作日 / 隔日 / 周末)。
- 每条记录只属于一个时段(早晨/午间/下午/晚上),再映射到对应日期的对应时段;同一事项不会跨时段合并。
- 周概览以「时段 × 日期」的格子为准;一个格子可以有多条事项,空格只表示该日期与时段没有已确认安排。
- 时间或频次为「未说明」的仅记录项目不会伪造成日历安排(不进周表,也不生成打卡)。
- 同一「计划项」贯穿今日、周计划、提醒和打卡。
3.4 应完成统计
| 指标 | 计算规则 |
|---|---|
| 应完成 | 从本周周一到今天(含今天),所有已安排项目的次数 |
| 已完成 | 应完成范围内标记为已完成的次数 |
| 跳过 | 应完成范围内标记为跳过的次数 |
未来日期不计入应完成,也不显示完成/跳过按钮。汇总只统计"应该发生"的执行结果,同一"计划项 × 日期"只有一条状态,不会重复计数。
3.5 周概览与单日操作
周概览只负责理解和导航:
- 日期表头显示当天事项数量;点按后进入该日。
- 有安排的格子显示事项简称和完成状态(完成对勾 / 跳过减号);点按后进入该日。
- 空格不提供无意义的点击目标。
- 周概览不直接提供完成、跳过或撤销,避免在密集网格中误操作。
单日打卡:对今天或过去日期的每条安排,用户可以:
- 完成;已完成时再次点按为撤销完成。
- 跳过;已跳过时再次点按为撤销跳过。
状态与反馈:
- 打卡支持已完成、已跳过、撤销三种状态。
- 单次更新只禁用正在提交的"事项 + 日期",不锁住其他事项。
- 保存成功后刷新今日与周计划;失败时保留服务端真实状态,在周计划内显示可理解的错误和「重试读取」,不显示已保存结论。
- 未来日期显示"未来安排",不提供打卡操作。
3.6 周复盘(边界说明)
当前「周计划」模块只覆盖补剂安排查看与打卡。健康模型域存在独立的"生活方式实验周复盘"概念(按轨道聚合作息例程、实验状态与复盘就绪标记,支持精力/睡眠评分与保持/调整/停止决策),但它不在当前周计划页面呈现,也未与补剂周计划合并。是否在周计划页接入实验周复盘:待确认。
3.7 Web 兼容端差异
- 无「周概览 / 单日」分段:直接展示课程表,点选任意事项在底部弹出操作单完成打卡(手机端按天纵排 × 四时段列;宽屏转置为七天列 × 四时段行)。
- 汇总以文字呈现:"已完成 X / 应完成 Y · 已跳过 Z"(iOS 为三项胶囊)。
- 顶部有本周补剂图例;事项卡片可打开"查看依据卡片"。
- 未来日期选中后显示"未来安排会在当天开放记录"。
- 空态文案与 iOS 不同("这一周还没有已确认的补给" + 说明),同样提供添加记录入口。
- 数据与 iOS 同源。
4. 业务规则
| 编号 | 规则 |
|---|---|
| R-01 | 周计划需要登录;游客不可用,点按后先登录,成功后自动继续进入周计划 |
| R-02 | 数据源只取用户已确认的当前计划;推荐、待确认修改、资料库内容不进入本周安排 |
| R-03 | 每条记录按计划周期决定出现日(每日/工作日/隔日/周末);周期无法识别时按每日处理 |
| R-04 | 每条记录只属于一个时段,映射到对应日期的对应时段;同一事项不跨时段合并 |
| R-05 | 时间或频次为「未说明」的仅记录项目不出现在周表,不生成打卡 |
| R-06 | 周概览以「时段 × 日期」格子为准;一个格子可有多项,空格=无安排 |
| R-07 | 同一「计划项」贯穿今日、周计划、提醒与打卡 |
| R-08 | 应完成 = 本周周一到今天的所有已安排次数;未来日期不计入,也不显示打卡操作 |
| R-09 | 已完成/跳过只统计应完成范围内标记为已完成 / 已跳过的次数 |
| R-10 | 打卡校验:必须登录;日期只能是今天或过去 7 天内;对应计划项必须仍在当前计划中;该计划项在所选日期必须确实有安排 |
| R-11 | 打卡状态三态:已完成 / 已跳过 / 撤销;撤销会清除该「计划项 × 日期」的记录 |
| R-12 | 周概览只导航,完成/跳过/撤销只在单日操作 |
| R-13 | 单次更新只禁用正在提交的"事项 + 日期",其他事项可并行操作 |
| R-14 | 保存成功后刷新今日与周计划;失败保留服务端真实状态,周计划内显示错误与「重试读取」 |
| R-15 | 「跳过」只表示该次未执行,不自动删除长期计划,也不自动调整剂量 |
| R-16 | 汇总是执行次数,不是服从率诊断、健康评分或效果判断 |
| R-17 | 课程表与按日纵向概览来自同一份安排数据;布局变化不得造成数量、时段或状态不一致 |
| R-18 | 刷新时优先保留原选中日期,找不到时回到今天 |
| R-19 | 周计划不直接编辑计划;整周为空时的「添加记录」打开统一计划管理,已有安排时从今日或提醒设置进入管理 |
| R-20 | 周概览/单日分段默认进入周概览;点按日期表头或有安排的格子才进入单日 |
| R-21 | 无障碍超大字号下周概览按日纵向排列,提供日期/事项/状态朗读文本 |
| R-22 | 未初始化账号显示空周计划,不把演示数据当个人安排 |
| R-23 | 周复盘(健康模型实验)不在当前周计划模块;是否接入待确认 |
5. 数据与状态
5.1 全局对象
| 对象 | 用户看到的含义 | 归属与规则 |
|---|---|---|
| 当前计划 | 用户确认自己在吃的补剂记录 | 已确认状态存于账号数据;确认的空计划也是有效状态 |
| 周计划安排 | 本周四时段 × 七天的事项表 | 服务端按计划周期与时段生成 |
| 打卡记录 | 某条计划在某一天的完成/跳过状态 | 按「计划项 + 日期」保存到账号;登录账号专用 |
| 本周汇总 | 应完成/已完成/跳过 | 统计周一至今天的执行结果 |
| 健康模型周复盘 | 生活方式实验的周度评估 | 独立于补剂周计划,当前不在周计划页呈现(待确认) |
5.2 跨页刷新
| 触发 | 刷新内容 |
|---|---|
| 周计划打卡成功 | 刷新今日与周计划 |
| 今日打卡成功 | 刷新今日与周计划 |
| 计划编辑 / 确认空计划 / 移除记录 | 刷新今日与周计划 |
| 问元气确认修改 | 刷新计划、今日、周计划、健康模型 |
| 下拉刷新 | 重新读取周计划,尽量保留原选中日期 |
| 通知点开 | 切到今日并高亮对应计划项(打卡仍以今日为准) |
6. 异常与边界
| 异常/边界 | 当前行为 |
|---|---|
| 游客进入周计划 | 打开登录/注册层;登录成功后自动继续进入周计划(Web 为登录门槛页) |
| 取消登录 | 现状缺口:iOS 18+ 可能残留视觉 Tab 与当前页面不一致;目标交互为回到原 Tab |
| 首次读取 | 页面中央显示"正在读取周计划" |
| 整周无安排 | 显示"本周没有安排",说明只有已确认且填写时间与频次的记录才会出现,并提供「添加记录」入口 |
| 单日无安排 | 显示"当天没有安排",提示可回到周概览查看其他日期 |
| 读取或打卡失败 | 在周计划内容旁显示具体错误与「重试读取」;不显示已保存结论 |
| 某条正在更新 | 只禁用该条的完成/跳过按钮,避免重复提交 |
| 未来日期 | 只展示安排,显示"未来安排",不提供打卡操作 |
| 日期超出校验范围(未来或早于 7 天) | 保存被拒绝,显示可理解的错误提示 |
| 对应计划项已不在当前计划 | 保存被拒绝,提示「这一天没有对应的当前安排」 |
| 该计划项在所选日期无安排 | 保存被拒绝,保留服务端真实状态 |
| 下拉刷新 | 重新读取周计划,并尽量保留原选中日期 |
| 课程表与单日/纵向视图 | 使用同一份安排数据,不允许出现数量、时段或状态不一致 |
7. 关联模块
| 模块 | 关系 |
|---|---|
| 今日 | 与周计划共享同一份当前计划与打卡数据;任一入口打卡后双方同步刷新 |
| 计划管理 | 周计划不直接编辑计划;空态「添加记录」打开统一计划管理,已有安排从今日或提醒设置进入 |
| 我的 / 提醒 | 提醒随计划新增、编辑、删除、登录、退出和回前台重新核对;周表不按提醒分钟拆行 |
| 问元气 | 问元气确认修改后刷新计划、今日、周计划与健康模型 |
| 健康模型 | 生活方式实验周复盘为独立域,当前不进入周计划页(待确认是否接入) |
| 资料库 | 新补剂探索在资料库;周计划只展示已确认记录 |
8. 验收要点(现状基线)
以下为当前实现已验证到位的现状基线,任何改动不得破坏:
- 登录门槛:游客不可用,登录成功后自动继续进入周计划。
- 数据源:只取已确认当前计划;未说明时间/频次的记录不进入周表;推荐不进入安排。
- 四时段 × 七天课程表:一个格子可多项;空格无安排;同一事项不跨时段。
- 汇总:应完成 = 周一至今天所有已安排次数;已完成/跳过只统计应完成范围;未来不计入。
- 打卡:三态(完成/跳过/撤销);校验登录、日期范围(今天或过去 7 天)、仍在当前计划、该日确有安排;单项更新不锁其他事项。
- 未来日期只展示、不打卡;失败保留服务端真实状态并提供「重试读取」。
- 保存成功后今日与周计划同步刷新;下拉刷新尽量保留选中日期。
- 无障碍:超大字体切换为按日纵向排列,与课程表来自同一份安排数据。
- 周概览只导航,打卡在单日(iOS);Web 兼容端为课程表 + 底部操作单。
9. 迭代记录(2026-08-12 周概览迭代)
状态:已实现待验收9.1 已实现
- 新增「周概览 / 单日」分段,默认进入周概览。
- 周概览按四时段 × 七天显示现有安排,不改变计划数据本身。
- 点按日期表头或有安排的格子进入对应单日;概览只导航,打卡仍在单日。
- 整周空态、单日空态、读取/打卡错误重试和按"事项 + 日期"的单项更新已分别处理。
- 无障碍动态字体下改为按日纵向排列,并为日期、事项和状态提供 VoiceOver 文本。
9.2 尚未完成的验收
- 在 320×568、390×844 和真实 iPhone 上补充核对课程表横向滚动、底栏安全区与内容截断。
- 使用实际 VoiceOver 朗读、减少动态效果和降低透明度完整走查周概览到单日的焦点顺序。
- 使用真实账号补充覆盖整周为空、单日为空、一个格子多项、单项失败重试,以及完成/跳过后今日与周计划一致。
9.3 当前验证证据
- 2026-08-12 本轮 iOS 自动测试共 47 项通过,覆盖按日期组织、重复格子合并、越界日期不污染空周、跨时段计数、完整日期、未来状态和"事项 + 日期"唯一标识等回归场景。
- 已在独立的 iPhone 17e 模拟器完成一次真实渲染走查:截图导出尺寸 369×800,覆盖浅色/深色、标准字号/超大字号、课程表横向滚动、概览进入未来单日、今日完成与撤销。超大字号会按规则切换为按日纵向概览。
- 2026-08-13 已完成配对 iPhone 15 Pro 的真机构建、覆盖安装和启动;该证据确认测试包可安装运行,不替代课程表在真机尺寸下的逐项视觉与 VoiceOver 验收。
- 无障碍语义快照已核对日期、时段、事项和状态标签;实际 VoiceOver 朗读与上述未覆盖尺寸仍保留为待验收项,因此本轮不标记为
已上线。
资料库 · 模块定位
资料库是补剂的目录、依据与「适不适合我」的判断入口。它帮用户看懂一款补剂是什么、有什么依据、和自己有什么关系,但不推销;需要登录。
搜索与分类浏览
按成分、关注方向分类浏览 45 种补剂;搜索按名称展示结果。
与你匹配
五档固定值 90/75/50/25/0 或「资料不足」;固定平衡档阈值 75,只展示 75/90,最多 5 项,分数降序。
补剂详情
成分、关注方向、研究依据、适用边界与注意事项;证据渐进披露,评价体系未定前不展示证据等级标签。
加入当前记录
必须由用户操作;剂量/时间/频次缺失时如实标「未说明」,不伪造日程、不自动提醒。
安全边界
禁忌、药物相互作用、孕哺用药独立于匹配分;正在吃的同成分不再推荐;低血红蛋白不等于缺铁。
资料库 · 核心业务流程
补剂匹配:画像 → 规则集 → 五档
已确认的结构化画像与目标(本地计算,不调用模型)
45 项补剂各自的显式条件逐项匹配;命中直接映射固定档位 90 / 75 / 50 / 25 / 0,不加权不累计;无专属依据 = 资料不足(不是 0)
只展示 ≥75,最多 5 项,分数降序
禁忌/相互作用/孕哺用药不受分数影响,可推荐性独立判定
关键业务规则速览
该模块最核心的规则,完整 18 条在「业务规则库」分页。
与其他模块的联动
资料库产品需求文档(PRD)
本文目录
1. 需求概述1.1 模块定位1.2 用户价值1.3 范围与边界2. 用户与使用场景3. 功能需求3.1 无搜索时的页面结构(入口:底部导航「资料库」Tab)3.2 搜索(入口:页面顶部系统搜索框)3.3 分类浏览(入口:3.1 的浏览方式与分类列表)3.4 匹配分展示与排序(入口:「与你匹配」区)3.5 补剂详情(入口:点击任意条目)3.6 加入当前记录(入口:详情底部「添加到我的记录」)3.7 证据渐进披露3.8 从资料库发起问元气(入口:底部固定「问元气」)3.9 Web 兼容端差异(线上兼容端)4. 业务规则5. 数据与状态5.1 主要对象5.2 跨页刷新6. 异常与边界7. 关联模块8. 验收要点(现状基线)9. 迭代记录文档状态:现状(核对日期 2026-08-13) | 产品端:原生 iOS,Web 为线上兼容端<br>本文按产品经理视角描述资料库模块当前已实现的业务逻辑与规则。匹配档位、45 项覆盖、冲突优先级等专项细节以补剂匹配规则为准;目录数据与维护规则以补剂数据库说明为准;资料时效性维护见补剂资料库自动维护方案,本文只引用不重复。
1. 需求概述
1.1 模块定位
资料库是元气中「查资料 + 个性化线索」的补剂信息模块:
- 帮助用户查找补剂资料:成分、关注方向、研究来源、适用边界与注意事项。
- 结合用户已确认的画像,展示「与你匹配」的候选条目,帮助用户判断"哪些补剂值得先进一步了解"。
- 衔接「加入当前记录」,把用户确认正在服用的补剂写进当前计划。
资料库不是处方页:匹配分和研究来源都不能直接把条目写进当前计划,只有用户主动确认的记录才会进入计划。
1.2 用户价值
- 检索效率:搜索与「按成分 / 按关注方向」双维度分类浏览,快速定位想了解的补剂。
- 个性化线索:基于已确认的饮食、作息、运动等画像给出匹配分,提示哪些补剂与当前情况相关。
- 决策支持:详情展示关注方向、研究来源、适用边界与注意事项,帮助用户判断"适不适合我、使用前注意什么"。
- 记录衔接:一键把感兴趣的补剂带入计划编辑器,填写真实剂量与时间后确认加入。
1.3 范围与边界
范围:搜索、分类浏览、匹配分展示与排序、补剂详情(成分 / 关注方向 / 研究来源 / 适用边界 / 注意事项)、加入当前记录、从资料库发起问元气、Web 兼容端资料页。
边界:
- 匹配分不是营养缺乏概率、服用后有效概率或医学推荐强度。
- 匹配分在本地按既定规则计算,不经过问元气或大模型;只有用户确认后,新信息才会更新评分所读取的画像。
- 匹配分不代表安全性;禁忌与相互作用在详情和加入记录流程中单独提示。
- 资料详情不直接调整剂量,不替代医生或药师。
- Web 为线上兼容端,结构与 iOS 不同(见 3.9),且不计算匹配值。
- 未收录名称只能作为个人记录保存,不进入自动匹配。
2. 用户与使用场景
资料库需要登录:游客不可用。游客点按资料库 Tab 时打开登录/注册层,登录成功后继续进入资料库(见 R-01)。
| 场景 | 用户 | 目的 | 当前路径 |
|---|---|---|---|
| 查资料 | 正在吃某种补剂的用户 | 了解成分、关注方向、研究来源与使用前注意 | 搜索 → 详情 |
| 个性化发现 | 已完成画像的登录用户 | 想知道结合自己的情况,哪些补剂值得先了解 | 进入资料库 →「与你匹配」 |
| 被建议后核实 | 被医生或家人建议某种补剂的用户 | 查看适用边界与安全提示,再决定是否记录 | 搜索 → 详情 → 加入当前记录 |
| 按维度浏览 | 想系统了解的用户 | 按成分类型或关注方向浏览全部条目 | 浏览方式切换 → 分类列表 → 分类条目 |
| 研究来源核对 | 在意依据的用户 | 主动查看研究来源与安全提醒 | 详情 → 研究来源 |
3. 功能需求
3.1 无搜索时的页面结构(入口:底部导航「资料库」Tab)
自上而下:
- 「正在使用」:当前计划中已有的条目(展示剂量 · 时间)。
- 「与你匹配」:最多 5 条满足当前阈值的候选条目,附匹配分。
- 「浏览方式」:按成分 / 按关注方向分段切换。
- 分类列表:当前浏览维度下的全部分类,显示目录中条目数;进入分类查看该分类下全部条目。
「正在使用」与「与你匹配」互斥去重:当前计划中同成分覆盖键(只合并同营养素/同成分形态)的条目不再出现在匹配候选中。当前仅镁的两种剂型共享覆盖键,普通共同目标不会被当作同一种补剂(R-08、R-09)。
3.2 搜索(入口:页面顶部系统搜索框)
- 主流程:输入关键词 → 本地检索 → 展示结果。
- 检索范围:中文名、英文名、目录分类(成分类型)、关注方向、别名。
- 匹配方式:忽略大小写、音调符号与分隔符差异后,按完全匹配、前缀、包含、子序列依次判断是否命中(命中判定有优先级,不对外展示)。
- 交互:搜索中命中的当前计划条目另列在「正在使用」区;其余结果按名称排序展示在「搜索结果」区。
- 状态:无结果时使用系统搜索空状态。
3.3 分类浏览(入口:3.1 的浏览方式与分类列表)
- 两种维度:按成分(维生素、矿物质、脂肪酸、氨基酸/蛋白/运动营养、益生菌/益生元/膳食纤维、草本、功能性成分等成分类型);按关注方向(日常基础、睡眠与压力、心脏与代谢、肠道与消化、骨骼与肌肉、运动与恢复、精力与认知、眼睛皮肤头发等方向)。
- 切换浏览方式会退出当前已选分类,回到新维度的分类总览。
- 每个分类显示当前目录中的条目数;进入分类后展示该分类下全部条目,并提供「查看全部分类」返回。
3.4 匹配分展示与排序(入口:「与你匹配」区)
- 匹配值由 iOS 本地按既定规则、依据已确认画像计算(R-02~R-06、R-11)。
- 「与你匹配」依次执行:合并本地与云端目录 → 排除不允许进入匹配的条目 → 排除当前计划中同成分覆盖键条目 → 保留平衡档阈值(75 分及以上,即 75 和 90)→ 按分数降序、同分按中文名称排序 → 最多展示 5 条(R-07)。
- 行内只展示最终匹配值(如「匹配 75」)或「资料不足」,不展示规则原因、命中条件或内部依据。
- 页脚说明:匹配分表示基于已记录生活状态的关注优先级;不能确认缺乏,也不等于需要服用。
3.5 补剂详情(入口:点击任意条目)
按以下顺序展示:
- 中文名、英文名、匹配分、成分类型。
- 关注方向。
- 你需要知道。
- 研究来源。
- 是否适合你。
- 使用前注意。
- 添加到我的记录。
研究来源按条目读取:
- 成功:展示具体结论、来源名称与可打开链接,以及必要警示。
- 加载中:显示「正在读取依据…」。
- 失败:说明「研究来源暂时读取失败」并提供重试;不影响基础条目信息展示。
- 个人自定义记录没有研究依据卡,详情不展示研究来源(R-16)。
3.6 加入当前记录(入口:详情底部「添加到我的记录」)
- 条目已在当前计划中时,不显示加入按钮。
- 点按后先关闭详情,再打开计划编辑面板,并预选该补剂。
- 用户仍需填写或确认:实际剂量、每次数量、服用方式、时段、频次、品牌/备注,以及是否开启提醒(提醒需先有明确时间与频次)。
- 保存前显示完整预览(剂量 · 数量 · 频次 · 时段 · 服用方式),确认后(「确认加入当前计划」)才加入;编辑已有记录为「确认修改」。
- 加入成功后同步刷新今日/周计划(见第 5 章)。
- 未收录的名称只能从计划编辑器作为个人记录保存;它不是资料库自动补全出的标准成分,也没有研究依据卡(R-16)。
3.7 证据渐进披露
- 在补剂评价体系尚未完整定义前,列表和详情不展示「研究结果不一」等风险或证据等级标签。
- 研究来源与必要安全提醒仍可在用户主动打开详情时呈现(研究来源、使用前注意两节)。
3.8 从资料库发起问元气(入口:底部固定「问元气」)
- 从资料库打开问元气时,问元气知道当前在资料库,可结合当前页面理解「这个」「那个」等指代。
- 问元气最多结合 8 条当前建议来解析「这两个」等指代;名称、理由或剂量不作为问元气直接采信的事实(R-18)。
3.9 Web 兼容端差异(线上兼容端)
- 入口:Web 资料库同样要求登录。
- 结构:顶部「科学依据」区(健康生活方式依据卡片,非补剂条目)→「我确认正在吃的」→「可以考虑 · 尚未加入」→「按产品名浏览」。
- 「可以考虑」候选按云端规则初排得出,不是 iOS 的匹配分。
- 浏览:按产品分类筛选 + 搜索(名称 / 英文名 / 代码 / 别名包含匹配);无「与你匹配」、无匹配分、无按成分/关注方向双维度切换。
- 详情:使用底部抽屉展示依据卡;行内对「研究有限」条目展示「研究有限」徽标(iOS 列表不展示证据等级标签)。
- 不计算匹配值:Web 端没有五档匹配分逻辑(R-13)。
4. 业务规则
档位定义、冲突优先级、45 项覆盖与案例以补剂匹配规则为准。
- R-01 登录门槛:资料库需要登录;游客点按时打开登录/注册层,登录成功后继续进入资料库;取消登录后没有显式恢复视觉选中项是现状缺口,不是目标交互。
- R-02 五档固定值:匹配值只能是 90(明确依据)/ 75(直接相关)/ 50(间接相关)/ 25(弱相关)/ 0(暂不优先),不产生中间值;没有命中任何有效专属规则时显示「资料不足」;「0」与「资料不足」必须区分——0 是有信息后的判断,资料不足是不知道。
- R-03 匹配值语义:匹配值表示已确认的饮食、生活习惯、持续状态、用药、特殊状态或检查线索,与该项补剂专属规则的相关程度;不是营养缺乏概率、服用后有效概率、诊断/处方/自动服用建议,也不是补剂本身的通用研究评分。
- R-04 决策优先级:同一补剂命中多条规则时按 90 > 75 > 0 > 50 > 25 选中唯一结果规则,条件命中后直接映射为固定档位,不加权、不累计、不用关键词模糊打分;「0 明确暂不优先」可覆盖 50/25 类弱线索,但不能覆盖 90/75 的更强个人依据。
- R-05 条件命中方式:问卷条件按用户明确选择的选项精确命中(如鱼类摄入选择低频选项时才命中鱼油规则);组合条件支持同时满足或任一满足;用药、检查异常、特殊状态只在用户已确认的条目上匹配受控成分;不会在任意对话原文中搜索关键词加分。
- R-06 缺失不等于否定:未回答某问题不等于该信息为「0」,结果应为「资料不足」(例如没有回答鱼类摄入 ≠ 每周吃鱼 0 次 ≠ 鱼油 0 分)。
- R-07 列表阈值与排序:「与你匹配」固定使用平衡档阈值 75(仅 75 和 90 可进入);按分数降序,同分按中文名称排序;最多展示 5 条。
- R-08 同成分覆盖键只合并同形态:同成分覆盖键只有在人工确认属于同一营养素或同一成分覆盖关系时才共用;当前仅镁的两种剂型(镁、苏糖酸镁)共用同一覆盖键;仅共享关注目标的两条补剂不会被去重或替代。
- R-09 正在用某镁不再推荐另一种镁:当前计划中已有某同成分覆盖键条目时,资料库不推荐、详情不显示加入按钮、计划编辑器禁止重复加入另一种同成分覆盖键补剂。
- R-10 安全禁忌独立于分数:匹配分不表示安全性;不允许进入匹配的条目不进入匹配候选;已在当前计划中的同成分条目不重复推荐;禁忌、药物相互作用、重复成分、剂量与是否允许匹配使用独立安全门槛,不能被 90/75 抵消;详情与加入记录流程继续展示必要安全边界;低血红蛋白不等于缺铁,不触发铁剂 75/90;备孕、孕期、哺乳期、用药和明显检查异常仍需专业核对。
- R-11 匹配结果随画像更新:匹配分基于当前已确认画像计算;已确认问卷答案、画像字段(性别/检查线索/用药/特殊状态)、已确认当前目标、补剂目录或匹配规则版本任一变化后,匹配结果整体重新计算;相同输入下沿用已有结果,单纯打开页面不改变结果,也不调用大模型。
- R-12 问元气与大模型边界:问元气、DeepSeek 或其他大模型不直接决定匹配分,也不能把未确认的对话内容直接变成 90/75;问元气只能生成候选信息,用户确认后保存为画像事实,再由本地既定规则计算匹配分。
- R-13 Web 不计算匹配值:Web 兼容端没有五档匹配逻辑,「可以考虑」候选来自云端规则初排,不能把 Web 的「可以考虑」当作 iOS 匹配分。
- R-14 目录唯一源:补剂目录有唯一维护入口(当前 45 条目录、30 张完整研究依据卡);在线时 iOS 与 Web 以云端目录为准,离线时使用本机内置目录副本;目录更新后需完成校验,并同步更新本机副本。
- R-15 研究来源确定性数据:依据卡按条目确定性组装,不经过模型生成;没有完整依据卡的条目仍可出现在目录中,详情展示「研究有限」的通用资料,不得伪装成完整证据结论。
- R-16 个人记录:未收录名称只能从计划编辑器作为个人记录保存,不进入匹配候选,详情不展示研究来源;元气不会根据个人记录判断它是否适合用户或调整剂量。
- R-17 证据渐进披露:补剂评价体系尚未完整定义前,列表与详情不展示「研究结果不一」等风险或证据等级标签;研究来源与安全提醒在用户主动打开详情时呈现。
- R-18 问元气上下文:从资料库打开问元气时,问元气知道当前在资料库,最多结合 8 条当前建议理解「这个」「那个」等指代;名称、理由或剂量不作为问元气直接采信的事实。
5. 数据与状态
5.1 主要对象
| 对象 | 用户看到的含义 | 当前归属与规则 |
|---|---|---|
| 补剂目录 | 45 条补剂资料(名称 / 成分类型 / 关注方向 / 默认剂量 / 别名) | 云端目录为唯一维护入口;本机内置目录用于离线浏览 |
| 匹配分 | 基于已确认画像的确定性关注优先级(90/75/50/25/0/资料不足) | 本地按既定规则计算;画像或规则版本更新后结果随之更新 |
| 当前计划 | 用户确认正在服用的补剂记录 | 与今日/周计划共用同一份状态;同成分覆盖键去重 |
| 研究依据卡 | 结论、来源名称、来源链接、警示 | 按条目确定性提供;30 张完整卡 + 通用「研究有限」卡 |
| 同成分覆盖键 | 同一营养素/成分覆盖关系的合并标识(只合并同营养素/同成分形态) | 仅镁的两种剂型共用 |
| 规则版本 | 匹配规则集的版本标识 | 规则调整后匹配结果随之更新 |
5.2 跨页刷新
- 加入/修改/删除当前记录后:同步刷新今日与周计划(同一组已确认计划);计划变化同时触发提醒重排(见「我的」PRD R-13)。
- 问元气确认修改后:刷新计划、今日、周计划与健康模型;资料库「正在使用」与「与你匹配」的排除状态随之更新;画像变化后匹配结果重新计算。
- 目录或规则版本更新后:下一次读取匹配值时重新计算。
6. 异常与边界
| 异常 / 边界 | 当前行为 |
|---|---|
| 游客点按资料库 Tab | 打开登录/注册层;登录成功后继续进入资料库 |
| 取消登录 | 回到原内容 Tab;iOS 18+ 导航层视觉 Tab 选中值与实际当前页面可能不一致(现状缺口,非目标交互) |
| 研究来源加载失败 | 详情内显示「研究来源暂时读取失败」并提供重试;基础条目信息不受影响 |
| 条目无完整依据卡 | 展示「研究有限」通用资料,不伪装完整证据结论 |
| 个人记录 | 不读取研究来源,不展示依据卡 |
| 离线浏览 | 使用本机内置目录,可能与云端最新目录存在滞后 |
| 搜索无结果 | 系统搜索空状态 |
| 规则未命中 | 显示「资料不足」,不显示 0 分;只有明确输入表明当前不需要优先考虑时才显示 0 |
| 计划中已有同成分覆盖键条目 | 详情不显示加入按钮;计划编辑器禁止重复加入;匹配候选排除 |
| 匹配输入缺失(未完成画像) | 全部条目为「资料不足」;不因缺少画像而伪造分数 |
7. 关联模块
| 模块 | 关联方式 |
|---|---|
| 今日 | 当前计划来源;加入记录后刷新今日计划与打卡状态 |
| 周计划 | 同一份已确认计划;加入/修改后刷新周概览 |
| 问元气 | 从资料库发起时可结合当前页面与建议理解指代;问元气经用户确认更新画像,进而影响匹配分 |
| Apple 健康 | 不直接参与匹配计算;健康摘要只用于解释生活趋势,不能自动新增、停用、改量或改周期补剂计划 |
| 首次画像 | 提供匹配分所需的已确认问卷答案与画像字段 |
8. 验收要点(现状基线)
以下为当前已实现且已核对的行为,作为回归验收基线:
- 游客点按资料库 → 打开登录层;登录成功进入资料库。
- 无搜索时页面包含:正在使用、与你匹配、浏览方式、分类列表四部分。
- 与你匹配:排除不允许进入匹配与计划内同成分覆盖键条目;仅保留 75/90;分数降序、同分按名称;最多 5 条。
- 搜索覆盖名称/英文名/分类/关注方向/别名,支持忽略大小写、音调与分隔符差异;结果按名称展示。
- 详情按 名称/匹配分/成分类型 → 关注方向 → 你需要知道 → 研究来源 → 是否适合你 → 使用前注意 → 添加到我的记录 顺序展示。
- 研究来源:成功/加载/失败重试三态;个人记录不展示研究来源。
- 已在计划中的条目不显示加入按钮;加入走 计划编辑器预选 → 填表 → 预览 → 确认。
- 列表与详情不展示「研究结果不一」等风险或证据等级标签。
- 45 项规则集中,19 项无有效规则时显示「资料不足」;25 档已设计但暂不启用。
- Web 兼容端:不计算匹配值;分区为 我确认正在吃的 / 可以考虑·尚未加入 / 按产品名浏览。
9. 迭代记录
- 2026-08-12:五档固定匹配规则落地(五档固定值、条件命中、决策优先级、45 项覆盖);补剂目录 45 条、30 张完整研究依据卡;本模块产品逻辑与补剂匹配规则、补剂数据库说明核对完成。
- 2026-08-13:二次核对(目录唯一源、研究来源三态、加入记录流程、Web 兼容端差异)。
未验收项 / 已知缺口:
- 游客取消登录后,iOS 18+ 导航层视觉 Tab 未显式恢复,可能造成视觉选中项与实际当前页面不一致(现状缺口,不是目标交互)。
- 25 档匹配分已设计,但「当前目标」仍是自由文本、没有结构化目标字段,当前不使用关键词把自由文本目标转成 25 分。
- 45 项中 19 项规则集为空(维生素 B 族、硒、维生素 E、维生素 K2、复合维生素、奶蓟草、蔓越莓、苏糖酸镁、NMN、亚精胺、阿克曼菌、PQQ、磷脂酰丝氨酸、R-α-硫辛酸、麦角硫因 + 谷胱甘肽、甜菜碱(TMG)、槲皮素、大豆异黄酮、牡蛎提取物);除非后续同时增加专属输入、受审核规则和回归验证,不得显示个性化数值。
- 补剂资料库自动维护(来源检查、复核队列、人工批准链路)处于规划中,尚未启用自动任务,详见补剂资料库自动维护方案。
- 证据等级标签(如「研究结果不一」)在补剂评价体系完整定义前不进入列表与详情,待评价体系确认后另行评估。
文件级实现地图见《项目架构与文件说明》。
元气补剂匹配规则
本文目录
1. 业务含义2. 五档固定值3. 完整计算过程4. 命中条件怎样判定4.1 问卷字段精确命中4.2 组合条件4.3 已确认的画像文本4.4 缺失不等于否定5. 何时全量重算6. Agent 与规则引擎的边界7. 鱼油 Omega-3 完整案例8. 叶酸案例9. 45 项规则集覆盖9.1 已有可用结构化规则9.2 已显式建档,但当前资料不足10. 列表、阈值与展示11. 安全不进入匹配值12. 科学边界与参考13. 实现与测试状态:现状,原生 iOS 已实施;已分发版本随下一次 iOS 发布更新 <br>规则版本:2026.08.12-v1 <br>适用范围:原生 iOS「资料库 → 与你匹配」 <br>确认日期:2026-08-12本文是补剂匹配值的唯一详细产品逻辑,和资料库产品逻辑一起维护。
1. 业务含义
匹配值表示:用户已确认的饮食、生活习惯、持续状态、用药、特殊状态或检查线索,与某项补剂专属规则的相关程度。
它不是:
- 营养缺乏概率。
- 服用后的有效概率。
- 诊断、处方或自动服用建议。
- 补剂本身的通用研究评分。
用户端列表和详情只展示最终数值,或在无法计算时展示“资料不足”。规则命中条件、内部依据和规则编号不直接显示给用户。
2. 五档固定值
| 结果档位 | 最终值 | 内部业务判断 |
|---|---|---|
| 明确依据 | 90 | 已确认的直接检查线索或明确特殊状态 |
| 直接相关 | 75 | 与该成分直接相关的饮食、日照、用药或训练信息 |
| 间接相关 | 50 | 有持续状态或不完整代理信息,但不能单独指向该补剂 |
| 弱相关 | 25 | 仅有已结构化、已确认的宽泛目标 |
| 暂不优先 | 0 | 已有直接信息表明当前不需要优先考虑 |
| 资料不足 | — | 没有命中该补剂的任何有效专属规则 |
分数只能是 90 / 75 / 50 / 25 / 0,不产生 68、76、85 这类伪精确中间值。0 与“资料不足”必须区分:前者是有信息后的判断,后者是不知道。
25 档已在规则模型里预留,但当前“当前目标”仍是自由文本,没有结构化目标字段,因此 v1 不用关键词把自由文本目标转成 25 分。
3. 完整计算过程
1. 读取某项补剂的版本化专属规则集
2. 使用已确认的结构化画像,逐条判断命中条件
3. 收集全部已命中规则
4. 按决策优先级选中唯一结果规则
5. 把规则档位直接映射为最终值
6. 保存规则版本与选中/命中记录,用于内部审计没有加权、乘法或累计:
最终值 = 选中规则所在档位的固定值同一项补剂命中多条规则时,决策优先级为:
90 明确依据
> 75 直接相关
> 0 明确暂不优先
> 50 间接相关
> 25 弱相关0 放在 50 / 25 之前,是因为“已经记录每周吃鱼至少 3 餐”这类直接信息,应覆盖“想改善精力”这类弱目标。但它不会覆盖检查异常或更直接的个人依据。
4. 命中条件怎样判定
4.1 问卷字段精确命中
问卷条件判断的是结构化选项,不是用户原文:
「每周吃鱼几次」答 0–1 餐
→ 命中「吃鱼偏少」规则
「每周吃鱼几次」答 2 餐
→ 不命中该规则数值区间在问题选项定义时已转成固定选项(例如“0–1 餐 / 周”)。规则引擎不用关键词猜测用户原话。
4.2 组合条件
规则支持“同时满足”和“满足其一”。例如褪黑素的间接相关规则需要同时满足:
通常 01:00 后入睡
并且
每周至少 4 晚存在睡眠困扰4.3 已确认的画像文本
用药、检查异常和特殊状态保存在结构化列表中。因“其他:二甲双胍”包含用户确认的详情,这类字段可在结构化列表内匹配受控成分名。不会在任意对话原文中搜索“累”“鱼”等词并直接加分。
4.4 缺失不等于否定
没有回答鱼类摄入
≠ 每周吃鱼 0 次
≠ 鱼油匹配 0
正确结果 = 资料不足5. 何时全量重算
App 为当前画像下的 45 项结果建立一份本地缓存。以下任一输入改变后,旧缓存失效,下一次读取匹配值时一次性重算完整补剂目录:
- 已确认问卷答案。
- 性别、检查线索、用药或特殊状态等画像字段。
- 已确认当前目标;当前 v1 仅作为缓存版本输入,不直接计分。
- 补剂目录范围。
- 匹配规则版本。
相同画像、相同目录和相同规则版本直接读取缓存。单纯打开页面不会调用模型,也不会为相同输入重复建立分数。
6. Agent 与规则引擎的边界
用户表达
→ Agent 可生成候选结构化信息
→ 用户确认
→ 保存为画像事实
→ 确定性规则引擎全量计算Agent、DeepSeek 或其他大模型不直接决定分数,不能选择规则,也不能把未确认原文直接变成 90 或 75。
7. 鱼油 Omega-3 完整案例
快速画像包含「每周吃鱼几次」:
| 用户选项 | 命中规则 | 最终值 |
|---|---|---|
| 每周 0–1 餐鱼 | 吃鱼偏少 | 75 |
| 每周 2 餐鱼 | 吃鱼一般 | 50 |
| 每周至少 3 餐鱼 | 吃鱼充足 | 0 |
| 没有回答 | 无 | 资料不足 |
例如 35 岁男性,已确认过去 4 周每周吃鱼 0–1 餐:
性别:不是鱼油规则输入
当前目标:自由文本,v1 不计分
吃鱼频率 = 0–1 餐/周:命中「吃鱼偏少」
最终值:75页面只显示“匹配 75”,不显示上述内部原因。
8. 叶酸案例
| 已确认信息 | 结果 |
|---|---|
| 只有男性或女性性别,没有叶酸专属信息 | 资料不足 |
| 深色蔬菜每周 0–2 天 | 75 |
| 深色蔬菜每周 6–7 天,无更强依据 | 0 |
| 已确认备孕或孕期状态 | 90 |
性别本身不是叶酸加分条件。若同时命中“备孕 / 孕期 90”和“蔬菜摄入充足 0”,选择更强的 90 分明确依据。
9. 45 项规则集覆盖
每个补剂都有一个显式规则集。“有规则集”不等于“必须有分数”。
9.1 已有可用结构化规则
| 补剂 | 最高可命中档位 | 当前主要输入 |
|---|---|---|
| 铁 | 50 | 红肉摄入、低血红蛋白线索;两者都不能直接确认缺铁 |
| 维生素 D3 | 90 | 维生素 D 检查线索、日间户外时间 |
| 鱼油 Omega-3 | 75 | 过去 4 周每周吃鱼餐数 |
| 镁 | 50 | 外食频率、持续睡眠困扰;只作为间接线索 |
| 维生素 C | 50 | 深色蔬菜摄入;因未覆盖水果,只作为间接线索 |
| 钙 | 75 | 含钙奶制品频率 |
| 维生素 B12 | 75 | 二甲双胍用药、红肉摄入代理 |
| 叶酸 | 90 | 备孕 / 孕期、深色蔬菜摄入 |
| 锌 | 50 | 持续感冒样状态;原因不特异 |
| 辅酶 Q10 | 50 | 已确认他汀类用药 |
| 褪黑素 | 50 | 长期晚睡与频繁睡眠困扰的组合条件 |
| L-茶氨酸、甘氨酸、南非醉茄 | 50 | 持续睡眠或高压力状态 |
| 叶黄素、虾青素 | 50 | 工作日看屏时间 |
| 氨糖、软骨素、胶原蛋白、姜黄素 | 50 | 运动后关节不适频率 |
| 益生菌、益生元 | 50 | 持续排便不规律 |
| 膳食纤维 | 75 | 深色蔬菜摄入、持续排便不规律 |
| 肌酸 | 75 | 每周运动频率 |
| 燕麦 β-葡聚糖 | 75 | 已确认血脂检查异常 |
| 电解质 | 50 | 运动频率;尚缺时长与出汗量 |
50 分及以下的间接规则不进入当前“与你匹配”默认列表,但在搜索和详情中可显示结果。
9.2 已显式建档,但当前资料不足
以下 19 项在 v1 的规则集为空,不会按分类标签或条目自身热度产生分数:
- 维生素 B 族、硒、维生素 E、维生素 K2、复合维生素。
- 奶蓟草、蔓越莓、苏糖酸镁。
- NMN、亚精胺、阿克曼菌、PQQ、磷脂酰丝氨酸、R-α-硫辛酸。
- 麦角硫因 + 谷胱甘肽、甜菜碱(TMG)、槲皮素、大豆异黄酮、牡蛎提取物。
这些条目仍可作为资料浏览,但除非后续同时增加专属结构化输入、受审核规则和回归测试,不得显示个性化数值。
10. 列表、阈值与展示
“与你匹配”依次执行:
- 合并本机内置目录和服务端返回目录。
- 排除被标记为“不建议匹配”的条目。
- 排除当前计划中同覆盖键条目。
- 使用平衡档阈值
75,只保留 75 和 90。 - 按数值降序;同分按中文名称排序。
- 最多展示 5 项。
三档策略映射为:
| 策略 | 阈值 | 可进入的固定档位 |
|---|---|---|
| 保守 | 90 | 仅 90 |
| 平衡 | 75 | 75、90 |
| 探索 | 50 | 50、75、90 |
当前资料库列表固定使用平衡档。
11. 安全不进入匹配值
匹配值不表示安全性。禁忌、药物相互作用、重复成分、剂量和是否允许匹配使用独立安全门槛,不能被 90 或 75 抵消。
- 被标记为“不建议匹配”的条目不进入匹配列表。
- 已在当前计划中的同成分条目不重复推荐。
- 补剂详情和加入记录流程继续显示必要安全边界。
- 低血红蛋白不等于缺铁,不会触发铁剂 75 或 90。
- 备孕、孕期、哺乳期、用药和明显检查异常仍需要专业核对。
12. 科学边界与参考
- NIH ODS:Dietary Supplements—What You Need to Know:补剂不能代替多样化饮食,也可能带来过量或相互作用风险。
- NIH ODS:Omega-3 Fatty Acids—Health Professional Fact Sheet:鱼类和海产品是 EPA / DHA 的食物来源;饮食信息不等于已确认缺乏。
- NIH ODS:Folate—Health Professional Fact Sheet和Pregnancy—Health Professional Fact Sheet:叶酸食物来源、缺乏风险和备孕 / 可能怀孕场景应分开处理。
- NIH ODS:Vitamin D—Health Professional Fact Sheet和Vitamin B12—Health Professional Fact Sheet:检查、日照、饮食和特定用药是不同强度的个人线索。
13. 实现与测试
文件级实现地图见《项目架构与文件说明》。规则回归测试覆盖:45 项覆盖、叶酸、鱼油、精确条件命中、无依据不评分、画像变化后刷新。
我的 · 模块定位
「我的」管理长期画像、健康数据来源、提醒和账号数据。它回答「元气了解我什么、数据从哪来、我能不能控制」。游客可用,但同步与账号能力就地引导登录。
元气了解的你
长期画像(目标/作息/饮食/咖啡因)、健康目标与科学基线;云端状态优先,科学基线高于个人偏好。
健康数据来源
Apple 健康只读摘要(8 类数据、原始样本不上传);账号摘要同步默认关闭、版本化同意、加密保存最近 35 天、可导出与删除。
提醒设置
同时间多补剂合并提醒,最多 8 个时点;锁屏默认隐藏补剂名称,可主动开启;仅本地通知。
账号与数据
导出数据(带日期)、修改密码(旧登录立即失效)、重新开始(清空账号,二次确认)、退出(保留本机记录)。
外观
跟随系统/浅色/深色,立即生效。
我的 · 核心业务流程
账号摘要同步:从默认关闭到按需开启
账号摘要同步默认关闭;健康摘要只在本机计算,原始样本留在 Apple 健康
版本化同意:切换账号不沿用,摘要规则升级后需重新同意
最近 35 天结构化摘要加密保存到账号,供问元气解释睡眠/运动/恢复趋势
不再上传新摘要,已上传的保留(关闭 ≠ 删除)
同时关闭开关;本机数据不受影响
关键业务规则速览
该模块最核心的规则,完整 22 条在「业务规则库」分页。
与其他模块的联动
我的产品需求文档(PRD)
本文目录
1. 需求概述1.1 模块定位1.2 用户价值1.3 范围与边界2. 用户与使用场景3. 功能需求3.1 身份与同步状态(入口:我的页顶部)3.2 元气了解的你(长期画像查看;入口:我的页)3.3 健康数据来源(入口:我的 → 健康与提醒 → 健康数据来源)3.4 提醒设置(入口:我的 → 健康与提醒 → 提醒)3.5 连接状态(入口:我的 → 连接状态 → 元气服务)3.6 外观(入口:我的 → 外观)3.7 账号与数据(入口:我的 → 账号与数据)3.8 Web 兼容端差异(线上兼容端)4. 业务规则5. 数据与状态5.1 主要对象5.2 跨页刷新6. 异常与边界7. 关联模块8. 验收要点(现状基线)9. 迭代记录文档状态:现状(核对日期 2026-08-13) | 产品端:原生 iOS,Web 为线上兼容端<br>本文按产品经理视角描述「我的」模块当前已实现的业务逻辑与规则。
1. 需求概述
1.1 模块定位
「我的」集中呈现元气长期了解用户的内容、健康数据与提醒来源、账号同步状态和数据控制能力,是用户查看自己画像与数据主权的中枢页:
- 查看与确认长期画像:当前目标、偏好、限制、基础线索与科学基线。
- 管理健康数据来源:Apple 健康授权、本机每日摘要、账号摘要同步。
- 管理提醒与连接状态、设置外观。
- 账号与数据控制:导出、修改密码、重新开始体验、退出登录。
「我的」对游客开放;需要账号的能力(导出、改密、账号摘要同步等)在具体位置引导登录。
1.2 用户价值
- 了解元气记住了什么:长期画像可见、可确认,来源标注「已确认 / 历史记录」。
- 掌控健康数据:明确只读授权、原始样本不上传、本机与云端摘要可分别删除,同步开关默认关闭。
- 提醒可管理:补剂名称是否出现在通知中由用户决定。
- 账号数据自主:导出、改密、重新开始、退出均有明确边界与确认。
1.3 范围与边界
范围:身份与同步状态、元气了解的你(长期画像)、科学基线、健康数据来源(Apple 健康与账号摘要同步)、提醒设置、连接状态、外观、账号与数据控制、Web 兼容端差异。
边界:
- 游客可进入「我的」,但账号能力就地引导登录,游客不展示编造的长期画像。
- 健康数据只读:元气不向 Apple 健康写入训练或其他数据;原始样本留在 Apple 健康。
- 账号摘要同步默认关闭;摘要只解释生活趋势,不能自动新增、停用、改量或改周期补剂计划。
- 本机摘要路径与账号同步路径独立,互不影响。
- 断网、数据缺失、权限未授予不是健康异常,分别呈现当前结果与下一步。
2. 用户与使用场景
| 场景 | 用户 | 目的 | 当前路径 |
|---|---|---|---|
| 查看长期画像 | 登录用户 | 确认元气记住了自己的目标、偏好与限制 | 我的 → 元气了解的你 |
| 连接健康数据 | 首次连接用户 | 授权 Apple 健康只读,让今日状态可用 | 我的 → 健康数据来源 → 连接 |
| 查看数据来源与同步 | 已连接用户 | 查看读取到的类型/来源/更新时间,决定是否同步到账号 | 我的 → 健康数据来源 |
| 管理提醒 | 有补剂计划的用户 | 查看通知权限、决定通知是否显示补剂名称、调整提醒项 | 我的 → 提醒 |
| 检查服务连接 | 遇到同步异常的用户 | 确认元气服务是否可用 | 我的 → 连接状态 → 元气服务 |
| 切换外观 | 所有用户(含游客) | 跟随系统 / 浅色 / 深色 | 我的 → 外观 |
| 导出数据 / 修改密码 | 登录用户 | 备份健康数据、更换密码 | 我的 → 账号与数据 |
| 重新开始 / 退出 | 想重置或换账号的用户 | 清空体验重新开始、退出账号(本机记录保留) | 我的 → 账号与数据 |
| 游客登录引导 | 游客 | 使用同步能力前登录 | 我的 → 登录 / 注册账号 |
3. 功能需求
3.1 身份与同步状态(入口:我的页顶部)
- 登录后:显示「用户 {用户名}」与账号同步状态。
- 游客:显示「元气」与「仅保存在此设备」。
- 同步状态分为:仅保存在此设备(仅本机)、正在同步、已同步到账号、同步失败。
- 进入页面时触发服务连接检查与整体刷新(见 3.5)。
3.2 元气了解的你(长期画像查看;入口:我的页)
- 「当前目标」的读取顺序:登录账号健康模型中的已确认目标 → 首次画像中用户确认的当前目标 → 都没有时显示「无」。
- 登录后依次展示偏好、限制、基础线索,并标记为「已确认」或「历史记录」(历史记录为旧账号迁移数据);健康模型加载中显示加载状态。
- 游客不展示编造的长期画像,而是说明登录后可以整理长期目标、偏好与限制,并提供登录入口。
- 修改方式:长期画像主要通过问元气对话修改,问元气生成待确认修改、用户确认后保存并刷新;本页为查看与状态展示。
- 若存在科学基线,单独展示其标题和说明;个人偏好不能覆盖科学基线。
3.3 健康数据来源(入口:我的 → 健康与提醒 → 健康数据来源)
主流程与交互:
- 连接:首次连接时申请 Apple 健康只读权限;系统授权说明明确包含「运动记录」,只申请读取权限,不申请向 Apple 健康写入训练或其他数据。
- 已连接用户:可「重新读取」;已连接的旧用户可以单独「允许读取运动记录」补充新增运动类型授权;可「前往系统设置」调整权限。
- 数据展示:实际读到的数据类型、来源名称(可能来自 Apple Watch、iPhone 或其他获准写入 Apple 健康的 App)与更新时间;并说明「原始样本保留在 Apple 健康;元气只处理结构化每日摘要」。
- 停止读取(确认):停止后续读取,已读本机摘要保留,除非另外删除。
- 删除本机摘要(确认):删除元气本机保存的每日摘要,不影响 Apple 健康中的原始数据。
- 登录后:显示账号摘要同步状态,提供「同步每日摘要到账号」开关(默认关闭),以及「删除云端摘要」(确认)。
- 游客:显示「登录后可把每日摘要加密同步到账号;原始样本不会上传」。
- 状态:连接状态分为 此设备不支持 / 尚未连接 / 正在读取 / 已读取 / 数据待更新 / 未读取到数据 / 暂时无法读取。
3.4 提醒设置(入口:我的 → 健康与提醒 → 提醒)
- 当前通知权限状态(尚未开启 / 已允许 / 未允许);被拒绝时提供「前往系统设置」。
- 「在通知中显示补剂名称」开关,默认关闭;关闭时锁屏只显示通用到点提醒。
- 「已开启的提醒」列表:展示补剂名、提醒时间与频次;点按进入该计划项编辑。
- 提醒规则见 R-13。
3.5 连接状态(入口:我的 → 连接状态 → 元气服务)
- 「元气服务」由用户主动点按或进入页面时检查,显示 已连接 / 正在检查 / 轻点检查连接 / 具体可恢复错误。
- 该状态只表示服务连接,不证明计划、估值或业务数据一定正确。
3.6 外观(入口:我的 → 外观)
- 跟随系统 / 浅色 / 深色,选择立即影响整个 App。
3.7 账号与数据(入口:我的 → 账号与数据)
登录账号:
- 导出健康数据:生成带日期的数据文件,再由系统分享或保存;导出错误只出现在导出操作旁。
- 修改密码:输入当前密码、新密码(12–64 位,支持中文和空格)与确认;成功后新密码立即生效,其他设备需重新登录。
- 使用与安全。
- 重新开始体验:破坏性确认后清除当前画像、当前计划、对话显示和本机上下文,回到首次使用流程;已登录时同时清空账号画像上下文,失败时同步状态标为失败。
- 退出登录:确认后退出账号同步,载入本机游客记录;明确提示本设备记录会保留。
游客:
- 显示「登录后可导出数据、同步计划」,点按打开登录/注册层。
- 仍可查看使用与安全、重新开始体验和外观设置。
3.8 Web 兼容端差异(线上兼容端)
- Web「我的」没有:健康数据来源(Apple 健康)、提醒、连接状态、账号摘要同步。
- Web「我的」有:身份与同步提示(初始化数据已云端同步 / 账号已注册·完成初始化后数据自动同步 / 数据随账号云端同步)、元气了解的你(目标 / 偏好 / 安全边界 / 当前状态 + 已确认/历史记录标记)、科学基线、外观、导出健康数据、修改密码、重新了解我的情况、退出登录。
- 差异点:Web「重新了解我的情况」直接跳转首次流程,无破坏性确认;iOS「重新开始体验」有破坏性确认。Web 退出登录无确认弹窗,直接登出并返回首页;iOS 有确认弹窗。Web 页脚常驻「本产品提供健康信息参考,不构成医疗建议」提示,iOS「我的」页不常驻同类标签。
4. 业务规则
- R-01 游客可进入:我的页对游客开放,外观、使用与安全、重新开始为本地能力;仅登录可用的能力(导出、改密、账号摘要同步)在页面内引导登录。
- R-02 当前目标读取顺序:登录账号健康模型中的已确认目标 → 首次画像中用户确认的当前目标 → 都没有时显示「无」。
- R-03 账号数据优先:登录账号存在健康模型时以账号数据为准;游客不展示编造的长期画像,只提供登录引导。
- R-04 科学基线高于个人偏好:存在科学基线时单独展示标题与说明,个人偏好不能覆盖科学基线。
- R-05 Apple 健康只读范围:只读睡眠、步数、运动记录、运动分钟(活动圆环)、步行与跑步距离、活动能量、静息心率、HRV;只申请读取权限,不向 Apple 健康写入训练或其他数据。
- R-06 运动摘要口径:运动部分只保留训练次数、训练总时长、训练类别及各类别时长、步行与跑步距离;训练按开始日期归入当天;原始训练、轨迹、逐笔心率和其他原始样本留在 Apple 健康,不上传到元气账号。
- R-07 口径不混淆:训练时长与 Apple 活动圆环运动分钟是两种不同口径,分别展示、不相加;没有运动记录只表示本次没有读到对应数据,不能写成用户当天没有运动;iOS 不能可靠区分用户拒绝读取与确实没有数据,因此产品只说明是否读取到数据,不猜测权限原因。
- R-08 本机路径独立:只要 Apple 健康读取已开启,本机当天摘要就可以直接进入今日状态卡,不要求用户登录或开启账号摘要同步;今日卡的运动事实区分回显训练、活动圆环分钟、步数和步行/跑步距离;恢复等级仍由睡眠、睡眠时段、静息心率和 HRV 决定;只有当天训练记录或活动圆环记录会调整本机参考建议,步数和距离只作为事实,昨天的运动不进入今天建议。
- R-09 账号摘要同步默认关闭:只有登录用户主动打开「同步每日摘要到账号」后才上传结构化摘要;同意状态采用版本化、按账号记忆的设置,切换账号不沿用上一账号的选择。
- R-10 摘要同步范围与加密:开启后最多同步最近 35 天摘要;云端按摘要规则版本加密保存,并与账号、日期、规则版本关联;运动原始样本仍不上传。
- R-11 关闭与删除语义:关闭同步只停止后续上传,不等于删除已同步摘要;「删除云端摘要」成功后会同时关闭该账号的同步开关;开启、关闭或删除云端摘要都不影响本机今日状态与当日运动事实回显;删除云端摘要不删除 Apple 健康原始数据,也不自动删除本机摘要。
- R-12 摘要不自动改计划:账号摘要可以帮助解释生活趋势,但不能自动新增、停用、改量或改周期补剂计划;摘要仅作为问元气的参考输入,不提供原始样本。
- R-13 提醒先有明确时间频次:提醒必须先有明确时间和频次;最多使用 8 个不同提醒时点,多个补剂可以共用一个时点;当前只使用本地通知,不提供通知内打卡或稍后提醒。
- R-14 通知权限与名称披露:通知权限被拒绝时提供前往系统设置;「在通知中显示补剂名称」默认关闭,关闭时锁屏只显示通用到点提醒。
- R-15 服务连接状态语义:「元气服务」由用户主动点按或进入页面时检查,显示 已连接 / 正在检查 / 轻点检查连接 / 具体可恢复错误;该状态只表示服务连接,不证明计划或业务数据一定正确。
- R-16 外观立即生效:跟随系统 / 浅色 / 深色选择立即影响整个 App。
- R-17 导出:仅登录可用;导出为带日期的数据文件(文件名含导出日期),内容包含账号信息、健康模型(目标/偏好/限制/基础线索/科学基线)、历史版本上下文与画像、最近 35 天云端摘要;导出错误只出现在导出操作旁,可重试。
- R-18 修改密码:需输入当前密码、新密码与确认;新密码 12–64 位(支持中文和空格);成功后新密码立即生效、旧密码失效,并刷新账号信息;提示其他设备需要重新登录。
- R-19 重新开始体验:破坏性确认后清除当前画像、当前计划、对话显示和本机上下文,回到首次使用流程;已登录时同时清空账号画像上下文,失败时同步状态标为失败。
- R-20 退出登录:确认后删除本地会话、退出账号同步并载入本机游客记录;提示明确说明本设备记录会保留。
- R-21 破坏性操作分别确认:Apple 健康本机删除、云端删除和停止读取分别确认,不能合并成一个含糊操作;重新开始与退出登录使用不同确认文案,明确各自影响。
- R-22 错误就地呈现:导出错误只出现在导出操作旁,不常驻页面底部;运动权限未授予、数据缺失和同步失败分别显示当前结果及下一步,不把它们写成健康异常或「没有运动」。
5. 数据与状态
5.1 主要对象
| 对象 | 用户看到的含义 | 当前归属与规则 |
|---|---|---|
| 健康模型 | 目标、偏好、限制、基础线索与科学基线 | 登录账号的云端状态;账号数据优先;游客不伪造 |
| Apple 健康本机摘要 | 最近 35 天每日结构化摘要(睡眠/步数/运动/距离/能量/静息心率/HRV) | 保存在本机;原始样本留在 Apple 健康 |
| 账号云端摘要 | 开启同步后上传的加密结构化摘要 | 云端加密保存,最多 35 天 |
| 同步状态 | 仅保存在此设备 / 正在同步 / 已同步到账号 / 同步失败 | 由登录与同步动作驱动 |
| 提醒配置 | 通知权限、显示补剂名称开关、各计划项提醒时间 | 本地通知;最多 8 个时点 |
| 账号会话 | 用户名与登录凭据 | 本机安全存储;修改密码后旧凭据失效 |
5.2 跨页刷新
- 今日状态卡:本机当天摘要直接回显(不要求登录或开启账号同步)。
- 计划变化(新增 / 编辑 / 删除 / 登录 / 退出 / 回到前台):重新核对提醒。
- 问元气确认修改:刷新计划、今日、周计划与健康模型,「元气了解的你」随之更新。
- 通知点开:回到今日并高亮对应计划项。
6. 异常与边界
| 异常 / 边界 | 当前行为 |
|---|---|
| Apple 健康部分数据缺失 | 只显示实际读到的数据类型;缺失不代表用户当天没有运动;不猜测权限原因 |
| Apple 健康未连接 / 离线 | 不是健康异常:今日卡显示「连接 Apple 健康」引导;已读取的缓存摘要仍可查看 |
| 运动权限未授予 | 在健康数据来源页显示当前结果与下一步(前往系统设置 / 允许读取运动记录),不写成「没有运动」 |
| 账号摘要同步失败 | 同步状态显示「摘要同步失败」;不影响本机读取与今日状态;随下一次刷新重试 |
| 导出失败 | 错误只出现在导出操作旁,可重试,不常驻页面底部 |
| 删除云端摘要失败 | 就地提示「暂时无法删除,请稍后重试」;不影响本机摘要 |
| 修改密码输入不一致 / 长度不符 | 表单就地提示(两次输入不一致 / 12–64 位要求);确认按钮禁用 |
| 重新开始体验 | 破坏性确认;已登录时同时清空账号画像,失败则同步状态标为失败 |
| 退出登录 | 确认后停止同步,本机记录保留;载入游客状态 |
| 游客访问登录能力 | 页面内引导登录(导出 / 同步计划 / 账号摘要同步),不阻断本地能力(外观 / 使用与安全 / 重新开始) |
7. 关联模块
| 模块 | 关联方式 |
|---|---|
| 今日 | 本机当天摘要直接进入今日状态卡;运动事实回显;恢复等级口径由睡眠、睡眠时段、静息心率与 HRV 决定 |
| 周计划 / 当前计划 | 提醒随计划项生成;计划变化触发提醒重排 |
| 问元气 | 长期画像经问元气对话修改并确认;确认后刷新健康模型 |
| 资料库 | 同属登录能力;游客登录后可进入 |
| 账号系统 | 登录 / 注册、修改密码(其他设备需重新登录)、退出登录 |
8. 验收要点(现状基线)
以下为当前已实现且已核对的行为,作为回归验收基线:
- 游客可进入我的:显示「元气 / 仅保存在此设备」,长期画像区引导登录;外观、使用与安全、重新开始可用。
- 登录后:显示用户名与同步状态;当前目标按 健康模型 → 首次画像 → 无 的优先级;偏好/限制/基础线索带「已确认 / 历史记录」标记;健康模型加载中有加载态。
- 科学基线存在时单独展示,个人偏好不覆盖。
- 健康数据来源:连接 / 重新读取 / 运动记录补充授权 / 数据类型与来源展示 / 前往系统设置 / 停止读取 / 删除本机摘要 均可用;登录后出现账号摘要同步开关与删除云端摘要;默认关闭、按账号记忆。
- 本机当天摘要直接进入今日卡;训练时长与活动圆环分钟分别展示不相加;缺失不写成异常。
- 提醒:权限状态、显示补剂名称开关(默认关)、已开启提醒列表;被拒绝提供系统设置入口;最多 8 个时点。
- 元气服务连接状态:已连接 / 正在检查 / 轻点检查 / 具体错误。
- 外观:跟随系统 / 浅色 / 深色立即全局生效。
- 账号与数据:导出(带日期的数据文件)、修改密码(其他设备需重新登录)、使用与安全、重新开始(破坏性确认 + 登录时同时清空账号画像)、退出(确认 + 本机记录保留)。
- 破坏性操作分别确认;错误只在受影响位置呈现。
- Web 兼容端:无健康数据来源 / 提醒 / 连接状态 / 摘要同步;重新了解与退出无破坏性确认(与 iOS 不同,记录为现状差异)。
9. 迭代记录
- 2026-08-13:本模块核对完成(健康数据来源、账号摘要同步默认关闭 / 版本化 / 35 天 / 加密保存、提醒、导出、修改密码、重新开始、退出登录、Web 差异)。
未验收项 / 已知缺口:
- 账号摘要同步(开启 / 关闭 / 删除云端摘要)、修改密码后旧密码失效、重新开始体验的账号画像清空均为已实现路径;多账号切换、删除云端摘要与真机通知等场景仍需真实设备验收后标记已上线。
- 「在通知中显示补剂名称」默认关闭,锁屏只显示通用到点提醒;通知内打卡与稍后提醒暂不提供(现状约束,非缺口)。
- Web 兼容端「重新了解我的情况」无破坏性确认、退出登录无确认弹窗,与 iOS 行为不同,记录为现状差异,待产品决策是否对齐。
文件级实现地图见《项目架构与文件说明》。
Agent · 模块定位
问元气是全局健康对话入口(底部导航最右、全屏呈现),一个入口完成三件事:回答健康/饮食/恢复/补给问题;读取账号里已确认的状态;在用户明确要求时生成「待确认修改」,确认后才写入。游客走初始化对话,登录用户走全局 Agent。
14 项受控能力
读取状态 2 项(我的状态、健康模型)、写操作 11 项(今日状态、补剂增改删、资料、画像、目标、偏好、精力睡眠方向、生活安排)、追问建议 1 项。
先预览后确认
所有写入先生成「修改前 → 修改后」动作卡;确认前账号不变;可逐项确认、全部确认或取消;重复确认不重复写入。
参数只来自本轮原话
旧对话和账号已有状态不能替用户补齐剂量、时段、频次;没说的如实标「未说明」。
咨询不等于记录
疑问、假设、未来打算都不生成写操作;「假如我明天训练」不会被记录成今天已发生。
科学红线
补剂替代治疗、自行停药、越多越好等主张直接给安全回复,不调模型、不生成任何修改。
页面上下文
从今日/周计划/资料库/我的打开时携带页面位置,只影响理解和追问推荐,不扩大写入权限。
Agent · 核心业务流程
一轮对话:从发送到落库
同一时间只允许一轮;系统先读取账号状态与当前会话
咨询 / 读取状态 / 明确修改,可同时成立;科学红线命中直接给安全回复,不生成任何修改
读取只进白名单状态;写操作只生成「待确认动作卡」,参数必须来自用户这句话,不足标「未说明」
一次性写入 → 刷新今日/周计划/资料库/健康模型/提醒
账号不变,动作不可再确认
关键业务规则速览
该模块最核心的规则,完整 56 条在「业务规则库」分页。
与其他模块的联动
Agent 产品文档总览
本文目录
1. Agent 是什么2. 能力地图(一览)3. 文档导航4. 实现地图(文件级)5. 维护规则本文件夹记录元气 Agent 的全部当前逻辑,按产品经理视角组织。 <br>文档状态:全部为 现状,与 2026-08-13 产品现状核对一致。 <br>默认产品端:原生 iOS;Web 为线上兼容端。1. Agent 是什么
「问元气」是元气 App 里的健康与生活对话助手,固定在底部导航最右侧,点按后打开独立全屏对话。它在产品上有两条路径,共用同一套模型与安全理念:
| 路径 | 用户状态 | 用途 |
|---|---|---|
| 初始化对话 | 游客或登录用户 | 首次画像补充、基础咨询,只更新生活画像,不生成账号修改动作 |
| 登录后的全局对话 | 仅登录用户 | 咨询、读取账号状态、生成待确认修改,确认后才写入 |
核心设计一句话:模型(DeepSeek)只负责理解与表达;读取什么、能改什么、参数从哪来、什么能保存,全部由服务端确定性规则控制。 所有修改先变成"待确认动作卡",只有用户确认后才写入账号。
2. 能力地图(一览)
Agent 当前共有 14 项受控能力 + 1 个规划结束信号。完整规则见Agent 能力清单。
| 能力 | 类型 | 一句话说明 |
|---|---|---|
| 读取我的状态 | 只读 | 读取已确认补剂计划、结构化资料、生活画像和今日事件 |
| 读取健康模型 | 只读 | 读取目标、路径偏好、长期方向和生活安排 |
| 记录今日状态 | 待确认写入 | 记录昨晚/今天的睡眠、训练、饮食、饮酒、肠胃、压力、生病等一次性事实 |
| 新增/修改标准补剂 | 待确认写入 | 记录用户明确"正在吃"或要修改的资料库补剂 |
| 记录个人补剂 | 待确认写入 | 无法安全映射资料库时按用户原话记录(如姜黄粉) |
| 删除补剂 | 待确认写入 | 用户明确表示已不吃或要求删除 |
| 修改结构化资料 | 待确认写入 | 年龄、身高、体重、性别、体检标记、用药、特殊状态 |
| 修改生活画像 | 待确认写入 | 长期目标、作息、饮食、咖啡因习惯 |
| 更新健康目标 | 待确认写入 | 自由文本长期目标 |
| 更新健康路径偏好 | 待确认写入 | 优先生活方式 / 综合考虑 / 愿意考虑补剂 |
| 创建精力与睡眠改善方向 | 待确认写入 | 生成"改善下午精力与睡眠"的 7 天方案草稿(目标+4 项安排) |
| 新增/修改生活安排 | 待确认写入 | 具体动作+时间锚点的作息、饮食、活动、恢复安排 |
| 停止生活安排 | 待确认写入 | 删除/停止现有安排 |
| 推荐后续问题 | 只读 | 生成 3 条下一步输入建议 |
| 规划结束(内部) | 内部信号 | 规划阶段"本轮无需读写"的结束标记,不出现在界面 |
3. 文档导航
| 文档 | 回答的问题 |
|---|---|
| Agent产品逻辑.md | 产品经理视角的 PRD:定位、场景、对话流程、界面、错误恢复、新开对话 |
| Agent能力清单.md | 每项能力做什么、什么话触发、参数从哪来、怎么校验、确认后保存什么、刷新哪些页面 |
| Agent业务规则.md | 意图判定、实体识别、事实校验、动作生命周期、会话上下文、安全与隐私红线、降级兜底 |
| ../../技术/Agent流式协议V1.md | iOS/Web/服务端之间传输一次 Agent 回复的流式技术合同 |
4. 实现地图(文件级)
文件级实现地图见《项目架构与文件说明》。
5. 维护规则
- Agent 任何能力或规则变化,先更新本文件夹对应文档,再改代码与测试。
- 对话体验与用户可见行为归
Agent产品逻辑.md;每项能力的触发与参数归Agent能力清单.md;判定规则、动作生命周期与安全红线归Agent业务规则.md。 - 各端之间的流式传输技术合同只归
docs/技术/Agent流式协议V1.md,不在产品文档重复传输细节。 - 已确认逻辑、代码实现和真实上线必须分别标记,不把讨论稿写成现状。
问元气 Agent 产品需求文档(PRD)
本文目录
1. 需求概述1.1 模块定位1.2 用户价值1.3 范围与边界2. 用户与使用场景3. 功能需求3.1 入口与呈现3.2 一轮对话的主流程3.3 界面元素(从上到下)3.4 对话内确认3.5 新开对话3.6 停止、错误与恢复3.7 游客与登录两条路径4. 业务规则(摘要)5. 数据与状态6. 异常与边界7. 关联模块8. 验收要点(现状基线)9. 迭代记录文档状态:现状,与 2026-08-13 产品现状核对一致。 <br>产品端:原生 iOS;Web 为线上兼容端。 <br>配套文档:能力清单、业务规则、流式协议。1. 需求概述
1.1 模块定位
「问元气」是元气 App 的全局健康与生活对话助手,固定在底部导航最右侧,点按后打开独立全屏对话,关闭后回到原内容 Tab。它在一个入口里同时完成三件事:回答用户的健康/饮食/恢复/补给问题;读取账号里的已确认状态;在用户明确要求时生成"待确认修改",经确认后更新账号。
1.2 用户价值
- 用户用自然语言说"我正在吃鱼油 2 粒"就能记录计划,说"昨晚没睡好"就能拿到仅今天的调整建议,不用去各页面手动填表单。
- 所有修改先给"修改前 → 修改后"预览,确认才生效,用户始终保有控制权。
- 对话能读到账号真实状态,回答有依据,不会把推荐当成用户已经在做的事。
1.3 范围与边界
做:健康与生活方式咨询;读取已确认计划、画像、今日事件、健康模型(含按账号开启同步后的 Apple 健康摘要);生成并确认 14 类受控修改。
不做:不诊断疾病、不开处方;不把咨询、假设或未来打算写成事实;不把推荐补剂直接写进"正在服用";模型(DeepSeek)只负责理解与表达,所有写入参数、校验和保存由服务端确定性规则控制。
2. 用户与使用场景
| 场景 | 用户 | 前置条件 | 主要路径 |
|---|---|---|---|
| 补记录 | 登录用户 | 无 | "我每天吃维 D 1000 IU 早餐后"→ 待确认动作卡 → 确认 → 今日/周计划/资料库同步刷新 |
| 记今日状态 | 登录用户 | 无 | "昨晚 2 点才睡"→ 仅今天的建议 + 待确认事件卡 → 确认 → 今日页出现当日策略 |
| 读状态 | 登录用户 | 已有账号数据 | "我现在吃什么?"→ 直接回答当前确认计划 |
| 咨询建议 | 游客/登录 | 无 | "怎么改善睡眠?"→ 具体建议,不改账号 |
| 改长期资料 | 登录用户 | 有明确新值 | "我体重改成 72kg""我的作息改成 23 点睡"→ 预览 → 确认 |
| 设长期方向 | 登录用户 | 无 | "我想改善下午精力和睡眠,先不吃补剂"→ 7 天方案预览 → 确认 |
| 从页面进入 | 登录用户 | 任意 Tab | 点开问元气自动带上当前页面,推荐与追问贴合当前上下文 |
| 初始化补充 | 游客 | 已完成画像 | 可选对话补充画像,可随时跳过直达结果 |
3. 功能需求
3.1 入口与呈现
- 底部导航最右侧固定入口;点按打开全屏独立对话,不在各内容页重复放入口。
- 首次画像结果页可直接打开问元气。
- 打开时自动带上用户当前所在的页面位置(今日 / 周计划 / 资料库 / 我的),只影响理解、追问与指代解析,不扩大写入权限。
3.2 一轮对话的主流程
用户发送消息
→ 读取账号当前状态与本轮会话
→ 判断:咨询 / 读取 / 修改(可同时成立)
→ 科学准入检查(命中红线直接给安全回复,不调用语言模型)
→ 受控规划:只在本轮原话范围内判断要做什么,或由确定性规则兜底识别
→ 每个修改意图 → 校验参数必须来自本轮原话 → 生成待确认动作卡
→ 逐字输出过程摘要与回答正文(实时过滤内部处理信息)
→ 全文校验:逐字出现的内容与最终正文一致
→ 展示待确认动作、当日策略预览和 3 条后续问题同一时间只允许一轮发送;停止后取消当前任务、保留已显示的安全正文,并把进行中的过程标为停止;上一轮停止后迟到的内容不会混入新一轮。
3.3 界面元素(从上到下)
- 当前会话消息;
- 正在逐字出现的回复;
- 默认折叠的"本轮生成过程"(可核对摘要);
- 待确认修改卡(标题/摘要/影响/修改前后,可逐项确认、"全部确认"或取消);
- 发送中或错误恢复状态;
- 三个后续问题建议;
- 多行输入框(1–4 行)与发送按钮。
用户向上阅读时不自动抢滚,接近底部才跟随新内容;发送中禁止重复发送。
3.4 对话内确认
用户回复"确认/全部确认/保存/执行"等且本轮未提到新补剂时,直接确认当前待确认动作;若同一句话还提到新的补剂事实,则按新一轮理解,避免误确认。部分失败时明确汇报"已保存 N 项,还有 M 项未完成"。
3.5 新开对话
- 只有当前会话已出现用户消息、无发送中任务、无动作更新时按钮才可用。
- 登录用户新建一个活动会话;旧消息继续保留在账号记录里,但不进入新会话。
- 游客重置为基于当前首次画像的开场消息。
- 已确认的健康资料、计划、今日事件与健康摘要是账号级状态,不因新开对话被清除。
3.6 停止、错误与恢复
| 情况 | 恢复动作 |
|---|---|
| 用户停止 | 保留部分正文,显示"已停止" |
| 普通网络/服务错误 | 保留可用正文,提供"重试" |
| 对话已不可用 | 提供"新开对话" |
| 消息暂时无法处理 | 把上一条消息放回输入框,提供"修改消息" |
| 发送请求中断但服务端已完成 | 重新进入后核对账号状态,恢复已完成回复 |
| 逐字出现的内容与最终正文不一致 | 显示校验失败,不用另一段文字静默覆盖 |
| 内容不完整、顺序错乱或无法识别 | 明确终止本轮并允许重试 |
3.7 游客与登录两条路径
| 项目 | 游客/初始化对话 | 登录后的全局 Agent |
|---|---|---|
| 上下文 | 本机消息历史 + 首次画像 | 账号状态 + 会话历史 + 页面位置 |
| 写入能力 | 只更新生活画像,不生成动作卡 | 受控修改先生成动作卡,确认后写入 |
| 会话 | 本机当前显示;重置为开场消息 | 账号下保留一个活动会话 |
4. 业务规则(摘要)
完整规则见Agent 业务规则(R-01~R-56),核心条目:
- 修改参数只来自用户本轮原话;旧对话和账号已有状态不能替用户补齐剂量、时段、频次或画像字段(R-41)。
- 假设、未来打算、咨询和否定不生成已发生事实(R-04/R-07/R-08);一次睡差/训练/一顿饭不触发补剂新增或加量(R-38)。
- 模型主动推荐的新补剂不能直接生成"正在服用"记录(R-05)。
- 所有修改先成为待确认动作,只有确认后才写入账号(R-19);确认幂等(R-20)、取消不可再确认(R-21)、跨入口修改冲突需重新预览(R-22)、同一确认批次可逐项连续确认(R-23)。
- 未说明的剂量/时段/频次如实标"未说明",不伪造日程、不默认每日提醒(R-16)。
- 科学证据与安全红线高于用户偏好;不诊断、不开处方(R-35/R-37)。
- 回复中不得出现内部处理信息、工具名、调用编号,也不得声称未经确认的保存结果(R-28/R-44)。
- 只有按账号明确开启摘要同步后,Agent 才能读取 Apple 健康摘要,且只用于解释趋势,不能自动改药物或补剂(R-39/R-46)。
5. 数据与状态
| 对象 | 含义 | 归属与规则 |
|---|---|---|
| 会话 | 一段连续对话 | 同一时间一个活动会话;新开对话后旧消息只读保留 |
| 消息 | 用户/助手历史 | 规划用最近 12 条、状态读取 24 条;历史只用于理解,不作修改参数来源 |
| 待确认动作 | 修改预览 | 待确认 → 已执行 / 已取消;带"预览生成时的账号状态指纹"与"确认批次" |
| 今日事件 | 昨晚/今天一次性事实 | 只存当天,已过期或类型不支持时拒绝写入 |
| 健康模型 | 目标/偏好/约束/基线/策略/安排/实验 | 账号级状态;内部周期不向用户复述 |
| Apple 健康摘要 | 35 天结构化聚合 | 仅同步开启后 Agent 可读;原始样本不进对话 |
6. 异常与边界
| 异常 | 当前行为 |
|---|---|
| 模型不可用/未配置 | 确定性规则识别意图并生成同样的待确认动作;回答用规则文案 |
| 参数与原话不符 | 拒绝这次修改(只作内部记录),继续回答健康问题 |
| 科学红线命中 | 不调用语言模型、不生成动作,直接给安全回复与替代建议 |
| 回复中出现内部处理信息 | 阻断本轮,保留已显示的安全内容,追加兜底文案 |
| 确认时账号状态已变化 | 提示重新发送,生成最新预览 |
| 今日事件已过期 | 提示已过期或格式不支持 |
| 已取消的动作再确认 / 已执行的动作再取消 | 不可执行 |
| 页面展示的推荐内容已变化 | 忽略旧的,按账号当前状态重新解析 |
7. 关联模块
- 今日:今日事件确认后生成当日策略卡;补剂动作确认后刷新今日计划与打卡。
- 周计划:补剂动作确认后同步周视图。
- 资料库:补剂动作确认后刷新排除状态(正在吃的同成分不再推荐)。
- 我的:画像、健康目标与偏好确认后刷新;Apple 健康摘要同步开关决定 Agent 可读范围。
- 提醒:补剂时段/频次确认后由 iOS 重新核对本地通知。
8. 验收要点(现状基线)
- 游客与登录两条路径行为符合 3.7 表格;游客不出现动作卡。
- 修改参数只来自本轮原话:旧对话、账号状态、模型推荐均不能补参数。
- 确认幂等、取消不可再确认、跨入口冲突提示重新发送、同一确认批次逐项确认可用。
- 公开输出无内部处理信息,也不出现未经确认的"已保存"声称(含回复逐字出现过程被中断的场景)。
- 逐字出现的内容与最终正文逐字一致;内容不完整、顺序错乱或无法识别时明确失败。
- 科学红线命中时不调用语言模型、不生成动作。
- 批量口述"我正在吃的补剂"一次最多 12 项待确认;普通轮 4 项。
9. 迭代记录
- 2026-08-12 旧基线:对话产品逻辑、流式传输、动作确认与错误恢复形成现状。
- 2026-08-13:按产品经理视角重写为 PRD;Agent 文档拆分到 docs/产品/Agent/ 文件夹(README/产品逻辑/能力清单/业务规则),并新增精力睡眠方向、生活安排、健康目标与路径偏好等能力的完整记录。
Agent 能力清单
本文目录
1. 读取我的状态 —— 只读2. 读取健康模型 —— 只读3. 记录今日状态 → 记录今日事件4. 新增/修改补剂 —— 待确认写入5. 记录个人补剂 —— 待确认写入6. 删除补剂 —— 待确认写入7. 修改结构化资料 —— 待确认写入8. 修改生活画像 —— 待确认写入9. 更新健康目标 —— 待确认写入10. 更新健康路径偏好 —— 待确认写入11. 创建精力与睡眠改善方向 —— 待确认写入12. 新增/修改生活安排 —— 待确认写入13. 停止生活安排 —— 待确认写入14. 推荐后续问题 —— 只读15. 规划结束(内部)数量与合并规则文档状态:现状,与 2026-08-13 产品现状核对一致。本文逐项记录 Agent 当前全部受控能力。每项包括:做什么、什么话会触发、参数从哪来、怎么校验、动作卡长什么样、确认后保存什么、刷新哪些页面。
通用规则(适用于所有写入能力,详见Agent业务规则):
- 修改参数只来自用户本轮原话,不能从旧对话或账号已有状态补齐。
- 模型给出的参数必须与确定性规则从原话抽取的结果完全一致,不一致即拒绝。
- 修改能力只生成"待确认"状态的动作卡;确认前账号不变。
- 疑问句、假设句、未来打算、否定表达一律不生成修改动作。
1. 读取我的状态 —— 只读
- 什么时候用:用户问"我现在吃什么 / 当前计划 / 我的画像 / 你了解我什么"等,必须读取并直接用结果回答;没有记录就明确说没有,不允许用欢迎语回避。
- 读取内容:已确认补剂计划(名称、剂量、服用方式、数量、品牌备注、时段、频次)、结构化资料、生活画像、最近 10 条今日事件。
- 参数:无。
- 保存:无。若未按需读取且用户问了当前计划/画像,由确定性规则直接给出读取结果。
2. 读取健康模型 —— 只读
- 什么时候用:回答与长期目标、路径偏好、生活安排相关的问题时。
- 读取内容:目标、偏好、约束、基线、活动策略、生活安排、实验与结果、证据引用;内部策略周期与复盘日不向用户复述,只允许说"目标、偏好、今天建议、安排"。
- 参数:无。保存:无。
3. 记录今日状态 → 记录今日事件
- 触发:用户明确说出昨晚/今天发生的一次性事实,包括睡眠、训练、饮食、漏餐、饮酒、肠胃、压力、生病或带时间词的其他状态。
- 支持的事件类型:昨晚睡得不好 / 今天完成了训练 / 记录了今天的饮食 / 今天漏了一餐 / 今天有饮酒 / 今天肠胃不舒服 / 今天压力较大 / 今天身体不舒服 / 记录了今天的状态。
- 参数校验:
- 事件类型必须能被原话支持:假设词(如果/假如/明天/打算/准备/可能)、对应类型的否定句(如"没失眠""没运动")都会拒绝;
- 对事件类型的判断与规则识别结果不一致时拒绝;
- 简要描述使用固定事件标签,详细描述截取用户原话最多 300 字。
- 动作卡:标题"记录到今天";影响说明"仅影响今天,不修改长期画像和周期计划";附一张当日策略预览卡。
- 确认后保存:记录今日事件(事件类型、摘要、用户原话,日期为当天);不生成历史检查、不写入健康模型。日期已过期(非当天)或类型不支持时提示"这项修改已过期",不写入。
- 刷新:今日页的"今天记得做什么"、对话中的今日事件与当日策略。
- 连带效果:策略卡只建议食物、补水、恢复、按原计划执行;一次睡差或一次训练不新增、加倍或修改补剂。
4. 新增/修改补剂 —— 待确认写入
- 触发:用户明确表示"正在吃 / 现在吃 / 每天吃"某资料库补剂,或明确要求修改、记录、添加、调整现有记录。
- 拒绝触发:咨询句式(是不是/好吗/如何)、假设与未来意向(我打算/考虑/想开始/准备吃/计划吃/可能会吃)、模型主动推荐新补剂。
- 参数:补剂(必须命中 45 种资料库之一)、剂量、服用方式、时段、频次。
- 参数来源与校验:
- 补剂名称必须出现在用户原话中(按别名匹配,含"维 D→维生素 D3""鱼油→欧米伽 3"等特殊别名与单字母语境保护,见业务规则);
- 剂量/服用方式/时段/频次由确定性规则从原话抽取;给出的参数必须与抽取结果一致,否则拒绝(剂量未说明 / 时段未说明 / 频次未说明等);
- 新增记录:原话没说的剂量、时段、频次分别保存为"剂量未说明""时间未说明""频次未说明",绝不用资料库默认值或"每日"填空;
- 修改已有记录:只改抽取到的字段,没说的字段沿用旧值,防止旧值被误覆盖。
- 动作卡:标题"记录正在吃的补剂"或"修改当前补剂";摘要显示名称·剂量·频次·时段;有未说明字段时影响说明为"未说明的信息不会被当作推荐剂量或自动提醒"。
- 确认后保存:写入或替换账号补剂计划中的对应项,并同步健康模型里的补剂安排;计划上限 20 项。
- 刷新:今日、周计划、资料库排除状态、健康模型。
- 个人补剂除外:名称不能安全映射时按第 5 节"记录个人补剂"处理。
5. 记录个人补剂 —— 待确认写入
- 触发:用户明确说正在吃某产品,但名称不能安全等同于资料库任何成分。当前支持的个人补剂:姜黄粉、姜黄(它们不是"姜黄素"的同义词)。
- 校验:名称必须是本轮原话;若名称本身可映射到资料库(如鱼油),拒绝走个人记录路径,避免重复;剂量/方式/时段/频次规则与标准补剂相同。
- 保存:以个人记录标识存入计划,保留用户原名,不改写成相近成分。
6. 删除补剂 —— 待确认写入
- 触发:用户明确说"不吃了 / 停了 / 停止服用 / 已经不吃"或明确要求删除某资料库补剂;否定句("不想删除""不要停")拒绝。
- 校验:补剂必须在原话中且当前计划里确实存在,否则拒绝。
- 动作卡:影响说明"确认后从长期计划移除;系统建议区仍可能继续显示相关依据"。
- 确认后保存:从补剂计划中移除,并同步停止健康模型里的补剂安排;历史打卡记录保留。
7. 修改结构化资料 —— 待确认写入
- 可改字段与操作:
- 年龄、身高、体重、性别:只能设定新值;
- 体检标记、正在用药、特殊状态:只能添加或移除。
- 触发与校验:
- 需要明确修改意图,或说出"体重 70kg / 身高 175cm / 我今年 30 岁"这类可验证的当前事实;
- 数值边界:年龄 12–120 岁、身高 100–230cm、体重 25–300kg,超出拒绝;
- 用药识别只接受"药/片"结尾或已知药名(二甲双胍、左甲状腺素、优甲乐、华法林、阿司匹林、他汀);补剂名会被排除;
- 疑问句、否定表达拒绝。
- 动作卡:标题"更新结构化资料";摘要"字段:修改前 → 修改后";影响"确认后更新健康资料,并重新计算相关安全提醒"。
- 确认后保存:更新账号中的结构化资料;列表字段添加时去重、移除后为空时记"无"。
- 刷新:健康模型、资料库匹配分(重新计算)、安全提醒。
8. 修改生活画像 —— 待确认写入
- 可改字段:长期目标、作息、饮食习惯、咖啡因习惯;其中长期目标不允许通过此能力修改(目标更新走第 9 节),待确认方向永远由确定性规则推导,模型不可改。
- 触发:用户明确纠正长期习惯,如"我的作息改成 23 点前睡""咖啡因习惯更新为每天 1 杯";一次性今天状态不得进入长期画像。
- 校验:必须有明确修改意图(疑问/否定拒绝);值必须出现在原话中。
- 动作卡:"更新生活画像",显示字段修改前→修改后。
- 确认后保存:更新账号中的生活画像。
9. 更新健康目标 —— 待确认写入
- 触发:用户明确表达长期目标:"我最想改善睡眠""我的当前目标是……""记住/保存……为目标"。
- 区分咨询:"怎么改善睡眠"只是咨询不写入;"我最想改善睡眠"生成目标预览。
- 校验:目标文本(2–120 字)必须从原话抽取且与给出的参数一致;疑问句、否定、假设拒绝;一个账号同一时间只有一个激活目标,新目标会替换旧目标(旧目标停用)。
- 动作卡:"更新健康目标";影响"确认后用于调整后续建议;不会自动新增补剂"。
- 确认后保存:写入健康模型中的健康目标。
10. 更新健康路径偏好 —— 待确认写入
- 三档路径:
- 优先生活方式(触发词:"不想吃补剂/优先饮食/先从饮食/先调整作息");
- 综合考虑(触发词:"饮食和补剂都可以/综合一点/均衡考虑");
- 愿意考虑补剂(触发词:"愿意考虑补剂/补剂也可以")。
- 校验:路径必须能从原话明确识别且与给出的参数一致。
- 动作卡:影响"确认后只调整方案排序,不改变科学证据和已有补剂记录"。
- 确认后保存:替换同类的旧偏好(旧值停用)。
11. 创建精力与睡眠改善方向 —— 待确认写入
- 触发:用户同时表达精力 + 睡眠改善意图,如"我想改善下午没精神和睡眠,先从生活方式开始";或带明确修改意图的精力睡眠目标。
- 生成内容(草稿):一个目标"改善下午精力与睡眠"、一个 7 天策略(重点只改变起床窗口和咖啡因截止时间)、4 项生活安排(固定起床窗口 / 提前结束咖啡因 / 白天见光走一走 / 不靠零食顶午餐)、1 个内置 7 天实验。是否按"优先生活方式"起草,由原话的路径偏好决定(用户明确"愿意考虑补剂"时不按优先生活方式)。
- 动作卡:标题"记住改善方向";只预览"要记住的目标和偏好",不展示内部周期等细节;影响"不会自动改动补剂记录"。
- 确认后保存:旧活动策略标记为已完成(其中已确认的补剂安排原样保留到新策略)、旧目标停用,再写入新的目标/偏好/策略/安排/实验。
- 回复:确认前的回复由规则生成,如"我会把'改善下午精力与睡眠'作为长期方向记住……确认后才会保存"。
- 去重:同一轮同时出现本能力与"更新健康目标/路径偏好"时,只保留本能力。
12. 新增/修改生活安排 —— 待确认写入
- 触发:用户明确指定具体动作 + 时间锚点的长期安排。当前确定性覆盖三种高频句式:
- 咖啡因:"下午 3 点以后不喝咖啡"→"提前结束咖啡因,每天 15:00 后不再摄入咖啡因"(对应咖啡因截止的科学依据);
- 睡眠:"睡觉时间固定到 23 点"→"固定上床时间,每天约 23:00 上床,允许前后 30 分钟"(对应作息规律的科学依据);
- 活动:"晚饭后散步 20 分钟"(5–120 分钟)→"晚饭后轻松步行 20 分钟"(对应白天活动的科学依据)。
- 前提:账号已有活动策略(否则拒绝);时间表达会按"下午/晚上 1–11 点加 12、上午/凌晨 12 点归 0"归一为 24 小时制。
- 校验:类别(饮食/作息/活动/恢复)、标题、说明、时间标签必须与原话抽取一致。
- 动作卡:"添加生活安排"或"更新生活安排";摘要"类别 · 标题";回复中给出具体说明文字。
- 确认后保存:新增为活动中的生活安排,并附用户原话与对应科学依据。
13. 停止生活安排 —— 待确认写入
- 触发:用户说"删除/移除/取消/停止/不做"某项安排;先按标题精确匹配,再按类别关键词匹配(咖啡→恢复、上床→作息、散步→活动、餐→饮食),只命中唯一一条才执行,有歧义则拒绝。
- 动作卡:影响"确认后停止长期安排;历史记录保留"。
- 确认后保存:该项安排改为已停止(保留历史,不删除)。
14. 推荐后续问题 —— 只读
- 触发:由模型在回答末尾生成,或由确定性规则按页面/状态兜底生成 3 条输入建议(2–32 字,去重,不得与用户本轮消息相同)。
- 规则兜底示例:有动作卡时优先"确认后今天会怎么变?";今日页给"记录我今天吃了什么"等;无计划时插"我目前没有补剂怎么开始?";按用户轮次轮换起点,避免每轮一模一样。
- 保存:无;随助手消息一并保存,供下一次读取复用。
15. 规划结束(内部)
- 判断"本轮无需读写"时的结束信号;只在内部使用,不出现在界面或任何对外内容中。
数量与合并规则
- 普通对话一轮最多保留 4 项待确认动作。
- 纯"批量口述我正在吃的补剂"(同轮提到 4 项以上且不含咨询词)跳过模型规划,由确定性规则直接识别,最多 12 项。
- 同一资源只保留一个动作(同补剂、同画像字段、同事件类型后者覆盖前者);若同轮出现"创建精力睡眠方向",丢弃同轮的目标/偏好动作。
- 同一会话里逐轮收集的补剂修改,只要"预览生成时的账号状态指纹"相同就合并为同一个确认批次:后轮对同一补剂的修正替代旧预览,其余动作继续保留在批次中。
Agent 业务规则
本文目录
1. 意图判定:咨询 / 读取 / 修改2. 实体与参数识别:一切参数来自本轮原话3. 动作生命周期:从预览到保存3.1 动作结构与状态机3.2 各动作确认后的保存与回复4. 回复生成与四道公开输出守卫5. 安全与科学红线6. 会话、上下文与隐私边界7. 降级与兜底(模型不可用时的行为)8. 初始化对话(游客路径)的差异规则文档状态:现状,与 2026-08-13 产品现状核对一致。本文记录 Agent 的判定规则、动作生命周期、回复守卫、安全红线与降级兜底。每条规则用 R-xx 编号,便于产品讨论时引用。
1. 意图判定:咨询 / 读取 / 修改
每轮先把用户这句话归为三类意图(可同时成立),再决定要不要生成动作:
| 规则 | 内容 |
|---|---|
| R-01 | 三类意图独立判断:A. 用户需要什么健康建议;B. 是否明确要求读取账号状态;C. 是否明确要求修改账号状态。无论有没有可执行修改,都必须先直接回应用户的健康问题,不能只回"请说明修改对象"。 |
| R-02 | 咨询不是修改授权。"怎么改善睡眠"只是咨询;"我最想改善睡眠""把目标设为睡眠"才生成目标预览。"我想改善睡眠"本身不把目标写进账号。 |
| R-03 | 修改意图要求明确的动作词:记录/保存/更新/设置/修改/删除/移除/停止/加入/添加,或"把…改成/设为/记住"等句式,或"我的长期目标/作息/饮食/咖啡因习惯改成…"。 |
| R-04 | 出现否定词(不想/不要/别/不用/不需要)或疑问词(请问/好吗/合适吗/会怎样/如何/怎么/是否,含问号)时,一律不生成修改动作。 |
| R-05 | 补剂新增/修改还要过第二道意图:必须是"我在吃/我现在/正在吃/已经在吃/每天"这类执行事实,或明确记录意图;"我打算/考虑/想开始/准备吃/计划吃/可能会吃"是未来意向,拒绝。 |
| R-06 | 补剂删除意图:删除/删掉/移除/不吃了/停了/停用/停止服用/已经不吃/没有在吃;"不想删除/不要停/别停"拒绝。 |
| R-07 | 假设与未来词(如果/假如/假设/明天/后天/未来/计划/打算/准备/可能)使今日事件不成立,只能用条件语气回答,不得说成已发生。 |
| R-08 | 今日事件还要过事实校验:对应类型的否定句(如"没失眠""没运动""没有拉肚子")不成立;每种事件有最小事实短语(如训练需要"健身了/训练了/跑完"等),没有就拒绝记录。 |
| R-09 | 深夜入睡识别兼容自然表达:"昨晚熬到凌晨 2 点才睡""昨晚 6 点钟才上床"都算"睡得不好"(入睡时间在 0–6 点才成立)。 |
2. 实体与参数识别:一切参数来自本轮原话
| 规则 | 内容 |
|---|---|
| R-10 | 补剂识别使用别名体系:资料库名称、中文名、英文名、代码、简称 + 特殊别名(维 D/维生素 D/D3 归到维生素 D3,鱼油/欧米伽 3 归到欧米伽 3,麦角硫因/谷胱甘肽归到麦角硫因-谷胱甘肽复方等)。 |
| R-11 | 短英文代码有语境保护:"C、B、E"等单字母只有在维生素/补剂/服用/剂量/毫克/IU 等语境中才算补剂,防止把"Web Coding""C 语言"误认成维生素 C;"500mg"不会匹配成镁。 |
| R-12 | 个人记录名(当前:姜黄粉、姜黄)必须保留用户原话,不能改写成"姜黄素"等相近成分;若名称本身可精确映射资料库(如鱼油),不允许走个人记录路径。 |
| R-13 | 剂量识别:数字 + 单位(IU/mg/µg/克/毫克/微克/粒),单位写法统一(IU 大写、微克用 µg);只取该项补剂前后最近分句内的剂量,防止把后一项的"2 粒"分给前一项。 |
| R-14 | 服用方式识别:空腹/随餐/餐后/餐前/早餐后/午餐后/晚餐后/睡前;逗号不截断,所以"随餐吃鱼油 2 粒、姜黄 2 粒"的"随餐"同时约束两项。 |
| R-15 | 时段识别:睡前/晚上记为睡前时段,下午记为下午时段,中午/午餐记为中午时段,早上/早餐记为早上时段;找不到就记为"时间未说明",不把其他时段误套到该项。 |
| R-16 | 频次识别:每天/每日记为每日,工作日/周一到周五记为工作日,隔天/隔日/每两天记为隔日,周末记为周末;没有就记"频次未说明",不用"每日"默认值填空。 |
| R-17 | 结构化资料数值边界:年龄 12–120 岁、身高 100–230cm、体重 25–300kg,超出拒绝;用药识别只接受"××药/××片"或已知药名(二甲双胍、左甲状腺素、优甲乐、华法林、阿司匹林、他汀),补剂名会被排除。 |
| R-18 | 生活安排的时间归一化:"下午/晚上 + 1–11 点"加 12 变 24 小时制;"上午/凌晨 + 12 点"归 0;结果必须在 0–23 点。 |
3. 动作生命周期:从预览到保存
3.1 动作结构与状态机
一个待确认动作包含:唯一编号、动作类型、标题/摘要/影响文案、保存内容、修改前后预览、预览生成时的账号状态指纹、确认批次、用户原话。所有动作都要求用户确认后才会保存。
状态:待确认 → 已执行 / 已取消。规则:
| 规则 | 内容 |
|---|---|
| R-19 | 确认前账号状态不变;确认是唯一写入入口,整个修改一次性完成,不会留下半截修改。 |
| R-20 | 确认幂等:重复点按返回"已经执行过了,没有重复写入"。 |
| R-21 | 取消后的动作不能再确认;已执行的动作不能再取消。 |
| R-22 | 跨入口冲突保护:确认时核对当前账号状态与动作生成时的"预览生成时的账号状态指纹"是否一致(即预览生成后被其他入口改过),不一致则拒绝,提示"账号状态已经变化,请重新发送这条修改以生成最新预览"。今日事件动作不核对指纹。 |
| R-23 | 同一确认批次可连续确认:同批确认一项后,其余动作的"预览生成时的账号状态指纹"更新为新状态,使同一批可以逐项确认而不互相冲突。 |
| R-24 | 批次合并:同一会话中逐轮收集的补剂动作,只要"预览生成时的账号状态指纹"相同就并入同一确认批次;后轮对同一补剂的修正替代旧预览(旧预览标记为已取消),其余动作继续保留。 |
| R-25 | 对话内确认:用户回复"确认/全部确认/保存/执行"等且本轮没有提到新补剂,视为确认当前待确认动作;部分成功时回复"已保存 N 项;还有 M 项未完成……请重新核对下方修改"。 |
| R-26 | 动作数量上限:普通轮 4 项;纯补剂批量口述(同轮 4 项以上且无咨询词)最多 12 项;同一资源同轮去重,后者覆盖前者;同轮有"创建精力睡眠方向"时丢弃目标/偏好动作。 |
3.2 各动作确认后的保存与回复
| 动作 | 确认后保存 | 确认回复(示例) |
|---|---|---|
| 记录今日事件 | 今日事件,日期为当天 | 已记录到今天。长期画像和周期计划没有改变。 |
| 补剂新增/修改 / 删除补剂 | 补剂计划(上限 20 项)+ 同步健康模型补剂安排 | 已更新 ×× 的长期记录 / 已从当前记录删除 ×× |
| 更新结构化资料 | 账号中的结构化资料 | 已更新结构化健康资料 |
| 更新生活画像 | 账号中的生活画像 | 已更新长期生活画像 |
| 创建精力睡眠方向 | 旧策略标记已完成、已确认补剂安排保留到新策略,写入新目标/偏好/策略/安排/实验 | 已记住你想改善精力与睡眠,后续建议会结合每天状态调整 |
| 更新健康目标 / 更新路径偏好 | 健康模型中的目标/偏好(旧同类项停用) | 已更新健康目标 / 已更新健康路径偏好 |
| 新增/修改生活安排 / 停止生活安排 | 生活安排(停止只改为已停止,保留历史) | 已更新生活安排 / 已停止这项生活安排 |
4. 回复生成与四道公开输出守卫
| 规则 | 内容 |
|---|---|
| R-27 | 先规划再作答:先判断本轮要做什么(不生成正文),判断结束后再基于本轮原话生成回答;内部的判断过程与中间信息永远不会混入最终回答。 |
| R-28 | 公开回复中不得出现内部处理信息、工具名、调用编号,以及内部错误话术("数据库错误""系统提示"等);未经确认不得声称"已记录/已更新/保存成功"等保存结果。 |
| R-29 | 回复逐字出现的过程中持续检查:一旦出现内部处理信息立即阻断本轮,已显示的安全内容保留,并追加固定兜底文案;完整回复在保存前再检查一次。 |
| R-30 | 回答还要过场景一致性检查:假设场景必须用条件语气且不得断言"今天已训练/昨晚睡差";咨询场景不得把"更新画像/需确认字段"的后台流程当答案;读取类问题必须真实包含读到的数据,否则用确定性回复替代。草稿不合格时给一次重写机会,仍不合格则用规则文案。 |
| R-31 | 逐字出现的内容必须与最终正文逐字一致,不一致则明确终止本轮并保留已显示的内容,不用另一段文字静默覆盖。 |
| R-32 | 回答来源分四类并如实标记:语言模型、账号状态、健康建议边界;全部经过同一个最终输出检查。 |
5. 安全与科学红线
| 规则 | 内容 |
|---|---|
| R-33 | 科学准入红线:检测到"补剂/食疗替代药物或治疗""自行停药/不用吃药""治愈根治疾病""大量/加倍服用补剂"等高风险主张时,不调用语言模型、不生成任何动作,直接回复安全文案并给可行替代。 |
| R-34 | 与可靠证据冲突的主张("维生素越多越好""排毒治病""睡得越少越健康")不采纳、不据此调整方案,回复说明并给出证据支持的做法。 |
| R-35 | 科学证据是红线,个体化只发生在科学允许的选择空间内;尊重用户目标与偏好,但不认同补剂替代治疗、越多越好、治愈疾病等主张;证据不足时明确说不确定,不承诺效果。 |
| R-36 | 偏好、个人观察与科学事实分开:"我想先从饮食开始"是偏好,"我喝晚咖啡会睡不着"是个人观察,二者都不能变成普遍医学结论。 |
| R-37 | 不诊断疾病、不开处方;红旗症状建议及时就医。 |
| R-38 | 今日事件只产生当日食物/补水/恢复建议;训练蛋白计算仅当资料有体重(35–250kg)且无肾功能标记时给出每餐克数(体重×0.3,15–40g),否则只做定性建议;一次睡差/一次训练不新增、加倍或修改补剂。 |
| R-39 | Apple 健康摘要只用于解释趋势与排序生活行动:不据此自动新增、停用或改变补剂与药物;没有运动摘要不等于没有运动;读到的训练不能替用户写入打卡或长期安排。 |
6. 会话、上下文与隐私边界
| 规则 | 内容 |
|---|---|
| R-40 | 一个账号同一时间只有一个活动会话;新开对话保留全部历史消息,但新会话从空白开始,不沿用旧会话内容。已确认的画像、计划、今日事件和健康摘要是账号级状态,继续可用。 |
| R-41 | 历史消息(规划用最近 12 条、状态读取用 24 条)只用于理解对话;修改参数只允许来自本轮原话,旧对话或账号已有状态不能替用户补齐剂量、时段、频次或画像字段。 |
| R-42 | 页面位置(今日/周计划/资料库/我的/首次画像)只影响理解与追问,不扩大写入权限。 |
| R-43 | 页面展示的推荐内容最多记录 8 条,只用于解析"这两个"等指代;回答时按账号当前状态重新解析,不在当前建议中的内容被忽略,界面自行声称的名称/剂量/理由一律不被信任。 |
| R-44 | 内部信息不得出现在任何对外内容中:规划过程、逐字出现的回复、最终回复事件、账号保存记录,任何一处都不允许出现内部处理信息、工具原始参数/返回值/调用编号、内部协议标记。 |
| R-45 | 健康模型内部状态(策略周期、复盘日、实验)不向用户复述;面向用户只说"目标、偏好、今天建议、安排"。 |
| R-46 | 只有用户为当前账号明确开启 Apple 健康摘要同步后,Agent 才能读取账号中加密保存的健康摘要(最近 35 天的结构化聚合);原始样本、轨迹和逐笔记录不进对话上下文。 |
7. 降级与兜底(模型不可用时的行为)
| 规则 | 内容 |
|---|---|
| R-47 | 语言模型不可用或调用失败时,进入确定性兜底:由规则从原话识别事件、补剂、画像、目标、偏好、安排并生成同样的待确认动作(上限 12 项);回答按规则文案生成。 |
| R-48 | 兜底路径与模型路径使用同一套校验规则,规则识别本身可以独立成立,例如整句"初始化我正在吃的补剂"(超过 4 项)不等待模型判断,直接由规则出待确认记录。 |
| R-49 | 读取类高频问题("我现在吃什么/我的画像/我的目标")有确定性读取回复兜底,避免欢迎语冒充账号状态。 |
| R-50 | 纯咨询与假设场景有确定性只读回复兜底(明确说明"这是咨询/假设,账号没有改变",并给出 2–3 个具体可执行建议)。 |
| R-51 | 回复过程被中断或回答不合格时,兜底文案为"这次回复没有完成。请重新说一次你最想了解的问题。",并保留已显示的安全正文。 |
| R-52 | 后续问题建议由模型生成;无效时由规则按页面与状态生成 3 条(2–32 字、去重、不与用户消息相同、按轮次轮换),不依赖模型。 |
8. 初始化对话(游客路径)的差异规则
| 规则 | 内容 |
|---|---|
| R-53 | 初始化对话只更新生活画像,不生成任何账号动作卡;画像结果只在内部解析,回复在画像完成处截止,内部标记与结构化内容绝不出现在界面。 |
| R-54 | 画像归一化:长期目标、作息、饮食习惯、咖啡因习惯取模型或规则推导结果(各不超过 120 字);待确认方向(2–4 个)永远由确定性规则从划卡答案推导,模型不可改。 |
| R-55 | 登录用户完成初始化对话时画像即保存到账号(跨设备恢复);游客画像只存本机。 |
| R-56 | 语言模型不可用时使用内置顾问,画像仍从用户真实划卡答案推导,不套用固定模板。 |
Agent 能力地图(14 项受控能力)
| 能力 | 读写 | 用户怎么说会触发 | 确认后的效果 |
|---|---|---|---|
| 读取我的状态 | 只读 | 「我现在吃什么」「我的画像」 | — |
| 读取健康模型 | 只读 | 问长期目标、偏好、安排 | — |
| 记录今日状态 | 待确认写入 | 「昨晚 2 点才睡」「今天训练了」 | 写入今日事件,只影响当天建议 |
| 新增 / 修改标准补剂 | 待确认写入 | 「我在吃鱼油 2 粒」 | 更新当前计划,同步今日/周计划/资料库 |
| 记录个人补剂 | 待确认写入 | 「我在吃姜黄粉」(无法安全映射目录) | 按用户原话保存记录 |
| 删除补剂 | 待确认写入 | 「鱼油不吃了」 | 从当前计划移除 |
| 修改结构化资料 | 待确认写入 | 「体重改成 72kg」「在吃二甲双胍」 | 更新资料,重算安全提醒 |
| 修改生活画像 | 待确认写入 | 「我的作息改成 23 点睡」 | 更新长期画像 |
| 更新健康目标 | 待确认写入 | 「我最想改善睡眠」 | 替换当前目标(自由文本) |
| 更新健康路径偏好 | 待确认写入 | 「先从饮食开始,不想吃补剂」 | 调整方案排序,不改科学结论 |
| 创建精力与睡眠改善方向 | 待确认写入 | 「想改善下午精力和睡眠」 | 生成 7 天方案(目标+4 项安排),不含补剂 |
| 新增 / 修改生活安排 | 待确认写入 | 「下午 3 点以后不喝咖啡」 | 写入长期安排(含具体动作+时间) |
| 停止生活安排 | 待确认写入 | 「停止晚饭后散步」 | 安排停止,历史保留 |
| 推荐后续问题 | 只读 | 每次回答结束时自动 | 生成 3 条下一步输入建议 |
Agent 动作生命周期(状态机)
标题 + 摘要 + 影响 + 修改前/后;同批动作可逐项确认;普通一轮最多 4 项,纯补剂批量口述最多 12 项
唯一写入入口;重复点按不重复写入;同批次连续确认自动更新后续动作的状态基线
账号不变;取消后不可再确认
预览生成后账号被其他入口改过 → 拒绝写入,提示重新发送生成最新预览
两条对话路径
| 项目 | 游客 · 初始化对话 | 登录后 · 全局 Agent |
|---|---|---|
| 上下文 | 本机消息历史 + 首次画像 | 账号状态 + 会话历史 + 页面位置 |
| 写入能力 | 只更新生活画像,不生成动作卡 | 白名单修改先生成动作卡,确认后写入 |
| 会话 | 本机当前显示,可重置 | 云端一个活动会话;新开对话旧消息保留但不进入上下文 |
数据库与设备数据对象索引
覆盖当前 23 个服务端表、受控目录和设备侧对象。每个条目列出字段、业务含义及消费模块;页面图示中的数据标签可直接跳到这里。
业务规则库
从全部模块文档自动提取,共 173 条。可输入关键词搜索,或按模块筛选。
待确认
来源:首次使用与账号 · 首次使用与账号产品需求文档(PRD)