fix: 优化边缘端稳定性和日志管理

1. database.py: 优化数据库连接和错误处理
2. postprocessor.py: 改进后处理逻辑
3. result_reporter.py: 完善告警上报字段
4. video_stream.py: 增强视频流稳定性
5. main.py: 优化启动流程和异常处理
6. logger.py: 改进日志格式和轮转配置

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-09 17:47:41 +08:00
parent ff3d6e2653
commit 93a2278626
6 changed files with 108 additions and 42 deletions

View File

@@ -17,6 +17,19 @@ import time
import logging
from datetime import datetime, timedelta
from typing import Any, Dict, List, Optional, Generator
def _normalize_coordinates(coords):
"""将坐标统一为 [[x,y],...] 格式,兼容 [{'x':..,'y':..},...] 格式"""
if isinstance(coords, str):
try:
coords = eval(coords)
except:
return coords
if isinstance(coords, list) and coords and isinstance(coords[0], dict):
return [[p.get("x", 0), p.get("y", 0)] for p in coords]
return coords
from dataclasses import dataclass, field
from pathlib import Path
@@ -633,7 +646,7 @@ class SQLiteManager:
'enabled', 'priority', 'extra_params', 'updated_at']
result = dict(zip(columns, row))
try:
result['coordinates'] = eval(result['coordinates'])
result['coordinates'] = _normalize_coordinates(result['coordinates'])
except:
pass
return result
@@ -653,7 +666,7 @@ class SQLiteManager:
for row in cursor.fetchall():
r = dict(zip(columns, row))
try:
r['coordinates'] = eval(r['coordinates'])
r['coordinates'] = _normalize_coordinates(r['coordinates'])
except:
pass
results.append(r)
@@ -661,7 +674,7 @@ class SQLiteManager:
except Exception as e:
logger.error(f"获取ROI配置失败: {e}")
return []
def get_all_roi_configs(self) -> List[Dict[str, Any]]:
"""获取所有ROI配置"""
try:
@@ -673,7 +686,7 @@ class SQLiteManager:
for row in cursor.fetchall():
r = dict(zip(columns, row))
try:
r['coordinates'] = eval(r['coordinates'])
r['coordinates'] = _normalize_coordinates(r['coordinates'])
except:
pass
results.append(r)
@@ -856,7 +869,7 @@ class SQLiteManager:
if result.get('params'):
result['params'] = json.loads(result['params'])
if result.get('coordinates'):
result['coordinates'] = eval(result['coordinates'])
result['coordinates'] = _normalize_coordinates(result['coordinates'])
except:
pass
results.append(result)