Add cutover-compare nav group and monitor templates.

Move biz monitor/compare/migration under Cutover compare, split compare templates into their own page, and add monitor-template CRUD that overlays compare templates.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-09-18 20:09:26 +08:00
parent f3a8f80822
commit 202196a197
13 changed files with 812 additions and 36 deletions

View file

@ -29,6 +29,7 @@ from .biz_state import (
BizCompareJob,
BizCompareRun,
BizCompareTemplate,
BizMonitorTemplate,
BizPortMapping,
BizPortMappingRow,
BizStateBatch,
@ -148,6 +149,7 @@ __all__ = [
"BizStateEvent",
"BizStateCommandOverride",
"BizCompareTemplate",
"BizMonitorTemplate",
"BizPortMapping",
"BizPortMappingRow",
"BizCompareJob",

View file

@ -221,6 +221,27 @@ class BizCompareTemplate(Base):
ignore_fields: Mapped[list] = mapped_column(_JsonType, default=list)
metrics_json: Mapped[list] = mapped_column(_JsonType, default=list)
note: Mapped[str] = mapped_column(String(512), default="")
created_at: Mapped[datetime] = mapped_column(DateTime, default=utcnow_naive, index=True)
updated_at: Mapped[datetime] = mapped_column(DateTime, default=utcnow_naive)
class BizMonitorTemplate(Base):
"""Cutover/monitor overlay on a BizCompareTemplate (HOW + WHEN rules).
``compare_template_id`` selects sheets / field rules.
``defaults_json`` / ``sheet_overrides_json`` carry dual-verdict & status semantics.
``collect_metric_ids_json`` optional HF collect subset.
"""
__tablename__ = "biz_monitor_template"
id: Mapped[str] = mapped_column(String(64), primary_key=True, default=lambda: uuid4().hex)
name: Mapped[str] = mapped_column(String(256), default="", index=True)
compare_template_id: Mapped[str] = mapped_column(String(64), default="", index=True)
collect_metric_ids_json: Mapped[list] = mapped_column(_JsonType, default=list)
defaults_json: Mapped[dict] = mapped_column(_JsonType, default=dict)
sheet_overrides_json: Mapped[list] = mapped_column(_JsonType, default=list)
note: Mapped[str] = mapped_column(String(512), default="")
created_at: Mapped[datetime] = mapped_column(DateTime, default=utcnow_naive)
updated_at: Mapped[datetime] = mapped_column(DateTime, default=utcnow_naive)