TODO(法务)本文本由工程起草、未经法律审阅,不构成法律意见。数据控制者主体、数据驻留地区与最终保留期限仍需法务确认后才能生效。
Privacy隐私政策
这份说明只描述 Focus3 现在真实做的事:登录方式只有 X,没有邮箱与密码,数据库是 Supabase Postgres,支付走 DodoPayments,AI 走 OpenRouter。下文出现的每一项数据都能在代码与数据库表里找到对应位置,没有套用模板式的兜底条款。
1. 我们是谁
Focus3(站点 focus3.top)是一个「每天承诺三件事、早上公开承诺、晚上回来复盘」的工具。 你通过 X 账号登录后,Focus3 会给你分配一个内部用户 ID;业务数据(任务、卡片、订阅、排行榜)都属于这个 内部 ID,而不是 X 账号。
联系方式:hello@focus3.top。TODO(法务):运营主体名称、注册地址与数据保护负责人联系方式待补。
2. 我们收集什么
| 数据 | 具体内容 | 存放位置 |
|---|---|---|
| X 账号资料 | X 用户 ID、用户名(handle)、显示名称、头像 URL。资料在你每次登录时会用 X 上的最新值刷新。 | users、oauth_accounts |
| X 访问令牌 | OAuth 2.0 的 access token 与 refresh token,以及过期时间。登录时申请的权限只有users.read、tweet.read、offline.access;不申请发帖权限(tweet.write 已移除),Focus3 不会用你的身份自动发帖。 | oauth_accounts(AES-256-GCM 加密后存储) |
| 每日三件事与卡片 | Inbox 条目、当天标题、三件任务的标题与「重要性理由 / 完成标准」、早晚卡内容与快照、 完成数量与自述复盘、可选的成果链接。 | inbox_items、day_records、tasks、task_results、share_cards、task_revisions |
| 订阅与支付事件 | 订阅档位与状态(Plus / Pro,active / canceled 等)、支付平台的客户与订阅标识、周期结束时间; 以及 DodoPayments 回调的原始事件载荷(含事件 ID、事件类型与发生时间)。 | subscriptions、payment_events、promo_entitlements |
| AI 用量与草稿 | 调用了哪一类 AI 能力、使用的模型、成功或失败、输入/输出 token 数与费用;AI 草稿本体以及生成它时 引用的 Inbox 条目标题快照。 | ai_usage、ai_drafts |
| 会话与安全数据 | 会话令牌的 SHA-256 摘要(原始令牌只在你的浏览器 cookie 里,数据库拿不到它)、过期与撤销时间; 未登录发起登录时用于限流的 IP 标识;后台审计事件。 | sessions、rate_limit_counters、audit_events |
| 公开互动 | 你在别人的公开日页上留下的「鼓励」。站内关注(Follow)已按产品决定下线,follows 表只保留历史数据,不再有新写入。 | encouragements、follows(历史) |
我们不收集:邮箱、密码、手机号、真实姓名、支付卡号(卡信息只由 DodoPayments 处理,Focus3 从不接触)。 站点没有接入任何第三方分析、广告或行为追踪脚本,也没有使用 localStorage / sessionStorage 存业务数据。
3. 数据存在哪里
- 业务数据库:Supabase 托管的 PostgreSQL。上面表格里的数据都在这里。
- 应用运行环境:Vercel 的 serverless 函数读取数据库并渲染页面;应用本身不额外落盘个人数据。
- X 令牌的加密方式:使用 AES-256-GCM,密钥由服务端
SESSION_SECRET派生。即使数据库被完整导出,令牌也不能直接拿去调用 X。 - 会话令牌:浏览器 cookie 里是随机令牌,数据库里只存它的 SHA-256 摘要,明文令牌服务端也不保存。
TODO(法务):Supabase / Vercel 的具体区域与跨境传输口径需确认后再定稿;在确认前我们不对数据驻留地区作承诺。
4. 与谁共享
- X(api.x.com):登录换取令牌、读取你的公开资料;你在 /pricing 提交推广帖链接做验证时, 服务端会用你的令牌读取该帖的
author_id与正文,用于确认作者是你本人。除此之外不读你的时间线, 也不读取你的关注关系。 - DodoPayments:跳转托管收银台时会把内部用户 ID、档位与推广资格作为参数带上; 支付结果由签名校验过的 webhook 回传。退款与发票由 DodoPayments 按其条款处理。
- AI 服务商(OpenRouter):只有 Pro 档、且只有你主动点击 AI 按钮时才会调用。 发送的内容是完成任务所必需的最小集:Inbox 条目标题、当天任务标题,或你传入的那一条文本。 不发送你的 X 令牌、会话令牌或支付信息。
- Google Fonts:页面会加载 Google 的字体样式与字体文件,浏览器因此会向 Google 发送 IP 与 User-Agent。这与 cookie 无关,但不属于 Focus3 的服务器。
- 公开可见的内容:你把某天设为「公开」或「模糊公开」后,该日页对任何拿到链接的人可见,并可能被搜索引擎收录。
我们不出售个人数据,也不把数据用于广告画像。
5. 保留多久
- 删除账号后:你的会话立即全部撤销,已发布的日页立即撤下并转为私有,账号无法再登录 —— 这部分现在就已经生效。硬删除与匿名化清理按保留策略执行;TODO(法务):具体宽限期(产品讨论中的口径是 30 天)与硬删除时点需与 P4-2 / P4-3 的实现一起确认,在实现落地前本文不写具体天数。
- 保留策略:见保留策略(
docs/下的保留策略文档;当前仓库还没有这份文档,P4-3 待完成)。 - 限流计数器:按「身份 × 时间窗口」增长,目前没有自动过期清理,属于待补的保留策略项。
- 支付事件:为对账与履行法定记账义务而保留;TODO(法务):保留年限按适用法律确定。
- AI 草稿:生成时带过期时间,确认或过期后不再作为可用草稿返回。
6. 你的权利怎么写进产品
- 更正:登录 Dashboard 可修改显示名称、handle、时区,以及是否出现在排行榜。
- 删除:Dashboard 的「Delete account」按钮会立即执行删除流程(撤销会话、撤下公开日页、标记账号删除)。删除入口就在账号设置里,不需要发邮件申请。
- 撤回公开:每一天的日页都可以单独设为私有;隐私级别由你控制,不由系统代你决定。
- 数据导出:TODO(法务):目前产品内没有导出功能,需要确认是可访问权的最小实现还是补一个导出入口。
- 退出 X 授权:你可以在 X 账号的「已连接应用」里撤销 Focus3 的授权。
7. 未成年人
产品不面向未达到所在地法律规定最低年龄的人。TODO(法务):最低年龄与验证方式待定。
8. 本政策的变更
本页会随产品实际数据处理方式同步更新,最后更新日期在页面顶部。实质性变更(新增数据类别、新增共享方) 应在生效前给出合理提示。