chore: update core to v1.1.0 (hooks plugin system)

This commit is contained in:
Du Wenbo
2026-04-04 18:32:11 +08:00
6 changed files with 265 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
from app.models.alarm import AlarmRule, AlarmEvent
from app.models.energy import EnergyData
from app.models.device import Device
from app.hooks import get_hooks
logger = logging.getLogger("alarm_checker")
@@ -233,6 +234,16 @@ async def check_alarms(session: AsyncSession):
triggered_at=now,
)
session.add(event)
await session.flush() # Ensure event has id
# Customer hook: on_alarm_created
try:
_dev = await session.execute(select(Device).where(Device.id == device_id))
_device = _dev.scalar_one_or_none()
await get_hooks().on_alarm_created(event, _device, rule, session)
except Exception as _he:
logger.error(f"Hook on_alarm_created error: {_he}")
logger.info(
f"Alarm triggered: {rule.name} | device={device_id} | "
f"value={dp.value} threshold={threshold_str}"
@@ -246,6 +257,14 @@ async def check_alarms(session: AsyncSession):
active_event.status = "resolved"
active_event.resolved_at = now
active_event.resolve_note = "自动恢复"
# Customer hook: on_alarm_resolved
try:
_dev2 = await session.execute(select(Device).where(Device.id == device_id))
_device2 = _dev2.scalar_one_or_none()
await get_hooks().on_alarm_resolved(active_event, _device2, session)
except Exception as _he2:
logger.error(f"Hook on_alarm_resolved error: {_he2}")
logger.info(
f"Alarm auto-resolved: {rule.name} | device={device_id}"
)