feat(aiot): 告警三表结构升级 + 腾讯云COS对象存储集成
1. 新增三表结构: alarm_event(主表), alarm_event_ext(算法扩展), alarm_llm_analysis(大模型分析) 2. 新增 AlarmEventService 服务,支持 MQTT/HTTP 双路创建告警 3. MQTT handler 双写新旧表,平滑过渡 4. 重写 yudao_aiot_alarm 路由,对接新告警服务 5. 集成腾讯云 COS 对象存储:上传、预签名URL、STS临时凭证 6. 新增 storage 路由:upload/presign/upload-url/sts 四个接口 7. COS 未启用时自动降级本地 uploads/ 目录存储 8. 新增数据迁移脚本 migrate_to_alarm_event.py 9. 删除根目录 main.py(非项目入口) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -15,13 +15,16 @@ class DatabaseConfig:
|
||||
|
||||
|
||||
@dataclass
|
||||
class OSSConfig:
|
||||
"""OSS 存储配置"""
|
||||
access_key_id: str = ""
|
||||
access_key_secret: str = ""
|
||||
endpoint: str = "oss-cn-hangzhou.aliyuncs.com"
|
||||
bucket_name: str = ""
|
||||
url_prefix: str = ""
|
||||
class COSConfig:
|
||||
"""腾讯云 COS 存储配置"""
|
||||
secret_id: str = ""
|
||||
secret_key: str = ""
|
||||
region: str = "ap-beijing"
|
||||
bucket: str = "" # 格式: bucketname-appid
|
||||
upload_prefix: str = "alerts" # 对象 Key 前缀
|
||||
presign_expire: int = 1800 # 预签名URL有效期(秒),默认30分钟
|
||||
sts_expire: int = 1800 # STS 临时凭证有效期(秒)
|
||||
enabled: bool = False # 是否启用 COS(False 时使用本地存储)
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -57,7 +60,7 @@ class MQTTConfig:
|
||||
class Settings(BaseModel):
|
||||
"""全局配置"""
|
||||
database: DatabaseConfig = DatabaseConfig()
|
||||
oss: OSSConfig = OSSConfig()
|
||||
cos: COSConfig = COSConfig()
|
||||
app: AppConfig = AppConfig()
|
||||
ai_model: AIModelConfig = AIModelConfig()
|
||||
mqtt: MQTTConfig = MQTTConfig()
|
||||
@@ -72,12 +75,15 @@ def load_settings() -> Settings:
|
||||
database=DatabaseConfig(
|
||||
url=os.getenv("DATABASE_URL", "sqlite:///./data/alert_platform.db"),
|
||||
),
|
||||
oss=OSSConfig(
|
||||
access_key_id=os.getenv("OSS_ACCESS_KEY_ID", ""),
|
||||
access_key_secret=os.getenv("OSS_ACCESS_KEY_SECRET", ""),
|
||||
endpoint=os.getenv("OSS_ENDPOINT", "oss-cn-hangzhou.aliyuncs.com"),
|
||||
bucket_name=os.getenv("OSS_BUCKET_NAME", ""),
|
||||
url_prefix=os.getenv("OSS_URL_PREFIX", ""),
|
||||
cos=COSConfig(
|
||||
secret_id=os.getenv("COS_SECRET_ID", ""),
|
||||
secret_key=os.getenv("COS_SECRET_KEY", ""),
|
||||
region=os.getenv("COS_REGION", "ap-beijing"),
|
||||
bucket=os.getenv("COS_BUCKET", ""),
|
||||
upload_prefix=os.getenv("COS_UPLOAD_PREFIX", "alerts"),
|
||||
presign_expire=int(os.getenv("COS_PRESIGN_EXPIRE", "1800")),
|
||||
sts_expire=int(os.getenv("COS_STS_EXPIRE", "1800")),
|
||||
enabled=os.getenv("COS_ENABLED", "false").lower() == "true",
|
||||
),
|
||||
app=AppConfig(
|
||||
host=os.getenv("APP_HOST", "0.0.0.0"),
|
||||
|
||||
Reference in New Issue
Block a user