Skip to content

feat(backup): GFS 分层保留策略(祖父-父-子)+ 任务表单配置#85

Merged
Awuqing merged 2 commits into
mainfrom
feat/gfs-retention
May 27, 2026
Merged

feat(backup): GFS 分层保留策略(祖父-父-子)+ 任务表单配置#85
Awuqing merged 2 commits into
mainfrom
feat/gfs-retention

Conversation

@Awuqing

@Awuqing Awuqing commented May 27, 2026

Copy link
Copy Markdown
Owner

背景(丰富核心备份功能)

继保留锁定(#84)之后,补上备份产品的旗舰级保留策略 GFS(grandfather-father-son):按天/周/月/年分层保留,兼顾近期细粒度与长期低频留存——企业备份的标准能力。

行为

后端

  • model.BackupTask +KeepDaily/Weekly/Monthly/Yearly(AutoMigrate 自动加列,默认 0)。
  • retentiongfsEnabled + selectGFSToDelete(按时间降序分桶、每桶留最新、层级并集、排除锁定);Cleanup 按是否启用 GFS 分流。
  • 任务创建/更新输入、写入与摘要输出贯通四个字段。

前端

  • 任务表单保留区新增 GFS 配置(日/周/月/年四个输入,任一 > 0 启用)。

测试

  • 日层级仅留当日代表且只留最近 N 天;层级并集(月度救回日度会删的旧备份);锁定豁免;gfsEnabled 判定。
  • 后端 go test ./... 全绿;前端 tsc + vite build 通过。

Awuqing added 2 commits May 27, 2026 15:32
新增企业级 GFS 保留:按天/周/月/年分层,每个周期保留最新一份,各层级取并集。
任一层级 > 0 即启用 GFS,取代 RetentionDays/MaxBackups 简单策略;全为 0 维持原
策略(向后兼容)。保留锁定(法律保留)记录始终豁免。

- model.BackupTask +KeepDaily/Weekly/Monthly/Yearly(AutoMigrate 自动加列,默认 0)。
- retention:gfsEnabled + selectGFSToDelete(按时间降序分桶、每桶留最新、层级并集、
  排除锁定);Cleanup 按是否启用 GFS 分流。
- 任务创建/更新输入、写入与摘要输出贯通四个字段。
- 测试:日层级仅留当日代表且只留最近 N 天、层级并集(月度救回日度会删的旧备份)、
  锁定豁免、gfsEnabled 判定。
备份任务表单的保留区新增 GFS 配置(日/周/月/年四个数字输入,任一 > 0 即启用,
覆盖天数/份数);types、draft 默认值、初值回填与提交载荷贯通
keepDaily/keepWeekly/keepMonthly/keepYearly。
@Awuqing Awuqing merged commit 992fc24 into main May 27, 2026
6 checks passed
@Awuqing Awuqing deleted the feat/gfs-retention branch May 27, 2026 07:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant