| 类型化端点:POST /agent/sessions(创建)/ GET /agent/sessions(列表)/ GET /agent/sessions/:id(续接:会话 + 历史消息回放) |
| apps/api/spike/ask.ts(改) | spike 对话路径接入正式 store:会话/消息/轨迹事件随真实对话落库(store 是正式代码;此处接线随 R3 正式 /agent/ask 一并替换) |
| apps/api/agent/store.test.ts | 首批库读写测试:会话 CRUD、消息追加与标题派生、JSONB 类型断言(jsonb_typeof,防规则 4 回归)、轨迹批量写入与回放顺序、级联删除 |
| apps/api/spike/events.test.ts | R1 脱敏自测 fixtures 转正式 encore test(BACKLOG 条目落地) |
| apps/api/package.json / vitest.config.ts | vitest devDep;test 脚本必须 vitest run --passWithNoTests(规则 2) |
| apps/web/lib/api-client.ts | dev.ps1 gen 产物(生成物,不手改;本轮仅落类型与数据层,前端仍跑 demo-data) |
| rounds/BACKLOG.md(改) | 勾掉「脱敏自测转正式 encore test」条目 |
| # | 检查 | 命令 / 期望 |
|---|---|---|
| 1 | 编译 | dev.ps1 check 通过 |
| 2 | 测试基建 | dev.ps1 test 跑通 vitest(非裸 vitest);store + sanitize 测试全绿 |
| 3 | JSONB 语义 | 测试断言落库 JSONB 字段 jsonb_typeof 为 object(非 string),-> 查询可用 |
| 4 | 会话端点 | curl POST /agent/sessions 创建 → GET /agent/sessions 列出 → GET /agent/sessions/:id 返回会话与消息 |
| 5 | 落库重启不丢 | spike 真实对话一轮 → 重启 encore(daemon 内重跑)→ 会话/消息/轨迹事件仍可经端点与 SQL 查到,轨迹按 seq 有序 |
| 6 | gen client | dev.ps1 gen 产出 apps/web/lib/api-client.ts 含 agent 会话端点类型;前端零 UI/样式改动 |
| 7 | 脱敏测试迁移 | R1 六组 fixtures 在 encore test 下全 PASS;BACKLOG 条目勾销 |
同一验收项针对性整改后连续 2 次验证仍不过 → 写 rounds/round-02/BLOCKED.md,停下呼人。禁止放宽验收标准自我通过。
验收逐项(2026-08-28,本机 Windows,encore v1.57.13,node v24.11.1,vitest 4.1.11):
实现要点与踩坑:
与计划的偏离:无(交付物与 ROUNDS.md R2 拆解一致)。