Initial commit: LogHive centralized log management system
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
"""Alert schemas."""
|
||||
|
||||
from datetime import datetime
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
# ── Alert Rule ─────────────────────────────────────────────────
|
||||
|
||||
|
||||
class AlertRuleCreate(BaseModel):
|
||||
project_id: str = Field(..., min_length=1, max_length=36)
|
||||
name: str = Field(..., min_length=1, max_length=128)
|
||||
level: str = Field(default="warning", pattern="^(info|warning|critical)$")
|
||||
field: str = Field(default="level", max_length=64)
|
||||
operator: str = Field(default="gte", pattern="^(gt|gte|lt|lte|eq)$")
|
||||
threshold: float = Field(..., ge=0)
|
||||
window_minutes: int = Field(default=5, ge=1, le=1440)
|
||||
notify_channels: List[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class AlertRuleUpdate(BaseModel):
|
||||
name: Optional[str] = Field(default=None, max_length=128)
|
||||
level: Optional[str] = Field(default=None, pattern="^(info|warning|critical)$")
|
||||
field: Optional[str] = Field(default=None, max_length=64)
|
||||
operator: Optional[str] = Field(default=None, pattern="^(gt|gte|lt|lte|eq)$")
|
||||
threshold: Optional[float] = Field(default=None, ge=0)
|
||||
window_minutes: Optional[int] = Field(default=None, ge=1, le=1440)
|
||||
is_enabled: Optional[bool] = None
|
||||
notify_channels: Optional[List[str]] = None
|
||||
|
||||
|
||||
class AlertRuleResponse(BaseModel):
|
||||
id: str
|
||||
project_id: str
|
||||
name: str
|
||||
level: str
|
||||
field: str
|
||||
operator: str
|
||||
threshold: float
|
||||
window_minutes: int
|
||||
is_enabled: bool
|
||||
notify_channels: List[str]
|
||||
created_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
# ── Alert History ──────────────────────────────────────────────
|
||||
|
||||
|
||||
class AlertHistoryResponse(BaseModel):
|
||||
id: str
|
||||
rule_id: str
|
||||
project_id: str
|
||||
level: str
|
||||
message: str
|
||||
triggered_value: Optional[float] = None
|
||||
is_acknowledged: bool
|
||||
triggered_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
Reference in New Issue
Block a user