39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
"""Idempotent alert events emitted by scheduled and other backend tasks."""
|
|
from __future__ import annotations
|
|
|
|
from typing import Literal
|
|
from uuid import UUID
|
|
|
|
from app.domain.schemas.shared import NonEmptyStr, PositiveInt, StrictModel
|
|
from app.domain.schemas.workbench_runtime import WorkbenchAlertSource, WorkbenchDateTime
|
|
|
|
|
|
class TaskAlertCommand(StrictModel):
|
|
event_id: UUID
|
|
alert_id: NonEmptyStr
|
|
event_type: Literal["raised", "acknowledged", "resolved"]
|
|
occurred_at: WorkbenchDateTime
|
|
condition_id: NonEmptyStr | None
|
|
source: WorkbenchAlertSource
|
|
title: NonEmptyStr
|
|
description: NonEmptyStr
|
|
severity: Literal["warning", "critical"]
|
|
|
|
|
|
class TaskAlertEvent(TaskAlertCommand):
|
|
producer_id: NonEmptyStr
|
|
|
|
|
|
class TaskAlertState(StrictModel):
|
|
alert_id: NonEmptyStr
|
|
revision: PositiveInt
|
|
producer_id: NonEmptyStr
|
|
condition_id: NonEmptyStr | None
|
|
source: WorkbenchAlertSource
|
|
title: NonEmptyStr
|
|
description: NonEmptyStr
|
|
occurred_at: WorkbenchDateTime
|
|
severity: Literal["warning", "critical"]
|
|
status: Literal["active", "acknowledged", "resolved"]
|
|
updated_at: WorkbenchDateTime
|