设计概述.md 9.3 KB

Cleanup 模块设计概述

1. 模块简介

Cleanup 模块是一个专门用于数据清理的系统模块,提供灵活的数据清理配置和执行功能。该模块主要用于测试环境的数据清理,支持清除所有模块的运行数据,同时保留配置数据。

1.1 核心功能

  • 配置化清理:通过后台界面配置每个表的清理条件
  • 分类清理:支持按模块、数据类型进行分类清理
  • 安全机制:多重确认、预览模式、回滚机制
  • 批量处理:支持大数据量的分批清理
  • 日志记录:详细的清理日志和统计信息

1.2 设计原则

  • 安全第一:多重确认机制,防止误删重要数据
  • 灵活配置:支持细粒度的清理条件配置
  • 可扩展性:易于添加新的清理规则和数据类型
  • 可监控性:完整的日志记录和进度跟踪

2. 架构设计

2.1 模块结构

app/Module/Cleanup/
├── AdminControllers/        # 后台管理控制器
│   ├── CleanupConfigController.php      # 清理配置管理
│   ├── CleanupTaskController.php        # 清理任务管理
│   ├── CleanupLogController.php         # 清理日志管理
│   └── Helper/                          # 辅助类
├── Commands/                            # 命令行工具
│   ├── CleanupDataCommand.php           # 数据清理命令
│   └── ScanTablesCommand.php            # 扫描数据表命令
├── Databases/                           # 数据库相关文件
│   └── GenerateSql/                     # SQL生成文件
├── Docs/                                # 文档目录
├── Enums/                               # 枚举定义
│   ├── CLEANUP_TYPE.php                 # 清理类型枚举
│   ├── DATA_CATEGORY.php                # 数据分类枚举
│   └── TASK_STATUS.php                  # 任务状态枚举
├── Events/                              # 事件类
├── Listeners/                           # 事件监听器
├── Logics/                              # 业务逻辑类
│   ├── CleanupConfigLogic.php           # 清理配置逻辑
│   ├── CleanupExecutorLogic.php         # 清理执行逻辑
│   └── TableScannerLogic.php            # 表扫描逻辑
├── Models/                              # 数据模型
│   ├── CleanupConfig.php                # 清理配置模型
│   ├── CleanupTask.php                  # 清理任务模型
│   └── CleanupLog.php                   # 清理日志模型
├── Providers/                           # 服务提供者
│   └── CleanupServiceProvider.php       # 模块服务提供者
├── Repositories/                        # 数据仓库
├── Services/                            # 服务类
│   ├── CleanupService.php               # 清理服务
│   └── ConfigService.php                # 配置服务
├── Validations/                         # 验证规则
└── Validators/                          # 验证器

2.2 核心组件

2.2.1 清理配置系统

  • CleanupConfig: 存储每个表的清理配置
  • ConfigService: 提供配置管理服务
  • CleanupConfigLogic: 处理配置相关业务逻辑

2.2.2 清理执行系统

  • CleanupExecutorLogic: 核心清理执行逻辑
  • CleanupService: 对外提供清理服务接口
  • CleanupDataCommand: 命令行清理工具

2.2.3 任务管理系统

  • CleanupTask: 清理任务模型
  • CleanupLog: 清理日志模型
  • TaskStatus: 任务状态管理

3. 数据库设计

3.1 核心数据表

3.1.1 清理配置表 (cleanup_configs)

