Files
AIGC/demo/TASK_CLEANUP_SYSTEM_README.md
AIGC Developer 8c55f9f376 feat: 完成代码逻辑错误修复和任务清理系统实现
主要更新:
- 修复了所有主要的代码逻辑错误
- 实现了完整的任务清理系统
- 添加了系统设置页面的任务清理管理功能
- 修复了API调用认证问题
- 优化了密码加密和验证机制
- 统一了错误处理模式
- 添加了详细的文档和测试工具

新增功能:
- 任务清理管理界面
- 任务归档和清理日志
- API监控和诊断工具
- 完整的测试套件

技术改进:
- 修复了Repository方法调用错误
- 统一了模型方法调用
- 改进了类型安全性
- 优化了代码结构和可维护性
2025-10-27 10:46:49 +08:00

4.5 KiB
Raw Blame History

任务清理系统实现说明

功能概述

本系统实现了定期清理任务列表的功能,将成功的任务导出到专门的归档表中,失败的任务记录到清理日志后删除。

系统架构

1. 数据库表结构

成功任务归档表 (completed_tasks_archive)

CREATE TABLE completed_tasks_archive (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    task_id VARCHAR(255) NOT NULL,
    username VARCHAR(255) NOT NULL,
    task_type VARCHAR(50) NOT NULL,
    prompt TEXT,
    aspect_ratio VARCHAR(20),
    duration INT,
    hd_mode BOOLEAN DEFAULT FALSE,
    result_url TEXT,
    real_task_id VARCHAR(255),
    progress INT DEFAULT 100,
    created_at TIMESTAMP NOT NULL,
    completed_at TIMESTAMP NOT NULL,
    archived_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    points_cost INT DEFAULT 0
);

失败任务清理日志表 (failed_tasks_cleanup_log)

CREATE TABLE failed_tasks_cleanup_log (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    task_id VARCHAR(255) NOT NULL,
    username VARCHAR(255) NOT NULL,
    task_type VARCHAR(50) NOT NULL,
    error_message TEXT,
    created_at TIMESTAMP NOT NULL,
    failed_at TIMESTAMP NOT NULL,
    cleaned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. 核心组件

TaskCleanupService

  • 功能: 执行任务清理的核心服务
  • 主要方法:
    • performFullCleanup(): 执行完整清理
    • cleanupTextToVideoTasks(): 清理文生视频任务
    • cleanupImageToVideoTasks(): 清理图生视频任务
    • cleanupTaskQueue(): 清理任务队列
    • cleanupExpiredArchives(): 清理过期归档
    • cleanupUserTasks(): 清理指定用户任务

TaskQueueScheduler

  • 功能: 定时调度器
  • 调度任务:
    • 每天凌晨4点执行任务清理 (@Scheduled(cron = "0 0 4 * * ?"))

CleanupController

  • 功能: 提供手动清理的API接口
  • 接口:
    • POST /api/cleanup/full-cleanup: 执行完整清理
    • POST /api/cleanup/user-tasks/{username}: 清理指定用户任务
    • GET /api/cleanup/cleanup-stats: 获取清理统计信息

清理流程

1. 成功任务处理

  1. 查找所有状态为 COMPLETED 的任务
  2. 将任务信息导出到 completed_tasks_archive
  3. 从原始任务表中删除记录

2. 失败任务处理

  1. 查找所有状态为 FAILED 的任务
  2. 将任务信息记录到 failed_tasks_cleanup_log
  3. 从原始任务表中删除记录

3. 任务队列清理

  1. 删除状态为 COMPLETEDFAILED 的任务队列记录

4. 过期归档清理

  1. 删除超过保留期的归档记录和清理日志

配置参数

# 任务保留天数默认30天
task.cleanup.retention-days=30

# 归档保留天数默认365天
task.cleanup.archive-retention-days=365

使用方法

1. 自动清理

系统每天凌晨4点自动执行清理任务无需人工干预。

2. 手动清理

# 执行完整清理
curl -X POST "http://localhost:8080/api/cleanup/full-cleanup"

# 清理指定用户任务
curl -X POST "http://localhost:8080/api/cleanup/user-tasks/admin"

# 获取清理统计信息
curl "http://localhost:8080/api/cleanup/cleanup-stats"

3. PowerShell测试脚本

# 运行测试脚本
.\test-cleanup.ps1

监控和统计

清理统计信息

  • 当前任务数量(按状态分类)
  • 归档任务数量
  • 清理日志数量
  • 配置参数

日志记录

  • 清理操作的详细日志
  • 错误处理和异常记录
  • 性能监控信息

安全考虑

  1. 事务处理: 所有清理操作都在事务中执行,确保数据一致性
  2. 错误处理: 完善的异常处理机制,避免清理过程中的数据丢失
  3. 权限控制: API接口需要适当的权限验证
  4. 数据备份: 建议在清理前进行数据备份

扩展功能

1. 自定义清理策略

  • 支持按任务类型设置不同的保留期
  • 支持按用户等级设置不同的清理策略

2. 清理报告

  • 生成清理操作的详细报告
  • 支持邮件通知清理结果

3. 数据导出

  • 支持将归档数据导出为CSV或Excel格式
  • 支持按时间范围导出数据

注意事项

  1. 数据恢复: 清理后的数据无法直接恢复,需要从归档表中查找
  2. 性能影响: 大量数据清理可能影响系统性能,建议在低峰期执行
  3. 存储空间: 归档表会占用额外的存储空间,需要定期清理过期数据
  4. 备份策略: 建议定期备份归档表数据

文档生成时间: 2025-01-24 版本: 1.0