Repository navigation
FedGuardLab v1.1.0
FedGuardLab v1.1.0
FedGuardLab v1.1.0 是一次以“实验任务生命周期、后台执行稳定性、Docker readiness 和发布流程标准化”为核心的正式版本更新。
本版本没有重点新增攻击算法或聚合算法,而是将 v1.0.0 的实验平台能力进一步工程化:实验任务现在拥有更清晰的 job lifecycle,训练执行与 WebSocket 连接解耦,前端支持取消实验,Docker Compose 启动更稳定,并补齐了 live API smoke test、changelog 和 release checklist。
主要更新
实验任务生命周期
- 新增内存版
JobStore。 - 新增
GET /jobs查看当前 job 列表。 - 新增
POST /jobs/{job_id}/cancel取消实验任务。 - job 状态支持:
createdrunningfinishedfailedcancelleddisconnected
- job 增加时间戳:
created_atstarted_atfinished_at
- job 列表增加 report readiness metadata,前端只展示可用于 comparison 的 finished jobs。
后台任务执行
- 新增后台 job runner。
POST /run创建 job 后立即启动后台训练。- WebSocket 不再负责启动训练。
- WebSocket
/ws/{job_id}现在只订阅已有 job 的 metrics 和 lifecycle events。 - 页面刷新或 WebSocket 断开不会停止后端训练。
- WebSocket 重新连接后会回放已有 metrics。
- 修复 WebSocket subscribe/replay 之间可能漏事件的竞态窗口。
取消机制
JobStore增加cancel_requested。POST /jobs/{job_id}/cancel会设置 cancellation request。- 后台 runner 会在训练循环中检查取消状态。
- 前端支持处理
cancelledevent。 - 前端 Dashboard 新增
Cancel Experiment按钮。 - 被取消的 job 不会进入 comparison history,也不会生成报告。
前端体验
- 前端 comparison history 只展示 report-ready jobs。
- 用户删除或清理过的 job 会保存在 hidden jobs 本地列表中,刷新页面后不会重新出现。
- 新完成的实验会自动恢复显示。
- 支持从后端
/jobs恢复 recent jobs。 - 增加取消实验入口。
Docker 与健康检查
- 新增
GET /health。 - Docker Compose 为 backend 增加 healthcheck。
- frontend 会等待 backend 进入 healthy 状态后再启动。
- healthcheck 使用 Python 标准库
urllib.request,不依赖 curl/wget。 - 改善
docker compose up -d后立即访问 API 时的 readiness 问题。
测试与发布流程
- 新增
api_smoke_test.pylive API smoke test。 api_smoke_test.py支持--wait-finished。- 补充 PowerShell 和 Bash 环境变量示例。
- 新增
CHANGELOG.md。 - 新增
docs/release-checklist.md。 - 更新 README 和 docs,覆盖 job lifecycle、background runner、healthcheck 和 release workflow。
验证
本版本已完成以下验证:
ruff check .
python quick_test.py