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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user