Cleanup 模块规划总结
1. 规划概述
根据用户需求"开发一个清理命令,这是测试数据清理,用于清除所有的模块的运行数据(配置数据不清理)",我们设计了一个专门的 Cleanup 模块,而不是简单的清理命令。
1.1 设计理念
- 专业化:专门的模块处理数据清理需求
- 配置化:通过后台界面灵活配置清理规则
- 安全性:多重安全机制确保数据安全
- 可扩展:易于添加新的清理策略和规则
1.2 核心优势
- 比单一命令更加灵活和强大
- 提供可视化的配置和监控界面
- 支持复杂的清理条件和策略
- 完整的日志记录和审计功能
2. 模块架构
2.1 整体架构
Cleanup 模块
├── 配置管理系统 # 管理每个表的清理配置
├── 任务管理系统 # 创建和管理清理任务
├── 执行引擎 # 实际执行清理操作
├── 监控系统 # 监控清理进度和状态
├── 日志系统 # 记录清理操作和结果
└── 后台管理界面 # 提供可视化管理界面
2.2 核心组件
2.2.1 数据分类系统
- USER_DATA (1): 用户运行数据(农场、物品、宠物等)
- LOG_DATA (2): 日志数据(操作日志、交易日志等)
- TRANSACTION_DATA (3): 交易数据(订单、交易记录等)
- CACHE_DATA (4): 缓存数据(临时数据、会话等)
- CONFIG_DATA (5): 配置数据(默认不清理)
2.2.2 清理策略
- TRUNCATE: 清空表(最快速)
- DELETE_ALL: 删除所有记录
- DELETE_BY_TIME: 按时间条件删除
- DELETE_BY_USER: 按用户条件删除
- DELETE_BY_CONDITION: 按自定义条件删除
3. 核心功能
3.1 自动表扫描
- 扫描所有
kku_ 开头的数据表
- 自动识别表的模块归属和数据分类
- 分析表结构特征(时间字段、用户字段等)
- 生成默认的清理配置建议
3.2 灵活配置管理
- 为每个表配置具体的清理规则
- 支持复杂的清理条件(JSON配置)
- 配置优先级和批处理大小
- 配置的导入导出和模板化
3.3 安全执行机制
- 预览模式:显示清理统计,不实际执行
- 多重确认:危险操作需要多次确认
- 权限控制:基于角色的操作权限
- 分批处理:大数据量分批处理避免锁表
- 进度监控:实时显示清理进度
- 错误恢复:支持任务中断后的恢复
3.4 完整日志系统
- 记录每个表的清理操作详情
- 统计清理前后的数据变化
- 记录执行时间和性能指标
- 提供统计报告和可视化分析
4. 数据库设计
4.1 核心数据表
清理配置表 (cleanup_configs)
- 存储每个表的清理配置
- 包含清理类型、条件、优先级等
- 支持启用/禁用控制
清理任务表 (cleanup_tasks)
- 存储清理任务信息
- 记录任务状态和执行进度
- 支持任务的暂停、恢复、取消
清理日志表 (cleanup_logs)
- 记录每个操作的详细日志
- 包含执行时间、影响记录数等
- 支持错误信息记录
表统计信息表 (cleanup_table_stats)
- 存储表的统计信息
- 用于清理决策和效果分析
- 定期更新表的状态信息
5. 使用场景
5.1 测试环境清理
# 扫描所有表并生成配置
php artisan cleanup:scan-tables
# 创建测试数据清理任务
php artisan cleanup:create-task --name="测试数据清理" --type=1
# 预览清理结果
php artisan cleanup:execute 1 --dry-run
# 执行清理
php artisan cleanup:execute 1
5.2 模块数据清理
# 清理特定模块的数据
php artisan cleanup:create-task --name="农场模块清理" --type=2 --modules=Farm
# 清理特定类型的数据
php artisan cleanup:create-task --name="日志清理" --type=3 --categories=2
5.3 后台管理操作
- 访问
/admin/cleanup/configs 配置清理规则
- 访问
/admin/cleanup/tasks 管理清理任务
- 访问
/admin/cleanup/logs 查看清理日志
- 访问
/admin/cleanup/reports 查看统计报告
6. 安全保障
6.1 多重安全机制
- 配置验证:验证清理配置的正确性和安全性
- 权限控制:只有授权用户可以执行清理操作
- 操作审计:记录所有清理操作的详细信息
- 备份提醒:清理前提醒用户备份重要数据
- 紧急停止:支持清理过程的紧急中断
6.2 数据保护策略
- 配置数据保护:配置表默认不会被清理
- 关键数据保护:重要用户数据需要特殊配置
- 关联数据检查:检查外键约束避免数据不一致
- 分批处理:避免长时间锁表影响业务
7. 性能优化
7.1 处理策略
- 分批删除:大表采用分批删除策略
- 索引优化:根据清理条件优化索引使用
- 并发控制:控制清理任务的并发执行
- 资源监控:监控内存和CPU使用情况
7.2 执行优化
- 优先级控制:按优先级顺序执行清理
- 时间窗口:在业务低峰期执行清理
- 进度跟踪:实时跟踪清理进度
- 中断恢复:支持任务中断后的恢复
8. 扩展能力
8.1 清理策略扩展
- 易于添加新的清理类型
- 支持自定义清理条件
- 可配置的清理算法
- 插件化的清理策略
8.2 数据分类扩展
- 支持新的数据分类定义
- 自动识别新的表类型
- 可配置的分类规则
- 灵活的分类策略
9. 开发计划
9.1 开发阶段
- 基础架构搭建 (1-2天)
- 核心功能实现 (3-4天)
- 任务管理系统 (2-3天)
- 后台管理界面 (2-3天)
- 命令行工具 (1-2天)
- 测试和优化 (2-3天)
9.2 交付标准
- 功能完整性验收
- 性能要求达标
- 安全机制完善
- 文档完整清晰
10. 总结
Cleanup 模块的设计充分考虑了用户的实际需求,不仅满足了"清除所有模块运行数据"的基本要求,还提供了:
10.1 超越基本需求的价值
- 可视化管理:比命令行更友好的管理界面
- 灵活配置:比固定逻辑更灵活的配置能力
- 安全保障:比简单删除更安全的操作机制
- 监控审计:比黑盒操作更透明的执行过程
10.2 长期价值
- 可维护性:模块化设计便于后续维护和扩展
- 可重用性:配置化设计支持不同场景的重复使用
- 可扩展性:开放的架构支持新功能的快速添加
- 专业性:专门的清理系统比临时方案更专业可靠
这个设计方案将为项目提供一个强大、安全、灵活的数据清理解决方案,不仅满足当前的测试数据清理需求,还为未来的数据管理需求奠定了坚实的基础。