隐私政策

中文译本

版本 v4.1 | 2026-09-07 生效 | 最后更新 2026-09-07

运营者说明:Nourai 当前由个人开发者运营。本政策根据产品和基础设施的实际行为维护,不表示 Nourai 已获得 HIPAA 合规认证或法律顾问审阅。
v4.0 发布说明:本版本新增可选的私密户外训练路线功能及精确位置披露。运营者确认 v4.0 生效前没有既有外部用户,因此当前移动端版本不展示版本化 App 内更新提示,也不为本次变更发送通知邮件;本公开政策提供本次发布披露。
v4.1 发布说明:本版本将后端缓存处理方由 Google Cloud Memorystore 更换为 Upstash, Inc.(部署于 AWS us-east-1),2026-09-06 起用于生产。处理的数据类别不变(仅短 TTL 缓存条目),Upstash 的 DPA、欧盟标准合同条款(SCC)与 EU-U.S. Data Privacy Framework 提供与此前 Google Cloud 处理条款等效的保障;本公开政策提供本次发布披露。

本文档是英文版隐私政策的中文翻译,仅供参考。如发生法律争议,以英文版为准。

1. 概述

Nourai("我们"、"本应用")是由个人开发者 Huibin Wu 运营的 AI 食物营养追踪应用。我们致力于以最小必要数据原则为您提供服务。本隐私政策说明我们收集哪些信息、如何使用这些信息、以及您享有的数据权利。

使用 Nourai 即表示您已阅读并理解本政策。如您不同意本政策的任何内容,请不要使用本应用。

2. 我们收集的数据

2.1 账户信息(必填)

  • 电子邮箱地址(用于登录与找回密码)
  • 密码哈希值(使用 argon2 算法哈希存储,我们永远不会存储您的明文密码)
  • 显示名称(display_name,可选)
  • 账户创建时间与最后登录时间

2.2 用户画像(可选)

  • 生理数据:身高(cm)、体重(kg)、年龄、性别
  • 活动水平(sedentary / lightly active / moderately active / very active)
  • 健康目标(减重 / 增重 / 维持 / 增肌)
  • TDEE 与每日能量预算(由您的画像计算得出)

2.3 饮食记录

  • 食物名称、克重、餐次(早/午/晚/加餐)、时间戳
  • 每条记录的营养数据(能量、碳水、蛋白质、脂肪、纤维、糖分、钠等)
  • 关联的食物照片 URL(存储于 Google Cloud Storage 对象存储)
  • 您主动上传的营养标签照片

2.4 AI 识别数据

  • 上传的食物照片会由当前已审阅配置选择的识别服务处理。当前主力为 DeepSeek V4 Flash Vision ExpGoogle Vertex AI / Gemini 3.8 Flash 为受控候选;同一次识别请求不会并发发送给多个服务商。
  • 营养标签和包装正面照片以 DeepSeek V4 Flash Vision Exp 作为 OCR/提取主力;Google Vertex AI / Gemini 3.8 Flash 保留为运营人员可选择的候选。同一张图片不会发送或重放给两个服务商。
  • 识别结果(食物候选、置信度、AI 估计的克重)

我们承诺:这些照片仅用于识别当前记录;Nourai 不会用它们训练 Nourai 自有 AI 模型,也不会在用户之间共享。DeepSeek 服务商是否用于训练或改进,当前 API 证据尚未确认。

2.5 语音数据

  • 您通过 App 内"说话记录"功能录制的音频
  • 音频仅临时上传至服务器,通过 Nourai 后端调用 Google Vertex AI / Gemini 进行转录;用于餐食记录时,转录文本由 DeepSeek V4 Flash 解析为食物草稿,音频本身不会发送给 DeepSeek。您随后提交给 Nour 对话的 transcript 按下述 Chat provider 路径处理。音频通常在数秒内于处理完成后删除;如技术性失败需要短暂重试,临时音频保留不得超过 24 小时
  • 转录后的文字会保留于相应的饮食记录或聊天历史中

