feat: 更新公告和链接状态接口,增强参数校验,支持跳转链接最大长度为5000字符,添加异步保存完成图片功能,优化接口文档和数据库结构

This commit is contained in:
yahaozhang
2025-11-03 20:56:34 +08:00
parent f43320138a
commit cadf8d98cb
40 changed files with 3148 additions and 17 deletions

View File

@@ -0,0 +1,178 @@
# 完成图片保存 - 所有触发点总结
## ✅ 已完成
现在系统中所有任务完成的场景都会自动保存图片!
## 📍 任务完成的所有触发点
### 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 任务
---
## 🎯 完整流程图
```mermaid
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 | 空闲兜底 | 按需 | 中 | 无 |
## 🔍 验证方法
### 查看日志
```bash
# 查看所有完成相关日志
tail -f logs/server.log | grep -E "自动完成|完成图片"
# 查看特定链接的图片保存
tail -f logs/server.log | grep "codeNo=FYLAYKEA"
```
### 查询数据库
```sql
-- 查看最近完成且保存了图片的任务
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;
```
### 检查文件系统
```bash
# 查看今天保存的所有图片
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 (完整覆盖所有触发点)