diff --git a/core/config_sync.py b/core/config_sync.py index 0b3ab23..172162a 100644 --- a/core/config_sync.py +++ b/core/config_sync.py @@ -1,6 +1,11 @@ """ 配置同步模块 -实现MySQL数据库连接管理、Redis Pub/Sub订阅、配置缓存与动态刷新 +实现 SQLite 本地配置存储、Redis Pub/Sub订阅、配置缓存与动态刷新 + +存储策略: +- SQLite: 本地配置存储(摄像头、ROI) +- Redis: 配置变更实时推送 +- 内存缓存: 热点配置快速访问 """ import json @@ -15,7 +20,7 @@ from redis import Redis from redis.client import PubSub from config.settings import get_settings, RedisConfig -from config.database import get_database_manager, DatabaseManager +from config.database import get_sqlite_manager, SQLiteManager from config.config_models import CameraInfo as CameraInfoModel, ROIInfo, ConfigVersion from utils.version_control import get_version_control @@ -148,7 +153,7 @@ class ConfigSyncManager: def _init_database(self): """初始化数据库连接""" if self._db_manager is None: - self._db_manager = get_database_manager() + self._db_manager = get_sqlite_manager() @property def config_version(self) -> str: @@ -263,7 +268,7 @@ class ConfigSyncManager: return [] try: - cameras = self._db_manager.get_camera_info() + cameras = self._db_manager.get_all_camera_configs() result = [CameraInfoModel.from_dict(c) for c in cameras] self._cache.set(cache_key, result) @@ -292,7 +297,10 @@ class ConfigSyncManager: return [] try: - roi_configs = self._db_manager.get_roi_configs(camera_id=camera_id) + if camera_id: + roi_configs = self._db_manager.get_rois_by_camera(camera_id) + else: + roi_configs = self._db_manager.get_all_roi_configs() result = [ROIInfo.from_dict(r) for r in roi_configs] self._cache.set(cache_key, result) @@ -314,11 +322,11 @@ class ConfigSyncManager: try: if config_type == "camera": - cameras = self._db_manager.get_camera_info(camera_id) - return cameras[0] if cameras else None + camera = self._db_manager.get_camera_config(config_id) + return camera if camera else None elif config_type == "roi": - rois = self._db_manager.get_roi_configs(roi_id=config_id) - return rois[0] if rois else None + roi = self._db_manager.get_roi_config(config_id) + return roi if roi else None except Exception as e: logger.error(f"获取配置失败: {e}") return None diff --git a/core/result_reporter.py b/core/result_reporter.py index cb821fd..e2d9ea0 100644 --- a/core/result_reporter.py +++ b/core/result_reporter.py @@ -1,11 +1,11 @@ """ 结果上报模块 -支持 MQTT、云端 MySQL 和本地 SQLite 存储 +支持 MQTT 推送和本地 SQLite 存储 存储策略: - MQTT: 实时推送告警到云端 - SQLite: 本地异步存储(边缘侧断网容灾) -- MySQL: 可选云端同步 +- 断网时自动缓存到本地,恢复后自动同步 """ import json