2.6 Nour 对话

  • 您与 AI 助手 Nour 的聊天消息(message / response / conversation_id)
  • 用于维持对话上下文的会话 ID
  • 已登录用户的 Nour 对话当前以 DeepSeek V4 Pro 为 primary。只有在收到任何 DeepSeek 输出前发生 typed transient failure,才会顺序使用该意图原本的 Google Vertex AI / Gemini 3.8 Flash 模型一次;不会并发复制请求,也不会在输出开始后切换 provider。
  • 发送给 DeepSeek 的上下文按 Chat 意图选择:普通闲聊和食物记录回复不发送数据库中的用户画像、记忆或当日营养上下文;营养建议可能发送相关画像/目标、已保存的饮食记忆和当日营养汇总;只有当您明确询问“今天吃了什么”等当日食物问题时,必要上下文才可能包含逐条食物名、餐次/时间、克数、热量和宏量营养。prompt 还可能包含当前消息和必要的近期用户消息。只要请求可能触达 DeepSeek,系统就会排除历史 assistant 回复和 synthetic conversation summaries;系统不会自动附加账户邮箱、内部 user ID、分组 bucket、display_name、照片 URL 或原始 HealthKit / Health Connect sample。您主动输入的聊天正文可能本身含有身份信息,并会作为该条 Chat 消息的一部分发送。
  • 食物识别、营养标签 OCR 与包装正面识别只向 DeepSeek 发送本次请求的对应照片、prompt/schema 与必要的拍摄 metadata;不会附加账户邮箱、user/entry ID、存储 pointer、历史照片、音频或原始 HealthKit / Health Connect sample。
  • 已登记的 DeepSeek 文本服务只接收各自的受限输入:Google 完成音频转录后的餐食文本;食物名和目标语言;用于明确标记低信任营养估算的食物名、总重量和餐次;用于记忆抽取的本轮已保存 user/assistant 对话对(只允许从用户文本提取事实);用于后台压缩的最旧、定长对话窗口;仅在用户主动开启情绪洞察后使用的当前用户消息;用于主动洞察措辞的既有 pattern/evidence、display name 和语言;用于周报的本周/上周聚合、连续记录、高置信 goal memory、语言和 opt-in emotion distribution;或已遮罩发件人、并限制长度的入站客服邮件收件人、主题和正文。对话或邮件正文可能本身包含身份或健康信息。
  • DeepSeek 开放平台条款确认 API 模型会处理终端用户 Inputs,并要求 Nourai 披露委托个人信息处理;其第 5.5 条同时明确,所链接的 DeepSeek 隐私政策不覆盖下游终端用户的处理规则。因此 Nourai 尚未获得 API 输入处理/存储地点、训练或改进用途、保留/删除、仅按 processor 指令处理或敏感健康数据接受范围的 provider-specific confirmation。

2.6.1 情绪洞察(Opt-in,默认关闭)

  • 类别:情绪状态(Emotional State)— 从您与 Nour 的对话中推断出的情绪分类(joy / stress / fatigue / motivation / frustration / neutral)及其置信度
  • 存储形式:情绪信号以高层级标签和数值置信度保存,不会保存原始生物识别情绪模板,也不会保存面部或指纹识别模板
  • 采集条件:仅当您在"设置 → 情绪洞察"中显式开启后才会采集,默认关闭
  • 用途:仅用于为您自己的洞察与分析(周报、心情图表)提供洞察。不用于广告、不用于推送、不跨用户聚合
  • 数据归属:该数据与您的账户(user_id)关联
  • 保留:由您自己决定。关闭开关仅停止新的观测记录,不会自动删除历史。您可随时通过 "设置 → 情绪洞察 → 清空历史记录" 或调用 DELETE /api/v1/users/me/emotions 立即硬删除所有已记录的情绪观测

2.7 户外训练路线(可选)

Nourai 仅在您主动选择为户外训练记录路线并授予 iOS 位置权限时收集精确位置。您也可以不使用 GPS 记录训练。

