隐私政策
kAIboard — 最后更新: 2026年3月26日 — 版本: 3.0
1. 数据控制者
Alessandro Faedda 是通过 kAIboard 应用收集的个人数据的数据控制者。
2. 我们收集哪些数据
kAIboard 遵循数据最小化原则进行设计。我们仅收集应用正常运行所必需的数据。
2.1 自动收集的数据
| 数据 | 类型 | 目的 | 法律依据 |
|---|---|---|---|
| 设备数组 | 标识符列表(例如 ["android_e19d6c...", "android_175be4..."]) | 在使用相同 Google Play 账户的多台设备间同步订阅和 Token 余额 | 合同履行(GDPR 第 6.1(b) 条) |
| 当前 Token 用量 | 整数 (current_usage) | 追踪所有设备间的共享月度消耗 | 合同履行(GDPR 第 6.1(b) 条) |
| 购买历史记录 | 产品 ID、购买日期、订单 ID | 验证购买并防止欺诈 | 合同履行(GDPR 第 6.1(b) 条) |
| 待翻译文本 | 文本内容 | 实时翻译 | 合同履行(GDPR 第 6.1(b) 条) |
多设备同步
如果您在多台设备上使用 kAIboard 并登录相同的 Google Play 账户:
- ✅ 订阅在所有设备间自动共享
- ✅ Token 余额实时同步
- ✅ 月度限额为共享额度(例如 250,000 个 Token 为总量,而非每台设备的限额)
- ✅ Firebase 监听器同时更新所有设备
多设备保存的数据:
- devices:使用同一订阅的匿名 Android ID 数组
- purchaseToken:Google Play 订阅的唯一密钥(Firestore 文档 ID)
- current_usage:所有设备间的 Token 总消耗量(单一计数器)
隐私说明:devices 数组仅包含经过假名化处理的 Android ID(例如 "android_abc123...")。我们不收集电话号码、IMEI 或其他个人标识符。
2.1.1 月度订阅数据
如果您订阅了月度订阅(例如包含 250,000 Token/月的 PLUS 方案),我们会保存以下额外数据:
| 数据 | 类型 | 目的 | 法律依据 |
|---|---|---|---|
| 订阅方案 | 字符串(例如 "plus"、"pro"、"max") | 识别活跃方案并应用正确的 Token 限额 | 合同履行(GDPR 第 6.1(b) 条) |
| 每月 Token 限额 | 整数(例如 250000、500000、1000000) | 应用订阅包含的最大 Token 上限 | 合同履行(GDPR 第 6.1(b) 条) |
| 当前 Token 用量 | 整数 | 追踪共享的月度消耗并执行限额 | 合同履行(GDPR 第 6.1(b) 条) |
| 每月重置日期 | ISO 日期(例如 "2026-02-01") | 每月自动重置用量 | 合同履行(GDPR 第 6.1(b) 条) |
| Google Play 产品 ID | 字符串(例如 "abbonamento_mensile_2500") | 通过 Google Play Billing API 验证订阅有效性 | 合同履行(GDPR 第 6.1(b) 条) |
| 自动续订状态 | 布尔值 | 验证订阅是否将自动续订 | 合同履行(GDPR 第 6.1(b) 条) |
| 订阅购买日期 | 时间戳 | 管理计费周期和争议处理 | 合同履行(GDPR 第 6.1(b) 条) |
| 订阅到期日期 | ISO 8601 时间戳(例如 "2026-02-28T14:30:00Z") | 管理取消后的宽限期(订阅在此日期前保持有效) | 合同履行(GDPR 第 6.1(b) 条) |
| "不再续订"标记 | 布尔值 (will_not_renew) | 标识订阅已取消但在到期前仍然有效 | 合同履行(GDPR 第 6.1(b) 条) |
| 取消日期 | 时间戳 (cancelled_at) | 追踪用户取消订阅的时间 | 合同履行(GDPR 第 6.1(b) 条) |
2.1.2 宽限期
如果您通过 Google Play 取消订阅,高级服务将在已付费周期结束前保持有效。
示例:
- 您于 2026 年 1 月 15 日购买 PLUS 订阅
- 您于 2026 年 1 月 20 日取消订阅
- ✅ 高级服务在 2026 年 2 月 15 日前保持有效(已付费)
- ✅ 月度 Token 在到期前均可使用
- ❌ 订阅不会自动续订
宽限期内保存的数据:
- subscription_end:您有权享受服务的确切截止日期
- will_not_renew:表示"已取消但仍有效"的标记
- cancelled_at:取消操作的时间戳
- monthly_limit:在到期前保留的 Token 限额
宽限期结束时:
- 高级功能自动停用
- 订阅数据转入历史记录 (user_subscriptions_history)
- 活跃文档 (user_subscriptions) 被删除
- 您可以通过"删除云端数据"删除历史记录
订阅有效(未取消)时:如果您卸载并重新安装应用,或者使用同一Google账户在新设备或多个设备上安装应用,订阅和代币余额将自动同步。您无需执行任何操作——首次启动时系统将自动恢复。
订阅已取消(宽限期内)时:如果您在同一设备上重新安装应用,系统将通过Firebase找到您的订阅和代币余额,并自动恢复,即使在宽限期内也是如此。在使用同一账户且之前已安装过该应用的其他设备上,如果该设备已在系统中注册,恢复也应自动完成。
重要提示:如果在宽限期内,您在一台从未使用过您的账户安装kAIboard的全新设备上安装应用,由于该新设备尚未在系统中注册,出于安全原因,剩余天数和代币余额可能无法恢复。同样,如果您在宽限期内删除应用的云端数据,删除将立即生效,届时您将永久失去剩余期限和代币余额。
2.1.3 订阅历史记录
当订阅到期或被删除时,我们会将数据转移到历史记录文档中,以符合 GDPR 合规和审计要求。
| 数据 | 类型 | 目的 | 保留期限 |
|---|---|---|---|
| 订阅历史记录 | user_subscriptions_history/{purchaseToken} 中的对象数组 | 购买可追溯性、审计轨迹、GDPR 合规 | 到期后 90 天 |
| 每条记录的数据 | 方案、已用/限额 Token、开始/结束/取消日期、取消原因、设备 | 审计、用户支持、退款管理 | 到期后 90 天 |
- ✅ 活跃文档 (user_subscriptions/{purchaseToken})
- ✅ 历史记录文档 (user_subscriptions_history/{purchaseToken})
- ✅ 管理操作日志 (admin_activity_logs/{device_id})
- ✅ GDPR 合规:通过 purchaseToken 搜索,以 devices 数组为备选
2.1.4 管理操作日志
为确保可追溯性并在争议情况下提供支持,我们保存与订阅相关的主要操作记录。
| 数据 | 类型 | 目的 | 保留期限 |
|---|---|---|---|
| 管理操作日志 | admin_activity_logs/{device_id} 中的事件数组 |
|
最后修改后 90 天 |
| 记录的事件 |
|
追踪修改历史以供审计和支持 | 最后修改后 90 天 |
| 每个事件的详细信息 | 时间戳、操作、原因、方案、操作详情 | 在争议情况下重建事件时间线所需的信息 | 最后修改后 90 天 |
- 60 天内的争议管理(Google Play 要求)
- 技术支持和问题解决
- 计费系统的防欺诈
- 运营合规的审计轨迹
对用户权利的影响已最小化,因为:
- ✅ 数据经过假名化处理(无直接个人标识符)
- ✅ 保留期限限定为 90 天
- ✅ 通过后台清理任务每 24 小时自动删除
- ✅ 可通过"删除云端数据"手动删除
2.2 仅存储在本地的数据(设备上)
以下数据绝不会发送到外部服务器:
- ✅ 应用偏好和设置
- ✅ 每位联系人的语言分配(联系人 ID + 语言代码)
- ✅ 输入的词汇,用于个性化建议(最多保留 14 天,之后自动删除)
- ✅ 翻译缓存(仅存于内存,关闭应用后清除)
- ✅ N-gram 预测模型(用户下载,本地保存)
- ✅ 设备端翻译包(ML Kit,由用户下载,每种语言约 30 MB,由 Google Play Services 管理)
- ✅ Hunspell 词典(从 assets 复制,本地保存)
- ✅ 订阅提醒(关于使用量的本地通知)
2.3 我们不收集的数据
kAIboard 不收集:
- ❌ 消息历史记录
- ❌ 聊天的完整内容
- ❌ 电话号码
- ❌ 联系人的电子邮件地址
- ❌ 精确地理位置
- ❌ 生物识别数据
- ❌ 广告标识符
3. 我们如何使用您的数据
3.1 实时翻译
当您使用翻译功能时:
- 您输入的文本被发送至我们的 Cloudflare Worker 服务器(安全中转)
- Worker 将文本转发至 OpenAI 进行翻译
- 翻译结果返回至应用
- ⚠️ 重要提示:文本绝不会保存在我们的服务器或 OpenAI 上(仅在内存中中转)
3.1.1 设备端翻译(ML Kit)
kAIboard 还提供完全在设备上进行的翻译模式,无需互联网连接:
- 语言包(每个约 30 MB)通过 Google Play Services 下载到设备
- 翻译完全在设备上完成——不会将任何文本发送到外部服务器
- Google Play Services 管理模型的下载和存储
- ⚠️ 隐私:与云翻译不同,设备端翻译不会向第三方传输任何数据。文本仅保留在您的设备上
您可以在应用设置中的设备端翻译包界面管理语言包(下载和删除)。
3.2 备份与订阅同步
订阅数据保存在 Firebase(Google Cloud)上,以便您:
- ✅ 在使用相同 Google Play 账户的所有设备上使用订阅
- ✅ 在所有设备间实时同步 Token 消耗
- ✅ 重新安装应用后恢复订阅(仅在订阅处于活跃状态且自动续订时)
- ✅ 更换手机后保留您的余额
3.3 订阅防欺诈保护
kAIboard 使用基于共享计数器的保护系统,确保所有设备间的 Token 消耗完整性。
工作原理:
每个订阅关联到一个唯一的 Firestore 文档,以 Google Play 的 purchaseToken 为标识。使用相同 Google 账户的所有设备对同一文档进行读写,确保共享且唯一的用量计数器。
实际运行方式:
- 设备 A 购买 PLUS 订阅(250,000 Token/月)→ 创建 Firestore 文档 ✅
- 设备 B(相同 Google Play 账户)打开应用 → 检测到相同订阅,连接至同一文档 ✅
- 设备 A 使用 1,000 个 Token → Firestore 上的
current_usage变为 1,000 - 设备 B 实时接收更新 → 显示 249,000 个可用 Token ✅
- 两台设备可同时保持活跃,无需使任何设备失效 ✅
安全性保障:
- ✅ 唯一计数器:每个订阅仅存在一个
current_usage值,无法复制 - ✅ 实时同步:每次消耗立即写入 Firestore 并通过监听器传播至所有设备
- ✅ 由 Google Play 管理有效性:订阅有效性通过 Google Play Billing API 验证,用户无法修改
- ✅ 唯一的 purchaseToken:Google Play 为每次购买分配不可变的 Token,用作 Firestore 文档的键
防欺诈保护保存的数据:
- purchaseToken:订阅的唯一密钥(Firestore 文档 ID)
- devices:使用过该订阅的假名化 Android ID 数组
- current_usage:当月已消耗 Token 的共享计数器
- monthly_limit:所订阅方案的最大 Token 限额
法律依据:合同履行(GDPR 第 6.1(b) 条)——共享计数器是所购订阅服务的组成部分,是在所有设备上正确执行月度限额所必需的。
3.4 购买验证
购买历史记录用于:
- ✅ 验证应用内购买的有效性
- ✅ 防止欺诈和滥用
- ✅ 管理 Google Play 的退款和争议
4. 我们将数据发送到哪里
4.1 第三方服务
| 服务 | 发送的数据 | 目的 | 服务器位置 |
|---|---|---|---|
| Firebase (Google) | 匿名 ID、Token 余额、购买历史记录、订阅数据、操作日志 | 备份、同步、审计轨迹 | 欧盟(欧洲服务器) |
| Cloudflare Worker | 待翻译文本(仅中转) | 翻译的安全中转 | 欧盟(欧洲服务器) |
| OpenAI | 待翻译文本(仅中转) | 翻译处理 | 美国(使用标准合同条款) |
| Google Play Billing | 订单 ID、购买的产品 | 应用内购买管理 | 欧盟(Google 服务器) |
4.2 欧盟境外传输
待翻译文本被发送至 OpenAI(美国)进行处理。传输基于:
- ✅ 经欧盟委员会批准的标准合同条款 (SCC)
- ✅ OpenAI 公开的隐私政策声明不将 API 数据用于模型训练
- ✅ 临时中转:文本不会被保存(存储时间为 0 秒)
⚠️ 重要提示:kAIboard 通过 API 使用 OpenAI 作为翻译服务提供商。尽管 OpenAI 公开声明不将 API 数据用于训练,但我们与 OpenAI 之间没有正式的数据处理协议 (DPA)。建议您避免翻译高度敏感的信息(健康、财务、法律数据)。
参考链接:
5. 我们保留数据多长时间
5.1 自动保留政策
| 数据类型 | 保留期限 | 删除方式 |
|---|---|---|
| 活跃订阅数据 (Firebase) | 直到当前计费周期结束 | 订阅到期后自动删除 + 转入历史记录 |
| 订阅历史记录 (Firebase) | 订阅到期后 90 天 | 自动删除 + 通过"删除云端数据"手动删除 |
| 操作日志 (admin_activity_logs) | 最后修改后 90 天 | 自动删除(每 24 小时)+ 手动删除 |
| 购买历史记录 (Firebase) | 购买后 365 天 | 自动删除 + 手动删除 |
| 本地数据(设备) | 直到卸载 | 卸载应用 + 手动删除 |
| 联系人-语言缓存(设备) | 直到手动删除或卸载 | "删除所有本地数据"按钮 |
| N-gram 预测模型(设备) | 直到手动删除或卸载 | "删除所有本地数据"按钮或从离线模型界面移除 |
| 设备端翻译包(ML Kit) | 直到手动删除或卸载应用 | "删除所有本地数据"按钮或从翻译包界面删除 |
| Hunspell 词典(设备) | 直到手动删除或卸载 | "删除所有本地数据"按钮 |
| 已学习的词汇(预测输入) | 14 天(自动衰减) | 自动删除 + 手动删除 |
| 翻译文本 | 0 秒(从不保存) | 自动(仅在内存中中转) |
| 翻译缓存 (RAM) | 直到关闭应用 | 自动 |
6. 您的权利 (GDPR)
根据 GDPR,您享有以下权利:
6.1 访问权(GDPR 第 15 条)
您可以请求获取我们保留的关于您的所有数据的副本。订阅数据可直接在应用内查看。
6.2 更正权(GDPR 第 16 条)
您可以更正不准确或不完整的数据,例如修改联系人关联的语言。
6.3 删除权(GDPR 第 17 条)
您可以随时通过应用内的隐私设置界面删除所有数据:
- ✅ 删除云端数据:从 Firebase 移除订阅数据、订阅历史记录、购买历史记录和操作日志
- ✅ 删除学习数据:移除用于输入建议的已学习词汇(全部 13 种语言)
- ✅ 删除所有本地数据:移除设备上的所有偏好设置、数据、已下载的模型、词典和缓存
如果您有活跃的月度订阅,云端数据的删除将暂时被阻止,直到您取消订阅。
原因:与订阅相关的数据(活跃方案、Token 限额、重置日期)是履行现有合同所必需的(GDPR 第 6.1(b) 条)。提前删除将导致:
- ❌ 已购买的月度服务无法正常运行
- ❌ Token 限额无法在多台设备间同步
- ❌ Token 无法在月初自动重置
操作步骤:
- 通过 Google Play 商店取消订阅
- 等待当前计费周期结束
- 通过应用删除云端数据
立即取消:应用会自动跳转到 Google Play 以管理您的订阅。取消后,数据删除功能将立即可用。
宽限期内删除:取消订阅后,即使在已付费的剩余有效期(宽限期)内,您也可以随时删除云端数据。删除立即生效,意味着您永久放弃剩余有效期和当前 Token 余额。此操作不可撤销。
阻止删除的法律依据:GDPR 第 17.3(b) 条——"在数据处理对于履行数据主体所参与的合同是必要的情况下,删除权不适用"。
6.4 数据可携权(GDPR 第 20 条)
您可以通过隐私设置界面中的"导出您的数据 (JSON)"按钮,将数据导出为机器可读的 JSON 格式。文件包括本地数据(偏好设置、学习数据)和云端数据(订阅、历史记录、操作日志)。
6.5 反对权(GDPR 第 21 条)
您可以基于正当理由反对数据处理。您可以随时停用翻译功能、关闭崩溃报告以及撤销通讯录访问权限。
6.6 投诉权
您可以向有管辖权的监管机构提出投诉:
- 德国:联邦数据保护和信息自由专员 (BfDI) - www.bfdi.bund.de
- 意大利:个人数据保护局 - www.garanteprivacy.it
7. 如何行使您的权利
7.1 通过应用(立即生效)
路径:设置 → 隐私与安全
- 导出您的数据 (JSON):以机器可读格式完整导出本地和云端数据(第 15 条 + 第 20 条)
- 删除云端数据:订阅数据 + 订阅历史记录 + 购买历史记录 + 操作日志(不可撤销 - 如有活跃订阅需先取消)
- 删除学习数据:已学习的词汇(13 种语言)
- 删除所有本地数据:所有偏好设置、已下载的模型、词典、缓存(应用重启)
7.2 通过电子邮件请求
如需行使其他权利,请发送邮件至:support@kaiboard.eu
我们将在收到请求后 30 天内回复(GDPR 第 12 条)。
8. 数据安全
我们实施技术和组织措施来保护您的数据:
- 🔒 传输加密:所有通信使用 HTTPS/TLS 1.3
- 🔒 静态加密:Firebase 使用 AES-256 加密
- 🔒 本地数据库加密:学习数据库通过 Android Keystore 硬件支持的 AES-256 加密
- 🔒 Firebase 安全规则:仅限数据所有者访问(默认拒绝)
- 🔒 假名化 ID:无直接个人数据(姓名、电子邮件、电话)
- 🔒 数据最小化:仅收集绝对必要的数据
- 🔒 自动删除:数据在规定的保留期限(90-365 天)后自动删除
- 🔒 API 密钥保护:OpenAI API 密钥从不暴露在客户端,以密钥形式保存在 Cloudflare 中转服务器中
9. 设备标识符与 Android 权限
9.1 使用的设备标识符
kAIboard 使用以下标识符生成匿名设备 ID:
| 标识符 | 类型 | 目的 | 持久性 |
|---|---|---|---|
| Android ID | Settings.Secure.ANDROID_ID | 生成唯一且稳定的设备 ID | 在应用重新安装间保持不变(相同签名密钥)。恢复出厂设置后会改变。 |
| Install Referrer ID | Google Play Install Referrer API | Android ID 不可用时的备选方案 | 在重新安装间保持不变(如从 Play 商店安装) |
| 本地 UUID | java.util.UUID | 最终备选方案(仅用于侧载安装) | 不持久(卸载后丢失) |
⚠️ 隐私说明:Android ID 是设备的唯一标识符。kAIboard 仅用它来生成假名化的匿名 ID(格式:"android_[hash]")。原始 Android ID 绝不会发送到我们的服务器或第三方。
9.2 应用权限
| 权限 | 目的 | 是否必需 |
|---|---|---|
| 通讯录 | 为每位联系人分配语言以自动切换键盘 | ❌ 否(可选) |
| 无障碍服务 | 检测当前活跃的聊天应用以自动切换语言 | ❌ 否(可选) |
| 通知 | 在锁屏快捷回复中使用正确语言 | ❌ 否(可选) |
| 麦克风 | 语音输入(仅在按下麦克风按钮时录音) | ❌ 否(可选) |
| 互联网 | 实时翻译和云端备份 | ✅ 是(翻译功能需要) |
10. 崩溃报告(可选)
kAIboard 可以向 Firebase Crashlytics 发送匿名崩溃报告,但仅在您明确开启此选项后才会发送。
崩溃报告包含的内容:
- ✅ 堆栈跟踪(代码中的错误路径)
- ✅ 应用版本和操作系统版本
- ✅ 设备型号
- ✅ 运行时信息(内存、CPU)
崩溃报告不包含的内容:
- ❌ 输入的文本
- ❌ 聊天内容
- ❌ 联系人姓名
- ❌ 消息
法律依据:明确同意(GDPR 第 6.1(a) 条)
如何关闭:设置 → 崩溃报告(可选)→ 关闭。关闭后将停止未来的发送,并删除设备上尚未发送的报告。已发送至 Firebase 的报告保留在后端,无法从手机上删除。
11. 未成年人
kAIboard 不面向 13 岁以下的儿童。我们不会有意收集未成年人的数据。如果您是家长并发现您的孩子提供了数据,请联系我们进行删除。
12. 隐私政策变更
我们可能会不定期更新本隐私政策。如有重大变更,我们将通过以下方式通知您:
- 📧 电子邮件(如已提供)
- 📱 应用内通知
- 🌍 更新本文档顶部的日期
变更后继续使用应用即表示接受新的隐私政策。
13. 数据处理的法律依据
我们处理您的数据基于以下法律依据:
- GDPR 第 6.1(b) 条 - 合同履行:订阅管理、多设备同步、共享 Token 计数器、购买历史记录、翻译
- GDPR 第 6.1(a) 条 - 同意:崩溃报告(可选)
- GDPR 第 6.1(f) 条 - 合法利益:
- 购买安全
- 保护计费系统免受滥用
- 管理操作日志(审计轨迹)
管理操作日志的必要性在于:
- ✅ 60 天内的争议管理(Google Play 要求)
- ✅ 技术支持和问题解决
- ✅ 计费系统的防欺诈
对用户权利的影响已最小化,因为:
- ✅ 用户可通过"删除云端数据"删除日志
- ✅ 系统仅使用假名化数据(无直接个人数据)
- ✅ 逻辑透明并在本隐私政策中有完整记录
- ✅ 保留期限限定为 90 天,到期自动删除