release: v1.10.0 — модуль команд (teams), team_id на алертах
- Alembic 006: teams, team_label_rules, irm_alerts.team_id - Вебхук: сопоставление команды по правилам лейблов (priority) - API/UI Команды; алерты: JOIN team, фильтр team_id - Тесты test_team_match, test_teams_api; обновлён test_root_ui Made-with: Cursor
This commit is contained in:
@ -10,6 +10,7 @@ from starlette.responses import Response
|
||||
from onguard24.domain.entities import Alert, Severity
|
||||
from onguard24.grafana_sources import sources_by_slug, webhook_authorized
|
||||
from onguard24.ingress.grafana_payload import extract_alert_row_from_grafana_body
|
||||
from onguard24.ingress.team_match import resolve_team_id_for_labels
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
router = APIRouter(tags=["ingress"])
|
||||
@ -136,13 +137,14 @@ async def _grafana_webhook_impl(
|
||||
)
|
||||
raw_id = row["id"] if row else None
|
||||
if raw_id is not None:
|
||||
team_id = await resolve_team_id_for_labels(conn, labels_row)
|
||||
await conn.execute(
|
||||
"""
|
||||
INSERT INTO irm_alerts (
|
||||
ingress_event_id, status, title, severity, source,
|
||||
grafana_org_slug, service_name, labels, fingerprint
|
||||
grafana_org_slug, service_name, labels, fingerprint, team_id
|
||||
)
|
||||
VALUES ($1, 'firing', $2, $3, 'grafana', $4, $5, $6::jsonb, $7)
|
||||
VALUES ($1, 'firing', $2, $3, 'grafana', $4, $5, $6::jsonb, $7, $8)
|
||||
""",
|
||||
raw_id,
|
||||
title_row or "—",
|
||||
@ -151,6 +153,7 @@ async def _grafana_webhook_impl(
|
||||
service_name,
|
||||
json.dumps(labels_row),
|
||||
fp_row,
|
||||
team_id,
|
||||
)
|
||||
bus = getattr(request.app.state, "event_bus", None)
|
||||
if bus and raw_id is not None:
|
||||
|
||||
Reference in New Issue
Block a user