from typing import Optional from schemas.enums import NotificationLevel from schemas.models import NotificationModel from database.db import DatabaseManager from telemetry.event_bus import EventBus class NotificationEngine: """Central notification center managing persisted system alerts and WS events.""" def __init__(self, db: DatabaseManager, event_bus: EventBus): self.db = db self.event_bus = event_bus async def notify(self, level: NotificationLevel, title: str, message: str, mission_id: Optional[str] = None) -> NotificationModel: notif = NotificationModel(level=level, title=title, message=message, mission_id=mission_id) await self.db.save_notification(notif) await self.event_bus.emit("NotificationCreated", mission_id or "system", "NotificationEngine", notif.model_dump()) return notif