baa-conductor


baa-conductor / tasks / archive
im_wower  ·  2026-03-28

T-S017.md

  1# Task T-S017:定义浏览器登录态持久化模型与仓储
  2
  3## 直接给对话的提示词
  4
  5`/Users/george/code/baa-conductor/tasks/archive/T-S017.md` 任务文档,完成开发任务。
  6
  7如需补背景,再读:
  8
  9- `/Users/george/code/baa-conductor/plans/archive/BROWSER_BRIDGE_PERSISTENCE_REQUIREMENTS.md`
 10- `/Users/george/code/baa-conductor/packages/db/src/index.ts`
 11- `/Users/george/code/baa-conductor/ops/sql/schema.sql`
 12- `/Users/george/code/baa-conductor/ops/sql/migrations/0001_init.sql`
 13- `/Users/george/code/baa-conductor/packages/schemas/src/index.ts`
 14
 15## 当前基线
 16
 17- 仓库:`/Users/george/code/baa-conductor`
 18- 分支:`main`
 19- 提交:`12310df`
 20- 开工要求:不要从其他任务分支切出;如需新分支,从当前 `main` 新切
 21
 22## 建议分支名
 23
 24- `feat/browser-auth-record-model`
 25
 26## 目标
 27
 28为浏览器桥接新增可持久化的登录态元数据模型,只保存 `account`、凭证指纹和端点元数据,不保存原始凭证值。
 29
 30## 背景
 31
 32新的主需求已经从“页面对话驱动”转向“登录态元数据持久化 + 浏览器本地代发请求”。
 33
 34当前缺的第一块是稳定的数据模型和仓储接口。没有这层,后续 `conductor` 和插件都只能继续停留在内存态或临时协议上。
 35
 36## 涉及仓库
 37
 38- `/Users/george/code/baa-conductor`
 39
 40## 范围
 41
 42- 定义浏览器登录态持久化记录
 43- 补 SQL schema / migration
 44-`packages/db` 仓储方法与测试
 45- 如有必要,补 `packages/schemas` 的共享类型
 46
 47## 路径约束
 48
 49- 本任务只负责持久化模型与仓储,不处理 `conductor-daemon` HTTP/WS 接入。
 50- 不修改 Firefox 插件实现。
 51- 不处理文档总收口,那是后续任务。
 52
 53## 推荐实现边界
 54
 55建议优先做:
 56
 57- 定义一条稳定的浏览器登录态记录,至少覆盖:
 58  - `platform`
 59  - `host` / `machine`
 60  - `browser`
 61  - `client_id`
 62  - `account`
 63  - `credential_fingerprint`
 64  - `captured_at`
 65  - `last_seen_at`
 66  - `status`
 67- 定义端点元数据记录,至少覆盖:
 68  - `platform`
 69  - `client_id`
 70  - `account`
 71  - `endpoints`
 72  - `updated_at`
 73- 给仓储补读取、upsert、失联/过期状态更新接口
 74
 75## 允许修改的目录
 76
 77- `/Users/george/code/baa-conductor/packages/db/`
 78- `/Users/george/code/baa-conductor/packages/schemas/`
 79- `/Users/george/code/baa-conductor/ops/sql/`
 80
 81## 尽量不要修改
 82
 83- `/Users/george/code/baa-conductor/apps/conductor-daemon/`
 84- `/Users/george/code/baa-conductor/plugins/baa-firefox/`
 85- `/Users/george/code/baa-conductor/docs/`
 86
 87## 必须完成
 88
 89### 1. 定义持久化记录模型
 90
 91- 明确哪些字段会被长期保存
 92- 明确哪些字段绝对不能入库
 93- 让“凭证指纹”和“端点元数据”成为一等概念
 94
 95### 2. 补仓储与 migration
 96
 97- `packages/db` 提供稳定的读写接口
 98- SQL schema 和 migration 与仓储接口一致
 99- 不破坏现有 task/controller/run 等表
100
101### 3. 补测试
102
103- 至少覆盖新增记录的写入、读取、更新
104- 至少覆盖状态从 `fresh``stale` 或等价状态的路径
105
106## 需要特别注意
107
108- 不要把原始 `cookie`、`token`、`header` 值写进任何持久化模型
109- `account` 允许持久化,但要和凭证指纹、端点元数据分开建模
110- 本任务可以和 `T-S018` 并行,但不要修改插件文件
111
112## 验收标准
113
114- 仓库里有明确的浏览器登录态持久化模型
115- SQL schema / migration / repository 三者一致
116- 测试能覆盖新增读写路径
117- `git diff --check` 通过
118
119## 推荐验证命令
120
121- `npx --yes pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/db test`
122- `npx --yes pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/db typecheck`
123- `git -C /Users/george/code/baa-conductor diff --check`
124
125## 交付要求
126
127完成后请说明:
128
129- 修改了哪些文件
130- 最终持久化模型包含哪些字段
131- 明确排除了哪些敏感字段
132- 跑了哪些测试
133- 还有哪些集成依赖留给后续任务