4.7 KiB
4.7 KiB
完成图片保存 - 所有触发点总结
✅ 已完成
现在系统中所有任务完成的场景都会自动保存图片!
📍 任务完成的所有触发点
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个触发点都已集成图片保存功能!
不管任务是通过哪种方式完成的(智能检测、超时自动完成、兜底机制等),系统都会:
- ✅ 自动保存4张完成图片
- ✅ 更新数据库记录
- ✅ 24小时后自动清理
- ✅ 异步执行不阻塞主流程
更新时间: 2025-11-03
版本: v1.1.0 (完整覆盖所有触发点)