# Campaign 架构深化阶段总结

**版本**：v1.0
**归档日期**：2026-08-11
**阶段状态**：已完成并纳入项目 v1.0.0
**代码基线**：`10a089e` → `1782b24`
**需求来源**：Gitea Issue #2、`.scratch/refactor-plan-architecture-deepening-v2.md`

## 一、阶段目标

本阶段在不改变 HTTP 契约、业务口径、管理后台信息架构和部署拓扑的前提下，继续深化 Campaign 相关模块：统一智能分析与周期对比的耐久作业编排，建立稳定读模型，收窄 Campaign 运行时接口，并验证是否值得抽取跨领域条件写入模块。

## 二、交付结果

1. **耐久智能作业**：新增统一 owner，集中管理 queued 持久化、条件认领、任务句柄、成功/失败结算、启动恢复和关闭。重复入队不再把 `generating` 回退为 `queued`；恢复最多 3 次，避免无限模型调用。
2. **Campaign 读模型**：列表、详情、报告、时间线、智能分析、周期对比和 Markdown 导出统一消费稳定 projection；列表 child Run 改为批量读取。
3. **CampaignRuntime**：生产调用面收敛为 `start`、`cancel`、`recover`、`shutdown`，时钟、child Run 执行器、tick、reconcile 与 TaskRegistry 留在实现内部。
4. **前端请求编排**：`useCampaignReport` 统一列表、报告快照、展开行时间线、状态感知轮询、silent refresh、生成操作和迟到响应过滤；页面回归渲染与交互职责。
5. **删除测试**：拒绝通用条件写入模块。Campaign 与 Intelligent Evaluation 只有 SQL 外形相似，状态、时间、事务副作用和冲突语义不同；结论记录于 ADR-0006。

## 三、质量与发布验收

- 后端：`744 passed`。
- 前端：`15 passed`；`tsc --noEmit` 与生产构建通过。
- 迁移：Alembic upgrade/downgrade 往返通过，生产数据库位于 `d4e7f9a1b2c3 (head)`。
- 代码质量：本阶段相关 Ruff 检查及 `git diff --check` 通过。
- 阶段验收镜像：`agenteval:0.8.0-1782b24`；版本漂移随后在项目 `v1.0.0` 发布中统一修正。
- 正式地址：<https://agenteval.solahqb22.cn/>；前端、健康接口和 OpenClaw 均验证成功。
- 发布前备份：`/var/backups/agenteval/agenteval-0.8.0-1782b24-20260811T051927Z.tgz`。

## 四、关键决策

- 数据库是 Campaign 与智能作业的耐久权威；TaskRegistry 只保存当前进程句柄。
- `queued` 可以有限恢复；遗留 `generating` 失败结算，不自动重放可能已产生外部副作用或费用的工作。
- Campaign 读模型是跨 Repository 组合的唯一稳定 seam，Router 不拼装领域快照。
- 保持单进程 FastAPI + SQLite 假设；引入多 worker 前必须重新评审认领、恢复和 SQLite 并发边界。

## 五、后续事项

- 阶段结束提交为 `1782b24`；后续发布提交统一项目版本并重新部署双线环境。
- `.scratch/` 中原始计划和辅助脚本继续保留，未纳入版本控制。
- 全仓库 Ruff 仍有 6 个历史迁移格式问题；与本阶段逻辑无关，后续可单独清理。
- 下一轮架构工作应以真实第三个 adapter 或新部署约束为触发条件，避免仅因代码形状相似继续抽象。
