从功能原型到可发布开源产品的演进计划 创建日期:2026-05-26
目标:让端到端链路真正跑通,消除已知 bug
-
agent/cmd/root.go— 实现executeTask()中的 SNAPSHOT/RECOVER 逻辑,调用 restic CLI(参照后端ResticClient.java用 Go 重写) -
agent/server/api.go— 实现/snapshot和/restore的实际执行逻辑 -
agent/scanner/database.go— 修复itoa()bug,改用strconv.Itoa() -
agent/main.go— 删除未使用的waitForSignal()死代码 - 新增
agent/restic/client.go— 封装 restic CLI 调用(init、backup、restore、snapshots、diff)
- 新增
frontend/src/types/目录,为所有 API 响应定义接口(12 个类型文件) - 更新所有
views/和api/文件,将any替换为具体类型 - 修复 Axios 拦截器自动解包 ApiResponse wrapper
- 删除
NewBackupModal.vue的console.log调试残留
- 新增
agent/restic/client_test.go— 测试命令构建和 shell 转义 - 新增
agent/scanner/database_test.go— 测试端口扫描和版本提取 - 新增
agent/transport/client_test.go— 测试 HTTP 客户端(httptest 模拟服务端)
目标:可部署、可监控、可自动化
- 新增
backend/Dockerfile— 多阶段构建:Maven 编译 + JRE 运行镜像 - 新增
agent/Dockerfile— Go 多阶段构建,Alpine 最终镜像 - 新增
frontend/Dockerfile— Node 构建 + Nginx 静态托管 - 新增根目录
docker-compose.yml— 编排 PostgreSQL + Redis + Backend + Frontend(含 Nginx 反向代理)
- 新增
.github/workflows/ci.yml— GitHub Actions:- Backend:
mvn compile+mvn test - Frontend:
npx vue-tsc --noEmit+npm run build - Agent:
go build+go test
- Backend:
- 新增
.github/workflows/release.yml— 标签触发的自动构建 + Docker 镜像推送
-
DashboardService.java—getActivityTrend改为日期范围查询,不再findAll()全量加载 - 新增
RateLimitFilter.java— 基于 IP+路径 滑动窗口限流(30次/分钟,保护 /api/auth/*) -
application-prod.yml— actuator metrics/info 需要认证、健康检查公开(已确认正确) -
LocalStorageProvider.java—getHealth实际测量写入延迟和吞吐量
-
agent/server/api.go— 添加 Bearer token 认证中间件(/health 公开) -
agent/config/config.go— 支持 TLS 配置(tls_enabled/tls_cert/tls_key/auth_token)
目标:补齐产品级功能
- 后端 — 新增
ScheduledBackup实体 + Flyway 迁移 (V22) - 后端 —
ScheduledBackupService使用@Scheduled每分钟检查到期任务 - 前端 — 新增 API 模块
scheduledBackups.ts+ 类型定义 - API —
POST /api/scheduled-backups、GET、DELETE、PUT(启用/禁用)
- 后端 —
SettingsController新增/audit-logs/search分页查询(支持 action/userId/since/until) - 前端 —
Settings.vue添加筛选表单(操作类型、时间范围)+ 搜索/重置按钮
- 后端 —
AlertService新增notifyAlert()方法,支持 Slack/DingTalk/Webhook/Email 四种渠道 - 后端 — 使用
java.net.http.HttpClient异步发送,带超时和错误处理
- 后端 —
SnapshotController新增POST /api/snapshots/batch-delete - 后端 —
ServerController新增POST /api/servers/batch-scan - 后端 —
SnapshotService.batchDelete()+ServerService.batchScan()
- 后端 — 新增
GET /api/snapshots/export?format=csv|json(CSV/JSON) - 后端 — 自动设置 Content-Disposition 下载头
目标:让外部贡献者能参与
- 更新
README.md— 项目介绍、架构图、快速开始(Docker Compose + 本地开发)、API 概览、安全模型 - 新增
CONTRIBUTING.md— 开发环境搭建、代码规范(Java/TypeScript/Go)、Conventional Commits、PR 流程 - 新增
CHANGELOG.md— 基于 Keep a Changelog 格式,涵盖三个阶段的变更记录
- 语义化版本 —
0.1.0-SNAPSHOT→0.1.0 - 集成 springdoc-openapi — 添加依赖 + SecurityConfig 白名单 + OpenAPI 元数据配置
- Git 标签策略 —
v0.1.0、v0.2.0等
- 新增
LICENSE— Apache License 2.0 - 审查
.gitignore— 修复storage/和*.sql过于宽泛的模式,确保源码和迁移不被忽略 - 新增
SECURITY.md— 安全漏洞报告流程、部署/运行时安全最佳实践
目标:性能、可靠性、扩展性
- 后端数据库查询优化(索引审计、N+1 检测)
- 前端路由懒加载 — 所有视图已使用
() => import(...)动态导入 - 快照列表虚拟滚动(大数据量场景)
- Redis 缓存热点数据(Dashboard 统计、服务器列表)
- SSH 连接健康检查改进
- 快照任务断点续传(记录已备份路径)
- Agent 端离线重连 + 任务队列持久化
- 后端优雅关闭 —
AsyncTaskManager.@PreDestroy等待运行中任务完成(60s 超时)
- 多存储后端并行写入(镜像备份)
- 快照保留策略自动清理 —
SnapshotRetentionPolicy实体 + 每日 3:00 定时清理(按数量/天数/保护期) - Webhook 事件推送(备份完成、告警触发等)
- 插件化存储后端(SPI 机制)
| 顺序 | 阶段 | 关键产出 | 风险 |
|---|---|---|---|
| 1 | 基础修复 | Agent 可执行备份 + 前端类型安全 | Agent restic 调用需实机测试 |
| 2 | 生产基建 | docker-compose up 一键启动 |
Nginx + WebSocket 代理需调试 |
| 3 | 功能完善 | 定时备份 + 审计日志 + 通知 | 定时任务的时区和并发控制 |
| 4 | 开源规范 | 可发布的 v0.1.0 |
文档维护成本 |
| 5 | 高级优化 | 按需迭代 | 性能测试需要真实环境 |
建议从阶段一开始——Agent 端空壳是当前最大的功能性缺陷,用户安装 Agent 却发现不能真正备份,会直接丧失信任。