3.3 KiB
3.3 KiB
E1B workflow advance shadow/live/rollback 测试报告
一、 测试背景 (Background)
E1A 已把 notify 接到同事务 Handler。本波把 document.approved 的 workflow_advance 接到同一 dispatcher:重读文档/项目/阶段、service principal 鉴权,用已有 stage_advance_requests (stage_instance_id, readiness_revision) 唯一约束保证并发/重放只产生一次阶段可推进可见结果。生产集群 mode 保持 off。
二、 测试目标 (Test Objectives)
- Goose 00042 additive:
stage_advance_requests.source_event_id+ 部分唯一索引。 - Shadow dry-run 不写
stage_advance_requests;MarkDocTaskApproved 走 fenced tx,Rollback 可撤销。 - Live 两次 RunOnce + 双 worker 并行:同一 workflow instance 仅 1 条 stage-ready 请求与 1 条通知。
- 缺文档 / 跨项目 → quarantine。
- 第二份 approved envelope 不新增 stage_advance_requests。
- mode=off 回滚不再 claim。
三、 测试方案与环境 (Test Plan & Environment)
| 项 | 值 |
|---|---|
| OS | Linux 7.0.0-31-generic |
| Go | go1.27.1 linux/amd64 |
| 分支 | fix/event-workflow-advance |
| Schema | 42 |
| PostgreSQL | 隔离库 agent_rel_e1b(:5434);测完 DROP |
| 项目 143 | 只读 |
| 默认 mode | off |
| 证据 | .doc/test-reports/assets/2026-09-15-event-e1b-workflow-advance/ |
语义:至少一次投递 + 恰好一个可见结果。不是 exactly-once delivery。
四、 预期结果 (Expected Results)
| 用例 | 期望 |
|---|---|
| shadow | stage_advance_requests=0;有 recon |
| live 并行 + 再 RunOnce | requests=1;notifications=1 |
| 重复 approved 事件 | requests 仍为 1 |
| missing doc | delivery=quarantine |
| mode=off | claim=0 |
五、 实际测试结果与判定 (Actual Results & Evaluation)
5.1 隔离库 PG
- 测试输入:
TEST_DATABASE_URL→127.0.0.1:5434/agent_rel_e1b;go test -v ./internal/app/docadvance -run TestE1B_ - 实际输出:
assets/.../pg-test.txtgoose 至 42;TestE1B_AdvanceShadowLiveRollback_PGPASS(0.33s) - 评价判定: PASS
- 性能与耗时: 含 goose 0.33s
5.2 race
- 测试输入: 同上;
go test -race ./internal/app/docadvance -run TestE1B_ - 实际输出:
assets/.../race.txtPASS(1.12s) - 评价判定: PASS
5.3 共享库 mode(只读)
- 测试输入:
SELECT environment, consumer, mode FROM event_consumer_modes - 实际输出: 全部 off(
assets/.../consumer-modes.txt) - 评价判定: PASS
5.4 arch-check / short
- 测试输入:
./scripts/arch-check.sh --mode block;go test -short ./internal/events ./internal/archtest ./internal/app/docadvance - 实际输出: PASS
- 评价判定: PASS
六、 自动化测试套件汇总 (Test Suite Execution)
| 命令 | 结果 |
|---|---|
隔离库 TestE1B_* |
PASS schema 42 |
go test -race ./internal/app/docadvance |
PASS |
arch-check --mode block |
PASS |
| 生产 workflow_advance mode | off;闭包 AddOnApprovedHook 仍是 HTTP 进程写者 |
七、 测试结论与后续优化建议 (Conclusion & Next Steps)
E1B PASS。cmd/events 已注册 workflow_advance,集群开关仍 off。下一波 E1C:projection no-replace + 三类 worker 重启 + 授权页面刷新。不激活 FAV。不删除批准 hook(E2)。