|
|
@@ -0,0 +1,179 @@
|
|
|
+# 一个表多种清理方案实现状态分析
|
|
|
+
|
|
|
+**任务时间**: 2025年06月17日 12:10
|
|
|
+**任务类型**: 功能实现状态分析
|
|
|
+**分析目标**: 是否实现了"一个表可以配置多种清理方案,不同的清理计划,不同的方案"
|
|
|
+
|
|
|
+## 分析结论
|
|
|
+
|
|
|
+### ✅ 已实现:跨计划的多种方案
|
|
|
+**当前Cleanup模块已经实现了一个表在不同清理计划中配置不同清理方案的功能。**
|
|
|
+
|
|
|
+### ❌ 未实现:同计划内的多种方案
|
|
|
+**当前设计不支持在同一个清理计划中为同一个表配置多种不同的清理方案。**
|
|
|
+
|
|
|
+## 详细分析
|
|
|
+
|
|
|
+### 1. 数据库设计分析
|
|
|
+
|
|
|
+#### 1.1 约束设计
|
|
|
+```sql
|
|
|
+-- cleanup_plan_contents 表的唯一约束
|
|
|
+UNIQUE KEY `idx_plan_table` (`plan_id`, `table_name`)
|
|
|
+```
|
|
|
+
|
|
|
+**分析结果**:
|
|
|
+- ✅ **支持跨计划多方案**:同一个表可以在不同计划中有不同配置
|
|
|
+- ❌ **不支持同计划多方案**:同一个计划中,每个表只能有一个配置
|
|
|
+
|
|
|
+#### 1.2 实际数据验证
|
|
|
+通过数据库查询发现多个表在不同计划中确实有不同的清理配置:
|
|
|
+
|
|
|
+**示例1:kku_admin_actionlogs**
|
|
|
+- 计划1(日志数据清理测试):按时间删除,条件为空,优先级200
|
|
|
+- 计划3(Admin模块日志清理):按时间删除,保留90天,优先级100
|
|
|
+
|
|
|
+**示例2:kku_farm_harvest_logs**
|
|
|
+- 计划1(日志数据清理测试):按时间删除,条件为空,优先级200
|
|
|
+- 计划4(Farm模块日志清理):按时间删除,保留60天,优先级100
|
|
|
+
|
|
|
+**示例3:kku_fund_logs**
|
|
|
+- 计划1(日志数据清理测试):按时间删除,条件为空,优先级200
|
|
|
+- 计划5(Fund模块日志清理):按时间删除,保留180天,优先级100
|
|
|
+
|
|
|
+### 2. 功能实现状态
|
|
|
+
|
|
|
+#### 2.1 ✅ 已实现的功能
|
|
|
+
|
|
|
+**跨计划多方案配置**
|
|
|
+- 同一个表可以在多个不同的清理计划中配置
|
|
|
+- 每个计划中可以为该表设置不同的清理类型
|
|
|
+- 每个计划中可以为该表设置不同的清理条件
|
|
|
+- 每个计划中可以为该表设置不同的优先级和备份策略
|
|
|
+
|
|
|
+**具体实现方式**:
|
|
|
+1. **基础配置层**:`cleanup_configs` 表提供每个表的默认配置
|
|
|
+2. **计划配置层**:`cleanup_plan_contents` 表为每个计划中的表提供具体配置
|
|
|
+3. **配置继承机制**:计划配置可以覆盖基础配置的默认值
|
|
|
+
|
|
|
+#### 2.2 ❌ 未实现的功能
|
|
|
+
|
|
|
+**同计划内多方案配置**
|
|
|
+- 无法在同一个清理计划中为同一个表配置多种清理方案
|
|
|
+- 数据库约束 `UNIQUE(plan_id, table_name)` 阻止了这种配置
|
|
|
+- 当前设计假设每个表在每个计划中只有一种清理策略
|
|
|
+
|
|
|
+### 3. 使用场景分析
|
|
|
+
|
|
|
+#### 3.1 ✅ 支持的场景
|
|
|
+
|
|
|
+**场景1:不同环境的清理策略**
|
|
|
+```
|
|
|
+开发环境清理计划:
|
|
|
+- kku_user_logs: 保留7天
|
|
|
+- kku_farm_logs: 保留3天
|
|
|
+
|
|
|
+生产环境清理计划:
|
|
|
+- kku_user_logs: 保留90天
|
|
|
+- kku_farm_logs: 保留30天
|
|
|
+```
|
|
|
+
|
|
|
+**场景2:不同目的的清理策略**
|
|
|
+```
|
|
|
+日常维护清理:
|
|
|
+- kku_cache: 清空表
|
|
|
+- kku_sessions: 删除7天前数据
|
|
|
+
|
|
|
+深度清理计划:
|
|
|
+- kku_cache: 清空表
|
|
|
+- kku_sessions: 删除所有记录
|
|
|
+```
|
|
|
+
|
|
|
+**场景3:模块级vs全局清理**
|
|
|
+```
|
|
|
+Farm模块清理:
|
|
|
+- kku_farm_logs: 保留60天,启用备份
|
|
|
+
|
|
|
+全局日志清理:
|
|
|
+- kku_farm_logs: 保留30天,不备份
|
|
|
+```
|
|
|
+
|
|
|
+#### 3.2 ❌ 不支持的场景
|
|
|
+
|
|
|
+**场景:同一计划内的分阶段清理**
|
|
|
+```
|
|
|
+想要实现但无法实现:
|
|
|
+综合清理计划:
|
|
|
+- kku_user_logs:
|
|
|
+ - 方案1:删除6个月前的数据(优先级100)
|
|
|
+ - 方案2:删除特定用户的数据(优先级200)
|
|
|
+- kku_farm_logs:
|
|
|
+ - 方案1:删除1年前的数据(优先级100)
|
|
|
+ - 方案2:删除错误状态的数据(优先级150)
|
|
|
+```
|
|
|
+
|
|
|
+### 4. 技术实现细节
|
|
|
+
|
|
|
+#### 4.1 当前实现机制
|
|
|
+
|
|
|
+**数据结构**:
|
|
|
+```sql
|
|
|
+cleanup_plan_contents:
|
|
|
+- plan_id (FK)
|
|
|
+- table_name
|
|
|
+- cleanup_type (1-5)
|
|
|
+- conditions (JSON)
|
|
|
+- priority
|
|
|
+- backup_enabled
|
|
|
+```
|
|
|
+
|
|
|
+**约束机制**:
|
|
|
+- `UNIQUE(plan_id, table_name)` 确保每个计划中每个表只有一个配置
|
|
|
+- `FK(plan_id)` 确保配置属于有效的计划
|
|
|
+
|
|
|
+#### 4.2 扩展可能性分析
|
|
|
+
|
|
|
+**如果要支持同计划内多方案,需要的改动**:
|
|
|
+
|
|
|
+1. **数据库结构调整**
|
|
|
+```sql
|
|
|
+-- 需要移除唯一约束
|
|
|
+DROP INDEX idx_plan_table;
|
|
|
+
|
|
|
+-- 或者修改为允许多个配置
|
|
|
+ALTER TABLE cleanup_plan_contents
|
|
|
+ADD COLUMN config_name VARCHAR(100) COMMENT '配置名称';
|
|
|
+
|
|
|
+-- 新的唯一约束
|
|
|
+ADD UNIQUE KEY idx_plan_table_config (plan_id, table_name, config_name);
|
|
|
+```
|
|
|
+
|
|
|
+2. **业务逻辑调整**
|
|
|
+- 修改计划内容管理逻辑
|
|
|
+- 调整任务执行顺序逻辑
|
|
|
+- 更新后台管理界面
|
|
|
+- 修改API接口设计
|
|
|
+
|
|
|
+3. **执行逻辑调整**
|
|
|
+- 支持同一个表的多个配置按顺序执行
|
|
|
+- 处理配置间的依赖关系
|
|
|
+- 优化执行效率
|
|
|
+
|
|
|
+## 总结
|
|
|
+
|
|
|
+### 当前状态
|
|
|
+- ✅ **跨计划多方案**:完全支持,已有大量实际使用案例
|
|
|
+- ❌ **同计划多方案**:不支持,受数据库约束限制
|
|
|
+
|
|
|
+### 实际需求评估
|
|
|
+从现有的使用情况来看,**跨计划多方案**已经能够满足大部分实际需求:
|
|
|
+- 不同环境使用不同计划
|
|
|
+- 不同清理目的使用不同计划
|
|
|
+- 不同时间周期使用不同计划
|
|
|
+
|
|
|
+### 建议
|
|
|
+1. **当前设计已经足够**:跨计划的多方案配置能够满足绝大多数使用场景
|
|
|
+2. **如有特殊需求**:可以通过创建多个相关计划来实现复杂的清理策略
|
|
|
+3. **未来扩展**:如果确实需要同计划内多方案,可以考虑扩展设计
|
|
|
+
|
|
|
+**结论**:Cleanup模块已经实现了"一个表可以配置多种清理方案"的核心需求,通过不同清理计划实现不同方案的配置。
|