from iti.applications.extensions import db from iti.applications.common.crud import TimeModelMixin from iti.applications.common.utils import BaseSchema from apiflask.fields import String, Integer, DateTime, Nested class IotAlertRule(db.Model, TimeModelMixin): """ 告警规则表 """ __tablename__ = "iot_alert_rule" id = db.Column( db.Integer, primary_key=True, autoincrement=True, comment="标识", ) rule_name = db.Column(db.String(255), nullable=False, comment="告警规则名称") node_id = db.Column(db.Integer, nullable=False, comment="采集节点ID") trigger_count = db.Column(db.Integer, nullable=False, comment="阈值触发次数,超过次数后告警") alert_rule = db.Column(db.String(255), nullable=False, comment="告警触发表达式") alert_text = db.Column(db.String(2048), nullable=False, comment="告警文本") alert_level = db.Column(db.Integer, nullable=False, comment="告警级别 0-预警,1-一般,2-紧急,3-严重") status = db.Column(db.Integer, nullable=False, default=1, comment="状态 1-启用,0-禁用") class IotAlertRuleSchema(BaseSchema): """ 告警规则表响应结构 """ class Meta: name = "IotAlertRule" id = Integer() rule_name = String() node_id = Integer() trigger_count = Integer() alert_rule = String() alert_text = String() alert_level = Integer() status = Integer() created_at = DateTime(format="%Y-%m-%d %H:%M:%S") updated_at = DateTime(format="%Y-%m-%d %H:%M:%S")