修复:proxyImage无持久化记录时自动触发截图,避免首次加载404

DB无cos_key记录时,自动调用requestScreenshot触发Edge截图,
等待结果持久化后再代理返回图片,解决ROI页面首次加载显示损坏图片。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-11 09:48:20 +08:00
parent 5cfac62421
commit 8ddb56008f

View File

@@ -320,9 +320,18 @@ public class AiScreenshotServiceImpl implements IAiScreenshotService {
// 1. 查 DB 持久化的 cos_key永不过期- 优先直接操作 COS
String cosKey = snapshotMapper.getCosKey(cameraCode);
if (cosKey == null) {
log.warn("[AI截图] 代理图片: 无持久化记录 cameraCode={}", cameraCode);
// DB 无记录,自动触发一次截图并等待持久化
log.info("[AI截图] 代理图片: 无持久化记录,自动触发截图 cameraCode={}", cameraCode);
Map<String, Object> snapResult = requestScreenshot(cameraCode, true);
if ("ok".equals(snapResult.get("status"))) {
// 截图成功,重新查 DB
cosKey = snapshotMapper.getCosKey(cameraCode);
}
if (cosKey == null) {
log.warn("[AI截图] 代理图片: 自动截图后仍无持久化记录 cameraCode={}", cameraCode);
return null;
}
}
// 2. 通过 CosUtil 直接生成 presigned URL
if (!cosUtil.isAvailable()) {