我们完成了 GDPR 审计。以下是我们实际解决的问题。
几周前我们写过一篇文章,指出视频工具主页上的"符合 GDPR"意味着的东西比您想象的要少——GDPR 是压在您(数据控制者)身上的一系列义务,供应商要么帮助您履行,要么悄悄地把它留在您的桌上。要证明这一说法,唯一诚实的方式就是在自己这边把这项工作做完,并逐条展示出来。
于是我们做了。我们针对作为数据处理者所承担的义务,对 InterMIND 代码库进行了全面审计,修复了每一个有代码可查的缺口,并针对正在运行的产品逐一验证。这篇文章就是结项报告——不是一枚徽章,而是一份带有我们答案的检查清单。
我们刻意不宣称"100% 通过 GDPR 认证"。GDPR 不是您能"通过"的一张证书——我们也不会挥舞一枚我们尚未取得的 ISO 徽章。我们能说的是:DPO(数据保护官)需要逐项核查的架构与流程义务,现在都有了具体、可验证的答案,每一项都对照运行中的代码进行了核实。
我们解决了哪些问题
删除权(第 17 条)——级联删除真实运行
删除账户不只是停用。POST /api/user/delete-account 会执行一次真正的级联删除:清除您的会议 → 参与者、消息、会议记录、转录文本;在数据库级联删除之前先把您的存储 Blob 从 Tigris 中清除,确保没有任何遗留——聊天附件和视频录制文件,两个字段都会处理;并取消您的 Stripe 订阅并删除 Stripe 客户记录。按需删除也支持——在界面中删除某个频道或消息,它就会立即消失。匿名(访客)账户拥有自己的删除接口,外加每 6 小时运行一次的后台清理任务,由受监控的定时任务(cron)负责。此次审计在这里发现了一个缺口——数据库级联删除会移除记录,但存储中的录制 Blob 却被保留了下来——我们已经修复:删除操作现在不会在对象存储中留下任何遗留内容。
数据保留(第 5(1)(e) 条)——明确记载的标准
第 5(1)(e) 条并不要求自动的存活时间(TTL)。它要求的是一个明确界定的保留标准。我们的标准现已写入《隐私政策》:数据会一直保留,直到您或团队所有者将其删除,而删除账户会清除所有内容。这与 Slack、Notion 等协作工具所采用的模式相同——持久保存是预期行为,而您始终掌握控制权。这一标准是明确写明的,而不是含糊暗示的。
分析同意(第 6/7 条)——默认不采集
一个向欧盟访客展示的 Usercentrics 同意横幅会对分析功能进行把关,而 PostHog 出厂配置为 opt_out_capturing_by_default: true——在获得同意之前不会采集任何数据,而不是相反。
数据可携权(第 20 条)——真实可用的导出
GET /api/user/export 会将您的会议、消息、录制内容和翻译内容打包成一个 ZIP 文件,下载窗口为 7 天,之后自动清理。访问权、删除权与可携权,靠的是真正能用的工具,而不是政策里的空头承诺。
会议内容不会流向任何以美国为注册地的模型
会议内容中最大的一股数据流——实时语音与聊天翻译——运行在我们位于法国的自有引擎上,从不经过第三方 LLM。会议结束后确实会用到通用模型的 AI 步骤(摘要生成、笔记编辑器的生成式操作),运行在托管于欧盟、零数据留存的 Mistral 上,并且锁定程度极高,一旦条件不满足,请求会直接失败,而不会回退到非零数据留存或美国的主机。我们还从 PostHog 会话录制可能捕获的会议浏览器日志中清除了参与者姓名和发言文本。完整的供应商逐一映射请见《一场 InterMIND 会议究竟运行在哪里》。
透明度——已公开的次级处理者清单与处理记录
次级处理者清单已经上线,列明每个供应商的职能及其注册地——而不是"可按需索取"。清单背后是一份基于实时架构构建的处理活动记录(ROPA):涵盖 11 项处理操作、每项对应的安全措施,以及删除/可携权的实现路径。我们的隐私政策和条款现在均以我们自有的法律实体名义生效,并如实描述了真实的处理链条。
欧盟运行环境——锁定的事实,不是空口承诺
会议数据经过的每一个运行环节都在欧盟境内:应用与 API 运行在 Vercel 法兰克福,会议服务器运行在 Fly 巴黎,应用数据存储在 Neon Postgres(AWS 法兰克福),错误日志记录在 Sentry EU,分析数据记录在 PostHog EU,邮件通过 Resend 爱尔兰发送。Tigris 上的对象存储现已锁定在欧盟区域(法兰克福 + 阿姆斯特丹)——无论用户身处何地,每一次新写入都落在欧盟境内。完整架构说明请见我们的安全页面。