数据流矩阵(Data Flow Matrix)
回答一个问题:我的什么数据,会在什么时候,去哪里?
本项目无遥测、无项目方云端;除应用启动时的一次更新检查(发往 GitHub 本仓库) 外,所有联网行为只发生在你主动使用对应功能时,且只访问你启用的服务。本表是这句话的 完整展开——它是隐私承诺的权威底稿:界面文案(顶栏提示、设置页「数据与 隐私」与「关于」)与本文不一致时,以本文为准并立即改文案。
| 功能 | 本地数据 | 联网 | 发给谁 | 发什么 |
|---|---|---|---|---|
| 看板 / 追踪表 / 岗位池(浏览与编辑) | CSV / Markdown 工作区文件 | 否 | — | — |
| 简历编辑 / 导入核对 | 简历数据 | 否 | — | — |
| AI 改写(可选,需自配模型服务) | 所选简历文本 | 是 | 你配置的 LLM 服务商(OpenAI 兼容端点) | prompt + 你选中的文本;发送前有确认步骤与反编造护栏 |
| 模型服务连通性测试 | 无工作区内容 | 是 | 同上 | 仅探活请求(不含工作区数据) |
| AI 邮件解析(可选) | 邮件正文 | 是 | 同上 | 你确认发送的文本 |
| 邮件拉取(可选,需自配 IMAP) | 邮箱凭证 + 邮件 | 是 | 你的邮箱服务商(IMAP) | 登录与读取请求;只读——不发送、不修改、不删除,点了才连 |
| 岗位 JD 抓取 | 目标 URL | 是 | 招聘网页所在站点 | 一次 HTTP GET |
| 更新检查(桌面版) | 版本信息 | 是 | GitHub(本仓库 Release) | 当前版本与平台(electron-updater 的标准请求);启动后延迟一次(约 5 秒),失败只进日志 |
| 快照 / 导出 / 诊断包 | 工作区文件 | 否 | — | —(凭证与运行时产物被排除在外,见下) |
明细与保证
- 凭证:邮箱授权码与 API Key 默认存 Windows 凭据管理器(桌面版);源码 /
CLI 形态或显式
JOBWS_CREDENTIAL_STORE=plaintext时为明文回退,落在config/imap.json/config/provider.json里。两种形态都只存在本机;凭据管理器 形态下配置文件只保留引用(auth_ref/api_key_ref)。导出 / 快照 / 诊断包 一律排除(tests/test_export_privacy.py做 zip 内容字节级泄漏检测)。 - AI 功能全部可选:不配置模型服务时所有 AI 入口禁用,无任何外发。
- 不在上表 = 不出网:除表中行外,应用不发起任何网络请求;开发者侧的 代码图谱类 MCP 工具(GitNexus 等)不随产品分发。
- MCP 服务与 AI 宿主边界:
mcp/的 jobws-mcp 走 stdio、服务自身不联网 (只读写本地工作区);但宿主(Claude / Codex / Gemini 等)拿到工具返回的 数据后,可能按宿主自己的隐私策略将其发送给模型服务——这一层由你选择的 宿主与模型决定,不在本应用控制范围内。不接 MCP 即无此路径(接入方式见mcp-integration.md)。
治理规则(贡献者)
新增任何出网能力,必须先更新本表(PR 描述里引用对应行)。CI 尚未自动 校验这一点(自动检查列 ROADMAP 候选);在此之前,评审时未更新矩阵的出网 PR 应被拒绝——这张表是"隐私文案不撒谎"的机器外防线。