baa-conductor

git clone 

commit
0ebfec0
parent
a358e52
author
im_wower
date
2026-03-29 02:48:55 +0800 CST
docs: add T-S052 create new D1 database and initialize

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 files changed,  +143, -0
A tasks/T-S052.md
+143, -0
  1@@ -0,0 +1,143 @@
  2+# Task T-S052:创建新 D1 数据库并完成初始化
  3+
  4+## 状态
  5+
  6+- 当前状态:`待开始`
  7+- 规模预估:`S`
  8+- 依赖任务:`T-S042`(代码已完成)
  9+- 建议执行者:`均可`(运维操作,无代码改动)
 10+
 11+## 直接给对话的提示词
 12+
 13+读 `/Users/george/code/baa-conductor/tasks/T-S052.md` 任务文档,完成开发任务。
 14+
 15+## 当前基线
 16+
 17+- 仓库:`/Users/george/code/baa-conductor`
 18+- 分支基线:`main`
 19+- 提交:`a358e52`
 20+
 21+## 分支与 worktree(强制)
 22+
 23+- 分支名:`feat/d1-database-init`
 24+- worktree 路径:`/Users/george/code/baa-conductor-d1-database-init`
 25+
 26+开工步骤:
 27+
 28+1. `cd /Users/george/code/baa-conductor`
 29+2. `git worktree add ../baa-conductor-d1-database-init -b feat/d1-database-init main`
 30+3. `cd ../baa-conductor-d1-database-init`
 31+
 32+完成后提交与推送(由执行者完成,不要合并):
 33+
 34+1. 在 worktree 里提交所有变更(包括更新后的任务文档)
 35+2. `git push -u origin feat/d1-database-init`
 36+
 37+## 背景
 38+
 39+T-S042 完成了 D1 async 客户端、sync queue、sync worker 的代码和建表脚本(`d1-setup.sql`),但没有实际在 Cloudflare 上创建新数据库。当前环境变量 `D1_DATABASE_ID` 指向旧版 baa 的数据库(表结构不匹配),sync worker 无法正常工作。
 40+
 41+## 目标
 42+
 43+在 Cloudflare 上创建新的 D1 数据库,建表,更新环境变量,让 sync worker 正常同步。
 44+
 45+## 当前环境
 46+
 47+- Cloudflare Account ID:`3cb181c015e004e4d6f81891c0d66fec`
 48+- 旧 D1 Database ID:`b437bb61-6ede-4af6-8afd-51166398daf6`(不要动,保留旧数据)
 49+- 建表脚本:`/Users/george/code/baa-conductor/packages/d1-client/src/d1-setup.sql`
 50+- conductor launchd plist:`/Users/george/code/baa-conductor/ops/launchd/so.makefile.baa-conductor.plist`
 51+
 52+## 必须完成
 53+
 54+### 1. 创建新 D1 数据库
 55+
 56+使用 wrangler CLI(已全局安装):
 57+
 58+```bash
 59+wrangler d1 create baa-conductor-artifact
 60+```
 61+
 62+记录返回的新 database_id。
 63+
 64+### 2. 执行建表脚本
 65+
 66+```bash
 67+wrangler d1 execute baa-conductor-artifact --file=/Users/george/code/baa-conductor/packages/d1-client/src/d1-setup.sql
 68+```
 69+
 70+### 3. 验证表结构
 71+
 72+```bash
 73+wrangler d1 execute baa-conductor-artifact --command="SELECT name FROM sqlite_master WHERE type='table' ORDER BY name"
 74+```
 75+
 76+应该看到:`executions`、`messages`、`sessions`。
 77+
 78+### 4. 更新 launchd 环境变量
 79+
 80+修改 conductor 的 launchd plist,把 `D1_DATABASE_ID` 改为新的 database_id。
 81+
 82+或者如果环境变量是通过其他方式注入的(如 `.env` 文件、shell profile),更新对应文件。
 83+
 84+### 5. 重启 conductor
 85+
 86+```bash
 87+launchctl kickstart -k gui/$(id -u)/so.makefile.baa-conductor
 88+```
 89+
 90+### 6. 验证 sync worker 启动
 91+
 92+```bash
 93+curl -s http://100.71.210.78:4317/healthz
 94+```
 95+
 96+检查 conductor 日志,确认没有 D1 连接错误。
 97+
 98+### 7. 触发一次同步验证
 99+
100+在浏览器中触发一条 `browser.final_message`(随便在 ChatGPT/Claude 里发条消息),然后检查:
101+
102+```bash
103+# 本地 sync_queue 应该有 pending → synced 的记录
104+# D1 远程数据库应该有对应数据
105+wrangler d1 execute baa-conductor-artifact --command="SELECT COUNT(*) FROM messages"
106+```
107+
108+## 需要特别注意
109+
110+- **不要动旧的 D1 数据库**(`b437bb61-...`),它有旧版 baa 的数据
111+- 如果 launchd plist 中同时有旧的 `D1_DATABASE_ID`,只改值不加新变量
112+- 重启后确认 conductor healthz 正常再验证同步
113+
114+## 验收标准
115+
116+- Cloudflare 上存在新的 `baa-conductor-artifact` D1 数据库
117+- 数据库包含 messages、executions、sessions 三张表
118+- conductor 重启后 sync worker 无报错
119+- 触发 final_message 后 D1 中能查到对应记录
120+
121+## 执行记录
122+
123+> 以下内容由执行任务的 AI 填写,创建任务时留空。
124+
125+### 开始执行
126+
127+- 执行者:
128+- 开始时间:
129+- 状态变更:`待开始` → `进行中`
130+
131+### 完成摘要
132+
133+- 完成时间:
134+- 状态变更:`进行中` → `已完成`
135+- 修改了哪些文件:
136+- 核心实现思路:
137+- 跑了哪些测试:
138+
139+### 执行过程中遇到的问题
140+
141+> 记录执行过程中遇到的阻塞、环境问题、临时绕过方案等。合并时由合并者判断是否需要修复或建新任务。
142+
143+### 剩余风险
144+