在该训练处于活动状态期间,Nourai 可能收集:

  • 精确经纬度、时间戳和水平精度
  • 设备提供的可选海拔、垂直精度、速度和方向
  • 仅您可见的私密路线,以及服务端派生的距离和爬升
  • 您请求导航时的可选目的地与路线规划 geometry

Nourai 只请求 iOS 使用 App 期间(When In Use)的位置权限。在您明确开始的训练仍处于活动状态时,iOS 可能在锁屏或 App 进入后台后继续位置更新,并显示系统位置指示。Nourai 不请求始终(Always)位置权限,不会在活动训练之外持续追踪您,也不会公开路线。

raw route 是与 owner 绑定的健康与位置数据,传输和静态存储均加密。未完成路线还可能保存在 iPhone 上使用 AES-GCM 加密、与 owner 绑定的恢复文件中。经纬度、时间戳、目的地和路线 geometry 不进入普通日志、analytics、Sentry、广告或 AI / LLM prompt。

如果您请求 guided navigation,Apple MapKit 会接收本次请求的起点、目的地及必要的路线规划 geometry。Nourai 不会把已保存 raw route 发送给 AI provider。保存后的路线只能由您通过已认证账户访问;当前不提供公开路线分享。

您可以只删除 raw route 并保留训练摘要、删除训练、在账户导出中取得路线记录、在 iOS 设置中撤销位置权限,或删除账户。只删除路线会移除 raw sample,但可能保留不含坐标的训练摘要及防止误重建所需的删除 tombstone。

2.8 使用统计与诊断

  • 崩溃报告(通过 Sentry SDK 收集,不包含您的饮食记录或个人资料)
  • 设备型号、操作系统版本、应用版本(匿名)
  • Sentry 为可选项:您可在设置中禁用崩溃报告上传

当前 Sentry 项目证据显示:已开启服务端数据清洗、默认清洗器、禁用 IP 地址存储,并配置了 emailfood_recordchat_contentaudio_filenameHealthKitHealthConnect 等敏感字段名。截图未显示项目级 Advanced Data Scrubbing 规则;如需要基于模式的额外脱敏,应单独添加规则。

当前证据支持 Sentry DPA 已签署,但未显示 Sentry BAA 已签署。因此 Nourai 必须确保 Sentry 不接收 PHI 或敏感用户内容。

2.9 我们不收集的数据

  • 我们不收集联系人、日历、相册中的其他照片
  • 我们不访问通话记录、短信或其他 App 数据
  • 我们不使用第三方广告追踪 SDK(如 Facebook Pixel、Google Analytics for Firebase Ads)
  • 我们不出售您的个人数据

Nourai 不会为非法定目的收集、分享或出售消费者健康数据,包括可能受 Washington My Health My Data Act 规制的消费者健康数据;仅在提供您请求的功能、遵守法律、保护安全或本政策所述目的所合理必要的范围内处理。

3. 数据用途

您的数据仅用于以下目的:

  1. 提供核心功能:记录饮食与训练、可选的私密户外路线、计算营养摄入、显示历史数据、生成趋势洞察
  2. AI 处理:食物识别、营养标签 OCR、包装正面识别、已登录 Nour 对话、餐食文本解析、食物名翻译、低信任营养估算、记忆抽取/对话压缩、opt-in 情绪分类、主动洞察措辞、周报和入站客服邮件分类以 DeepSeek 为主力;Google Vertex AI / Gemini 保留受控视觉候选、音频转录、embedding、带来源搜索和 Chat 输出前故障兜底
  3. Nour 助手:已登录 Nour 对话当前通过 Nourai 后端调用 DeepSeek V4 Pro 作为 primary;仅在任何输出前发生 typed transient failure 时,才以该意图原本的 Google Vertex AI / Gemini 模型顺序 fallback,结合完成回复所需的相关饮食上下文生成回复
  4. 营养数据匹配:使用食物名称在营养数据库(缓存自 USDA + Open Food Facts)中查询营养值,或使用您明确输入的营养值
  5. 个性化:根据 TDEE 与画像显示每日能量预算与宏量素目标
  6. 产品改进:汇总匿名崩溃报告以修复 Bug(通过 Sentry)

