Delete legacy alerts
This commit is contained in:
@@ -35,12 +35,6 @@ class ProductionPriority(str, enum.Enum):
|
||||
URGENT = "urgent"
|
||||
|
||||
|
||||
class AlertSeverity(str, enum.Enum):
|
||||
"""Alert severity levels"""
|
||||
LOW = "low"
|
||||
MEDIUM = "medium"
|
||||
HIGH = "high"
|
||||
CRITICAL = "critical"
|
||||
|
||||
|
||||
class ProductionBatch(Base):
|
||||
@@ -391,81 +385,3 @@ class QualityCheck(Base):
|
||||
}
|
||||
|
||||
|
||||
class ProductionAlert(Base):
|
||||
"""Production alert model for tracking production issues and notifications"""
|
||||
__tablename__ = "production_alerts"
|
||||
|
||||
# Primary identification
|
||||
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
||||
tenant_id = Column(UUID(as_uuid=True), nullable=False, index=True)
|
||||
|
||||
# Alert classification
|
||||
alert_type = Column(String(50), nullable=False, index=True) # capacity_exceeded, delay, quality_issue, etc.
|
||||
severity = Column(SQLEnum(AlertSeverity), nullable=False, default=AlertSeverity.MEDIUM)
|
||||
title = Column(String(255), nullable=False)
|
||||
message = Column(Text, nullable=False)
|
||||
|
||||
# Context
|
||||
batch_id = Column(UUID(as_uuid=True), nullable=True, index=True) # Associated batch if applicable
|
||||
schedule_id = Column(UUID(as_uuid=True), nullable=True, index=True) # Associated schedule if applicable
|
||||
source_system = Column(String(50), nullable=False, default="production")
|
||||
|
||||
# Status
|
||||
is_active = Column(Boolean, default=True)
|
||||
is_acknowledged = Column(Boolean, default=False)
|
||||
is_resolved = Column(Boolean, default=False)
|
||||
|
||||
# Actions and recommendations
|
||||
recommended_actions = Column(JSON, nullable=True) # List of suggested actions
|
||||
actions_taken = Column(JSON, nullable=True) # List of actions actually taken
|
||||
|
||||
# Business impact
|
||||
impact_level = Column(String(20), nullable=True) # low, medium, high, critical
|
||||
estimated_cost_impact = Column(Float, nullable=True)
|
||||
estimated_time_impact_minutes = Column(Integer, nullable=True)
|
||||
|
||||
# Resolution tracking
|
||||
acknowledged_by = Column(String(100), nullable=True)
|
||||
acknowledged_at = Column(DateTime(timezone=True), nullable=True)
|
||||
resolved_by = Column(String(100), nullable=True)
|
||||
resolved_at = Column(DateTime(timezone=True), nullable=True)
|
||||
resolution_notes = Column(Text, nullable=True)
|
||||
|
||||
# Alert data
|
||||
alert_data = Column(JSON, nullable=True) # Additional context data
|
||||
alert_metadata = Column(JSON, nullable=True) # Metadata for the alert
|
||||
|
||||
# Timestamps
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Convert to dictionary following shared pattern"""
|
||||
return {
|
||||
"id": str(self.id),
|
||||
"tenant_id": str(self.tenant_id),
|
||||
"alert_type": self.alert_type,
|
||||
"severity": self.severity.value if self.severity else None,
|
||||
"title": self.title,
|
||||
"message": self.message,
|
||||
"batch_id": str(self.batch_id) if self.batch_id else None,
|
||||
"schedule_id": str(self.schedule_id) if self.schedule_id else None,
|
||||
"source_system": self.source_system,
|
||||
"is_active": self.is_active,
|
||||
"is_acknowledged": self.is_acknowledged,
|
||||
"is_resolved": self.is_resolved,
|
||||
"recommended_actions": self.recommended_actions,
|
||||
"actions_taken": self.actions_taken,
|
||||
"impact_level": self.impact_level,
|
||||
"estimated_cost_impact": self.estimated_cost_impact,
|
||||
"estimated_time_impact_minutes": self.estimated_time_impact_minutes,
|
||||
"acknowledged_by": self.acknowledged_by,
|
||||
"acknowledged_at": self.acknowledged_at.isoformat() if self.acknowledged_at else None,
|
||||
"resolved_by": self.resolved_by,
|
||||
"resolved_at": self.resolved_at.isoformat() if self.resolved_at else None,
|
||||
"resolution_notes": self.resolution_notes,
|
||||
"alert_data": self.alert_data,
|
||||
"alert_metadata": self.alert_metadata,
|
||||
"created_at": self.created_at.isoformat() if self.created_at else None,
|
||||
"updated_at": self.updated_at.isoformat() if self.updated_at else None,
|
||||
}
|
||||
Reference in New Issue
Block a user