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- 还有哪些集成依赖留给后续任务