营养数据可信度边界:高信任营养值来自数据库、产品标签、受控 provider 或您明确输入的内容。当没有已验证来源匹配且您请求或查看 AI Nutrition Estimate 时,DeepSeek 可以根据食物名、重量和餐次生成明确标记的低信任估算;结果必须通过服务端 sanity guard、由您确认后才能保存、保留 provenance,且不会写入 Nourai 权威食物表。

4. 第三方服务

服务商 用途 数据类型 隐私政策链接
Google Cloud Vertex AI / Gemini 受控食物识别、营养标签 OCR 与包装正面识别候选 / 音频转录 / Memory embedding / Google Search grounding / 已登录 Nour 对话输出前故障兜底 仅在 Gemini 候选被选择时处理对应视觉照片;另按所选能力处理临时音频、fallback Chat context、embedding 或 search input policies.google.com/privacy
DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro 当前食物识别、营养标签 OCR、包装正面识别、已登录 Nour 对话、已登记文本服务、Deep Insight、planner、主动洞察与周报主力 视觉 route 仅处理本次请求的对应照片、prompt/schema 与必要 capture metadata;文本 route 只接收上文披露的受限输入。任何 route 都不会自动附加账户邮箱、内部 user/entry ID、存储 pointer、历史照片、音频或原始健康平台 sample;用户写入的对话或邮件正文可能本身含身份信息 DeepSeek 开放平台条款consumer 隐私政策(不覆盖下游终端用户处理规则)
Google Cloud Storage 食物照片与营养标签照片存储 食物照片、营养标签照片 policies.google.com/privacy
Upstash (Redis) 后端缓存与会话(幂等标记、App Attest nonce、配额计数器、翻译 / 食物搜索缓存),2026-09-06 起用于生产 仅短 TTL 缓存条目,可能包含内部用户 ID 和用户输入的有限食物或搜索文本;不发送照片、音频、对话内容、健康平台样本或其他特殊类别数据 trust.upstash.com
Sentry 崩溃监控(可选) 崩溃堆栈、设备型号、应用版本 sentry.io/privacy
Apple MapKit 用户请求的户外路线规划与 guided navigation 本次请求的当前起点、目的地和必要路线规划 geometry apple.com/privacy
USDA FoodData Central 营养数据库(公有领域 Public Domain) 无数据回传 fdc.nal.usda.gov
Open Food Facts 营养数据库(ODbL 许可) 无数据回传 openfoodfacts.org/privacy

4.1 Open Food Facts ODbL 声明

Nourai 使用的部分营养数据来源于 Open Food Facts,遵循 Open Database License (ODbL) v1.0。依据 ODbL 规定,任何基于本应用派生的营养数据库仍保持 ODbL 许可。原始数据库贡献者归属信息可在 openfoodfacts.org 查阅。

4.2 USDA Public Domain 声明

USDA FoodData Central 的数据属于美国政府公有领域作品,无版权限制。

5. 数据存储

5.1 本地存储

  • iOS:认证 Token 存储于系统 Keychain,饮食记录缓存使用 SwiftData;未完成户外路线使用独立的 AES-GCM 加密、owner-scoped 恢复文件,并采用首次解锁前完整保护
  • Android:认证 Token 存储于 EncryptedSharedPreferences(AndroidX Security),饮食记录缓存使用 Room

5.2 云端存储

  • 数据库:PostgreSQL(带 pgvector 扩展),部署于 Google Cloud SQL us-east4
  • 缓存:Upstash Redis,部署于 AWS us-east-1,已启用 TLS,2026-09-06 起用于生产;原 Memorystore 实例(us-east4-b)在切换后观察期内保留但不活跃,随后下线
  • 对象存储:Google Cloud Storage bucket nourai-photos,区域为 US-EAST4
  • 应用托管:Google Cloud Run,区域为 us-east4
  • DeepSeek AI 处理:V4 Flash / V4 Flash Vision Exp / V4 Pro 用于食物识别、Chat、已登记文本服务、主动报告与 insight;开放平台条款未确认 API 的处理/存储地点
  • 传输加密:所有客户端与服务器之间的通信均通过 HTTPS(TLS 1.3)

