Files
game_server/COMPLETION_IMAGE_ALL_TRIGGERS.md

4.7 KiB
Raw Permalink Blame History

完成图片保存 - 所有触发点总结

已完成

现在系统中所有任务完成的场景都会自动保存图片!

📍 任务完成的所有触发点

1. GameCompletionDetectionService游戏完成检测服务

位置: src/main/java/com/gameplatform/server/service/detection/GameCompletionDetectionService.java

触发条件:

  • 设备状态为"已打完"(高置信度)→ 立即完成
  • 设备状态为"空闲"(中等置信度)→ 二次确认后完成
  • 登录超过30秒后才检测避免误判

触发来源:

  • EVENT_LISTENER: 设备状态更新事件
  • REGION_SELECT: 选区请求时主动检查
  • MANUAL: 手动触发

图片保存: 已集成第232行


2. DeviceStats设备统计服务

位置: src/main/java/com/gameplatform/server/device/DeviceStats.java

触发条件:

  • 设备状态为"空闲"
  • 存在 LOGGED_IN 任务
  • 任务登录时间超过 3 分钟

触发频率: 每30秒定时任务

完成原因: AUTO_COMPLETE_IDLE_3M

图片保存: 已集成第381行

日志示例:

自动完成任务codeNo=FYLAYKEA device=rr0 loginAt=2025-11-03T19:48:29.062 超过3分钟

3. DeviceAllocationService设备分配服务

位置: src/main/java/com/gameplatform/server/service/link/DeviceAllocationService.java

触发条件:

  • 任务状态为 LOGGED_IN
  • 距离上次更新时间超过 30 分钟

触发时机: 尝试分配新设备前检查

完成原因: LOGGED_IN超过30分钟自动完成

图片保存: 已集成第173行

日志示例:

自动完成LOGGED_IN链接codeNo=ABC123, device=f1, updatedAt=2025-11-03T19:00:00, 超过30分钟

4. DeviceStatusCheckService设备状态检查服务

位置: src/main/java/com/gameplatform/server/service/device/DeviceStatusCheckService.java

触发条件:

  • 设备状态为"空闲"
  • 完成检测服务未触发(兜底机制)
  • 存在 LOGGED_IN 任务

完成原因: 状态已完成空闲兜底触发原因xxx

图片保存: 已集成第102行

特点: 批量完成所有设备上的 LOGGED_IN 任务


🎯 完整流程图

graph TD
    A[任务变为 COMPLETED] --> B{触发来源}
    
    B -->|检测服务| C[GameCompletionDetectionService]
    B -->|设备统计| D[DeviceStats]
    B -->|设备分配| E[DeviceAllocationService]
    B -->|状态检查| F[DeviceStatusCheckService]
    
    C --> G[异步保存4张图片]
    D --> G
    E --> G
    F --> G
    
    G --> H[并发下载图片]
    H --> I[保存到本地文件系统]
    I --> J[更新数据库记录]
    J --> K[24小时后自动清理]

📊 完成场景对比

触发服务 完成条件 检测频率 置信度 缓冲期
GameCompletionDetectionService "已打完"或"空闲" 实时 高/中 30秒
DeviceStats 空闲且登录>3分钟 30秒
DeviceAllocationService LOGGED_IN>30分钟 按需
DeviceStatusCheckService 空闲兜底 按需

🔍 验证方法

查看日志

# 查看所有完成相关日志
tail -f logs/server.log | grep -E "自动完成|完成图片"

# 查看特定链接的图片保存
tail -f logs/server.log | grep "codeNo=FYLAYKEA"

查询数据库

-- 查看最近完成且保存了图片的任务
SELECT 
    code_no,
    status,
    reason,
    completed_points,
    completion_images_saved_at,
    JSON_EXTRACT(completion_images, '$.totalCount') as image_count
FROM link_task
WHERE status = 'COMPLETED'
  AND completion_images_saved_at IS NOT NULL
ORDER BY completion_images_saved_at DESC
LIMIT 10;

检查文件系统

# 查看今天保存的所有图片
ls -lh completion-images/$(date +%Y%m%d)/

# 查看特定任务的图片
find completion-images -name "*FYLAYKEA*" -type d
ls -lh completion-images/*/FYLAYKEA/

📝 日志关键字

  • 成功保存: 完成图片保存成功
  • ⚠️ 保存失败: 完成图片保存失败
  • 📸 开始保存: 开始异步保存完成图片
  • 🔍 任务完成:
    • 任务.*已标记完成
    • 自动完成任务
    • 自动完成LOGGED_IN链接
    • 空闲兜底

🎉 总结

所有4个触发点都已集成图片保存功能

不管任务是通过哪种方式完成的(智能检测、超时自动完成、兜底机制等),系统都会:

  1. 自动保存4张完成图片
  2. 更新数据库记录
  3. 24小时后自动清理
  4. 异步执行不阻塞主流程

更新时间: 2025-11-03
版本: v1.1.0 (完整覆盖所有触发点)