CREATE TABLE `kku_cleanup_configs` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `table_name` varchar(100) NOT NULL COMMENT '表名',
  `module_name` varchar(50) NOT NULL COMMENT '模块名称',
  `data_category` tinyint(3) unsigned NOT NULL COMMENT '数据分类',
  `cleanup_type` tinyint(3) unsigned NOT NULL COMMENT '清理类型',
  `conditions` json DEFAULT NULL COMMENT '清理条件',
  `is_enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
  `priority` int(10) unsigned NOT NULL DEFAULT '100' COMMENT '清理优先级',
  `description` text COMMENT '描述',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_table_name` (`table_name`),
  KEY `idx_module_category` (`module_name`, `data_category`),
  KEY `idx_enabled_priority` (`is_enabled`, `priority`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='清理配置表';

3.1.2 清理任务表 (cleanup_tasks)

CREATE TABLE `kku_cleanup_tasks` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `task_name` varchar(100) NOT NULL COMMENT '任务名称',
  `cleanup_type` tinyint(3) unsigned NOT NULL COMMENT '清理类型',
  `target_modules` json DEFAULT NULL COMMENT '目标模块',
  `target_categories` json DEFAULT NULL COMMENT '目标数据分类',
  `conditions` json DEFAULT NULL COMMENT '清理条件',
  `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '任务状态',
  `progress` decimal(5,2) NOT NULL DEFAULT '0.00' COMMENT '执行进度',
  `total_tables` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '总表数',
  `processed_tables` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '已处理表数',
  `total_records` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '总记录数',
  `deleted_records` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '已删除记录数',
  `started_at` timestamp NULL DEFAULT NULL COMMENT '开始时间',
  `completed_at` timestamp NULL DEFAULT NULL COMMENT '完成时间',
  `error_message` text COMMENT '错误信息',
  `created_by` bigint(20) unsigned DEFAULT NULL COMMENT '创建者',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_status` (`status`),
  KEY `idx_created_by` (`created_by`),
  KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='清理任务表';

3.1.3 清理日志表 (cleanup_logs)

CREATE TABLE `kku_cleanup_logs` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `task_id` bigint(20) unsigned NOT NULL COMMENT '任务ID',
  `table_name` varchar(100) NOT NULL COMMENT '表名',
  `operation_type` varchar(20) NOT NULL COMMENT '操作类型',
  `records_count` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '记录数量',
  `execution_time` decimal(8,3) NOT NULL DEFAULT '0.000' COMMENT '执行时间(秒)',
  `conditions_used` json DEFAULT NULL COMMENT '使用的条件',
  `status` tinyint(3) unsigned NOT NULL COMMENT '执行状态',
  `error_message` text COMMENT '错误信息',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_task_id` (`task_id`),
  KEY `idx_table_name` (`table_name`),
  KEY `idx_status` (`status`),
  KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='清理日志表';

3.2 数据分类定义

3.2.1 数据分类 (DATA_CATEGORY)

  • USER_DATA (1): 用户运行数据
  • LOG_DATA (2): 日志数据
  • TRANSACTION_DATA (3): 交易数据
  • CACHE_DATA (4): 缓存数据
  • CONFIG_DATA (5): 配置数据(通常不清理)

3.2.2 清理类型 (CLEANUP_TYPE)

  • TRUNCATE (1): 清空表
  • DELETE_ALL (2): 删除所有记录
  • DELETE_BY_TIME (3): 按时间删除
  • DELETE_BY_USER (4): 按用户删除
  • DELETE_BY_CONDITION (5): 按条件删除

4. 功能特性

4.1 配置管理

  • 表扫描: 自动扫描系统中的所有数据表
  • 分类管理: 按模块和数据类型进行分类
  • 条件配置: 支持复杂的清理条件配置
  • 优先级设置: 控制清理执行顺序

4.2 安全机制

  • 预览模式: 显示将要清理的数据统计
  • 多重确认: 危险操作需要多次确认
  • 权限控制: 基于角色的操作权限
  • 自动备份: 清理前自动备份将要删除的数据
  • 备份管理: 完整的数据库备份管理和恢复功能

4.3 执行控制

  • 批量处理: 大数据量分批处理
  • 进度跟踪: 实时显示清理进度
  • 错误处理: 完善的错误处理和恢复机制
  • 中断恢复: 支持任务中断后的恢复

4.4 监控统计

  • 详细日志: 记录每个操作的详细信息
  • 统计报告: 清理结果的统计分析
  • 性能监控: 执行时间和资源使用监控
  • 历史记录: 保留清理历史记录

5. 使用场景

5.1 测试环境清理

  • 定期清理测试数据
  • 重置测试环境状态
  • 清理过期的测试记录

5.2 开发环境维护

  • 清理开发过程中的临时数据
  • 重置开发环境到初始状态
  • 清理调试产生的冗余数据

5.3 数据维护

  • 清理过期的日志数据
  • 清理无效的缓存数据
  • 清理孤立的关联数据

6. 技术要求

6.1 性能要求

  • 支持大数据量的高效清理
  • 分批处理避免内存溢出
  • 优化的SQL查询减少数据库压力

6.2 安全要求

  • 严格的权限控制
  • 完整的操作审计
  • 数据库备份保障

6.3 可维护性

  • 清晰的代码结构
  • 完整的文档说明
  • 易于扩展的架构设计