5.3 数据保留期限

  • 账户有效期间:我们保留账户资料、饮食记录、照片、设置及其他由您创建的非对话数据
  • 私密训练路线:在账户有效期间保留,除非您更早删除路线或训练;只删除路线会移除 raw sample,并保留不含坐标的训练摘要和删除 tombstone
  • 对话消息与情绪观察:由您选择保留 30、90 或 365 天;未保存偏好的旧账户使用配置的 fallback 或默认 90 天
  • 账户注销后:我们会立即移除有效账户及用户可见的生产数据记录;注销后无法再通过 Nourai 访问该账户或照片
  • 删除清理记录:独立删除队列只保留完成清理所需的最少技术记录,例如原账户标识、存储对象地址、缓存命名空间标识或加密的 provider 撤销凭据。存储或 provider 故障可能使其保留超过 30 天;这些记录不能恢复账户或照片访问,删除或撤销得到确认后会移除 raw pointer 和凭据
  • 备份:已删除数据可能在自动备份中保留最多 90 天,之后由备份轮换覆盖
  • 崩溃报告:Sentry 默认保留 90 天
  • 音频文件:通常在数秒内于处理完成后删除;技术性重试导致的临时保留不得超过 24 小时
  • 服务器访问日志:保留 30 天用于安全审计

6. 用户权利(GDPR 第 15-22 条)

如果您是欧盟经济区(EEA)、英国或加州居民,您享有以下权利:

6.1 访问权(GDPR Art. 15)

您有权获取我们持有的关于您的个人数据副本。

6.2 更正权(GDPR Art. 16)

您可在 App 内"个人资料"页面随时修改用户画像。您也可联系我们更正其他不准确的数据。

6.3 删除权 / 被遗忘权(GDPR Art. 17)

您可在设置页面注销账户。请求删除后:

  • 我们立即移除有效账户,并级联删除用户可见的生产数据记录(用户资料、饮食记录、训练与 raw route、对话历史、成就、照片记录);此后无法再通过 Nourai 访问该账户、照片或路线
  • 端点:DELETE /api/v1/users/me(已上线)
  • 独立删除队列可能保留完成清理所需的最少技术记录,例如原账户标识、存储对象地址、缓存命名空间标识或加密的 provider 撤销凭据;这些记录不能恢复账户或照片访问
  • 我们会持续重试 Google Cloud Storage 对象删除和 provider 撤销,直到服务确认完成。存储或 provider 故障可能使最少清理记录保留超过 30 天;确认后会移除 raw storage pointer 和撤销凭据。Google Cloud Storage soft-delete protection 还可能把已删除对象额外保留最多 7 天
  • 备份中的数据在 90 天内被轮换覆盖

6.4 数据可携权(GDPR Art. 20)

您有权以结构化、通用、机器可读的格式(JSON)获取您的个人数据副本。

  • 端点:GET /api/v1/users/me/export(已上线)
  • 导出内容:用户资料 + 饮食记录 + 训练与路线记录 + 对话历史 + 已解锁的成就
  • 敏感字段(密码哈希、refresh token 哈希)会被过滤后再返回

6.5 反对处理权(GDPR Art. 21)

您可以反对特定目的的数据处理(如崩溃报告)。您可在设置中禁用 Sentry。

6.6 撤回同意权(GDPR Art. 7)

您可随时撤回您的同意,包括关闭情绪洞察或健康同步、禁用 Sentry、撤销位置权限或停止使用 GPS 路线记录;这不影响撤回前基于同意的处理的合法性。

6.7 权利行使方式

