"""超期预警 数据模型(批3:每日扫描 job 落库,open→resolved 生命周期)""" from sqlalchemy import Integer, String, Text from sqlalchemy.orm import Mapped, mapped_column from app.core.base_model import MappedBase, ModelMixin, UserMixin class AlertModel(ModelMixin, UserMixin, MappedBase): """超期预警。 alert_type 三类:tree_undecided 单株多年未决策 / pollen_expiry 花粉批次过期 / seed_lot_expiry 种子批超期。生成侧为每日定时 job,直接 db.add(不经 CRUDBase, 避免自审计噪声);created_id 记录处理人,job 自动生成时为空。 """ __tablename__ = "bre_alert" alert_type: Mapped[str] = mapped_column( String(32), index=True, nullable=False, comment="预警类型(tree_undecided/pollen_expiry/seed_lot_expiry)", ) entity_type: Mapped[str] = mapped_column(String(64), nullable=False, comment="实体类型(业务表名)") entity_id: Mapped[int] = mapped_column(Integer, index=True, nullable=False, comment="实体ID") message: Mapped[str | None] = mapped_column(Text, nullable=True, comment="预警内容", default=None) status: Mapped[str] = mapped_column( String(16), nullable=False, default="open", comment="状态(open未处理/resolved已处理)" )