feat: global notification policy severity to channels (notif-22)

Singleton notification_policy table, NOTIFY_MIN_SEVERITY/CHANNELS env,
central dispatch gate, Settings policy UI, migration 007.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-29 16:19:26 +10:00
parent 9b177c145b
commit ebb450be92
19 changed files with 577 additions and 126 deletions
+2 -1
View File
@@ -2,6 +2,7 @@ from app.models.api_key import ApiKey
from app.models.event import Event
from app.models.host import Host
from app.models.notification_channel import NotificationChannel
from app.models.notification_policy import NotificationPolicy
from app.models.problem import Problem, ProblemEvent
__all__ = ["ApiKey", "Event", "Host", "NotificationChannel", "Problem", "ProblemEvent"]
__all__ = ["ApiKey", "Event", "Host", "NotificationChannel", "NotificationPolicy", "Problem", "ProblemEvent"]
+18
View File
@@ -0,0 +1,18 @@
from sqlalchemy import Boolean, String
from sqlalchemy.orm import Mapped, mapped_column
from app.database import Base
POLICY_ROW_ID = 1
class NotificationPolicy(Base):
"""Singleton: глобальное правило severity → каналы (F-NOT-02 урезанно)."""
__tablename__ = "notification_policy"
id: Mapped[int] = mapped_column(primary_key=True)
min_severity: Mapped[str] = mapped_column(String(16), default="warning")
use_telegram: Mapped[bool] = mapped_column(Boolean, default=True)
use_webhook: Mapped[bool] = mapped_column(Boolean, default=False)
use_email: Mapped[bool] = mapped_column(Boolean, default=False)