要行使上述任何权利,请发送邮件至 [email protected]。我们将在 30 天内响应您的请求。

请勿出售或共享我的个人信息:Nourai 不出售个人信息,也不会为了跨情境行为广告分享个人信息。如果您仍希望提交此类请求,请以该短语作为邮件主题发送至 [email protected]

加拿大用户:Nourai 会在您选择使用可选 AI 照片、营养标签、语音、健康同步和情绪洞察功能之前或使用时说明相关处理。您可以拒绝这些可选功能,并继续使用核心手动记录能力。

7. 儿童隐私

Nourai 不适用于 13 岁以下儿童。我们不会有意收集 13 岁以下儿童的个人信息。如果我们发现误收集了此类数据,将立即删除。

如果您是家长并发现您的孩子向我们提供了个人信息,请联系 [email protected]

8. 数据安全措施

我们采取以下措施保护您的数据:

  • 传输加密:HTTPS (TLS 1.3) 强制启用
  • 密码安全:argon2id 算法哈希,盐值随机
  • 认证:JWT 访问令牌(短期有效) + Refresh Token 轮换机制
  • Refresh Token 哈希:Refresh Token 以 SHA-256 哈希形式存储于数据库
  • 移动端密钥存储:iOS Keychain / Android EncryptedSharedPreferences
  • 数据库防护:参数化 SQL 查询(防 SQL 注入),sqlx 编译期 SQL 校验
  • API 安全:速率限制 (Rate Limit) 中间件,JWT 认证中间件
  • 最小权限原则:服务账号仅授予必需的数据库权限

尽管我们采取合理措施,但互联网传输与电子存储不存在 100% 安全。请妥善保管您的账户密码。

9. Cookie 和追踪

Nourai 是原生 iOS / Android 应用,不使用 Cookie。我们不使用任何第三方分析 SDK(无 Google Analytics、无 Facebook SDK、无 AppsFlyer、无 Branch.io)。

10. 国际数据传输

  • 主要处理地:我们的后端、数据库和对象存储位于 Google Cloud us-east4 / US-EAST4
  • 缓存:短 TTL 缓存条目由 Upstash, Inc. 在 AWS us-east-1(美国)处理,受其数据处理附录(DPA)约束,并以欧盟标准合同条款(SCC)与 EU-U.S. Data Privacy Framework 作为跨境传输保障
  • 跨境传输:使用 Google Cloud / Vertex AI / Gemini / Sentry 时,您的数据可能被传输至美国等第三国;食物识别、已登录 Nour 对话、已登记文本服务、主动报告和 insight 当前可能委托 DeepSeek API 处理。DeepSeek 开放平台条款未确认 API 的处理/存储地点,且当前未验证这些路径的 Nourai-specific DPA 或 SCC
  • 传输保障:对于已验证具备相应条款的服务商,我们依赖 GDPR Standard Contractual Clauses (SCC) 或等效的跨境传输保护机制;该表述不适用于上文明确列为尚未验证 DPA / SCC 的 DeepSeek 路径

11. 政策更新

我们可能会不时更新本政策。重大变更可能通过以下方式通知您:

  • 版本化 App 内通知横幅
  • 当前公开政策及本文件顶部的“最后更新”日期
  • 法律要求时使用包括电子邮件在内的其他渠道

由于 v4.0 生效前没有既有外部用户,当前版本不展示版本化 App 内更新提示,也不为本次私密路线披露发送通知邮件。

继续使用 Nourai 即表示您接受更新后的政策。

12. 联系我们

  • 隐私相关问题[email protected]
  • 法律相关问题[email protected]
  • 正式法律送达 / 邮寄地址请求:请联系 [email protected]。如发布前需要公开邮寄地址,应使用真实商业邮箱、邮政信箱或虚拟办公室地址,而不是私人住址。
  • 官网https://nourai.app
  • 数据保护官(DPO):Nourai v1 个人开发者发布阶段尚未指定 DPO。隐私请求请发送至 [email protected];如法律要求,我们会指定 DPO。