178 lines
7.6 KiB
SQL
178 lines
7.6 KiB
SQL
USE model_operations;
|
|
|
|
CREATE TABLE IF NOT EXISTS ops_rule_versions (
|
|
rule_version_id CHAR(26) NOT NULL,
|
|
workspace_id CHAR(26) NOT NULL COMMENT '逻辑引用 model_platform.workspaces',
|
|
category_code VARCHAR(32) NOT NULL DEFAULT '*'
|
|
COMMENT '* 表示全部模型大类',
|
|
version_label VARCHAR(64) NOT NULL,
|
|
rule_status VARCHAR(24) NOT NULL DEFAULT 'draft'
|
|
COMMENT 'draft/published/retired',
|
|
threshold_json JSON NOT NULL COMMENT 'KS/PSI/环比切点快照',
|
|
supersedes_rule_version_id CHAR(26) NULL,
|
|
change_note VARCHAR(1000) NULL,
|
|
created_by CHAR(26) NOT NULL COMMENT '逻辑引用 model_platform.users',
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
published_by CHAR(26) NULL COMMENT '逻辑引用 model_platform.users',
|
|
published_at DATETIME(3) NULL,
|
|
is_deleted TINYINT(1) NOT NULL DEFAULT 0,
|
|
deleted_at DATETIME(3) NULL,
|
|
PRIMARY KEY (rule_version_id),
|
|
UNIQUE KEY uk_ops_rule_versions_label (
|
|
workspace_id, category_code, version_label
|
|
),
|
|
KEY fk_ops_rule_versions_supersedes (supersedes_rule_version_id),
|
|
KEY idx_ops_rule_versions_status (
|
|
workspace_id, category_code, rule_status, published_at
|
|
)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
COMMENT='监控判级规则版本';
|
|
|
|
CREATE TABLE IF NOT EXISTS ops_rule_items (
|
|
rule_item_id CHAR(26) NOT NULL,
|
|
rule_version_id CHAR(26) NOT NULL COMMENT '逻辑引用 ops_rule_versions',
|
|
sort_order SMALLINT NOT NULL,
|
|
ranking_result VARCHAR(24) NOT NULL COMMENT 'matched/unmatched',
|
|
ks_band_code VARCHAR(32) NOT NULL,
|
|
psi_band_code VARCHAR(32) NOT NULL,
|
|
ks_drop_band_code VARCHAR(32) NOT NULL,
|
|
conditions_json JSON NULL COMMENT '用于跨档或扩展条件',
|
|
abnormal_level VARCHAR(16) NOT NULL
|
|
COMMENT 'normal/level1/level2/level3',
|
|
monitor_grade CHAR(1) NOT NULL COMMENT 'A/B/C',
|
|
secondary_upgrade_threshold SMALLINT NULL
|
|
COMMENT '近6月二级异常累计升级阈值',
|
|
reason_code VARCHAR(64) NOT NULL,
|
|
reason_template VARCHAR(1000) NOT NULL,
|
|
action_text VARCHAR(1000) NOT NULL,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
is_deleted TINYINT(1) NOT NULL DEFAULT 0,
|
|
deleted_at DATETIME(3) NULL,
|
|
PRIMARY KEY (rule_item_id),
|
|
UNIQUE KEY uk_ops_rule_items_order (rule_version_id, sort_order),
|
|
UNIQUE KEY uk_ops_rule_items_reason (rule_version_id, reason_code),
|
|
KEY fk_ops_rule_items_version (rule_version_id),
|
|
CONSTRAINT chk_ops_rule_items_grade
|
|
CHECK (monitor_grade IN ('A', 'B', 'C'))
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
COMMENT='规则版本下的判级矩阵行';
|
|
|
|
CREATE TABLE IF NOT EXISTS ops_monitor_evaluations (
|
|
evaluation_id CHAR(26) NOT NULL,
|
|
workspace_id CHAR(26) NOT NULL COMMENT '逻辑引用 model_platform.workspaces',
|
|
monitor_result_id CHAR(26) NOT NULL COMMENT '逻辑引用 ops_monitor_results',
|
|
rule_version_id CHAR(26) NOT NULL COMMENT '逻辑引用 ops_rule_versions',
|
|
rule_item_id CHAR(26) NOT NULL COMMENT '逻辑引用 ops_rule_items',
|
|
ks_mom_drop_rate DECIMAL(12,8) NULL COMMENT '0-1比率',
|
|
secondary_level2_hits_6m SMALLINT NOT NULL DEFAULT 0,
|
|
abnormal_level VARCHAR(16) NOT NULL
|
|
COMMENT 'normal/level1/level2/level3',
|
|
monitor_grade CHAR(1) NOT NULL COMMENT 'A/B/C',
|
|
reason_code VARCHAR(64) NOT NULL,
|
|
reason_text_snapshot VARCHAR(2000) NOT NULL,
|
|
action_snapshot VARCHAR(2000) NOT NULL,
|
|
is_current TINYINT(1) NOT NULL DEFAULT 1,
|
|
evaluated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
is_deleted TINYINT(1) NOT NULL DEFAULT 0,
|
|
deleted_at DATETIME(3) NULL,
|
|
current_monitor_result_id CHAR(26)
|
|
GENERATED ALWAYS AS (
|
|
CASE
|
|
WHEN is_current = 1 AND is_deleted = 0 THEN monitor_result_id
|
|
ELSE NULL
|
|
END
|
|
) VIRTUAL,
|
|
PRIMARY KEY (evaluation_id),
|
|
UNIQUE KEY uk_ops_evaluations_result_rule (
|
|
monitor_result_id, rule_version_id
|
|
),
|
|
UNIQUE KEY uk_ops_evaluations_current (current_monitor_result_id),
|
|
KEY fk_ops_evaluations_result (monitor_result_id),
|
|
KEY fk_ops_evaluations_rule_version (rule_version_id),
|
|
KEY fk_ops_evaluations_rule_item (rule_item_id),
|
|
KEY idx_ops_evaluations_grade (
|
|
workspace_id, monitor_grade, abnormal_level, evaluated_at
|
|
),
|
|
CONSTRAINT chk_ops_evaluations_grade
|
|
CHECK (monitor_grade IN ('A', 'B', 'C'))
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
COMMENT='按规则版本生成的不可变监控判级快照';
|
|
|
|
CREATE TABLE IF NOT EXISTS ops_monitor_reviews (
|
|
review_id CHAR(26) NOT NULL,
|
|
workspace_id CHAR(26) NOT NULL COMMENT '逻辑引用 model_platform.workspaces',
|
|
monitor_result_id CHAR(26) NOT NULL COMMENT '逻辑引用 ops_monitor_results',
|
|
evaluation_id CHAR(26) NOT NULL COMMENT '逻辑引用 ops_monitor_evaluations',
|
|
review_stage VARCHAR(24) NOT NULL
|
|
COMMENT 'model_initial/business_final',
|
|
review_status VARCHAR(24) NOT NULL DEFAULT 'pending'
|
|
COMMENT 'pending/handled/auto_closed',
|
|
decision_code VARCHAR(32) NULL COMMENT 'no_action/tune_or_rebuild',
|
|
handling_note VARCHAR(2000) NULL COMMENT '手工处理时必填,由服务层校验',
|
|
due_at DATETIME(3) NULL,
|
|
handled_by CHAR(26) NULL COMMENT '逻辑引用 model_platform.users',
|
|
handled_at DATETIME(3) NULL,
|
|
auto_closed_at DATETIME(3) NULL,
|
|
state_version INT NOT NULL DEFAULT 0,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)
|
|
ON UPDATE CURRENT_TIMESTAMP(3),
|
|
is_deleted TINYINT(1) NOT NULL DEFAULT 0,
|
|
deleted_at DATETIME(3) NULL,
|
|
PRIMARY KEY (review_id),
|
|
UNIQUE KEY uk_ops_reviews_result_stage (
|
|
monitor_result_id, review_stage
|
|
),
|
|
KEY fk_ops_reviews_evaluation (evaluation_id),
|
|
KEY fk_ops_reviews_handler (handled_by),
|
|
KEY idx_ops_reviews_pending (
|
|
workspace_id, review_status, review_stage, due_at
|
|
)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
COMMENT='模型团队初审与业务团队终审';
|
|
|
|
CREATE TABLE IF NOT EXISTS ops_outbox_events (
|
|
event_id CHAR(26) NOT NULL,
|
|
aggregate_type VARCHAR(64) NOT NULL,
|
|
aggregate_id VARCHAR(128) NOT NULL,
|
|
event_type VARCHAR(128) NOT NULL,
|
|
schema_version SMALLINT NOT NULL DEFAULT 1,
|
|
payload_json JSON NOT NULL,
|
|
event_status VARCHAR(16) NOT NULL DEFAULT 'pending'
|
|
COMMENT 'pending/published/failed',
|
|
available_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
retry_count INT NOT NULL DEFAULT 0,
|
|
trace_id VARCHAR(64) NULL,
|
|
idempotency_key VARCHAR(128) NULL,
|
|
published_at DATETIME(3) NULL,
|
|
last_error VARCHAR(2000) NULL,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
is_deleted TINYINT(1) NOT NULL DEFAULT 0,
|
|
deleted_at DATETIME(3) NULL,
|
|
PRIMARY KEY (event_id),
|
|
UNIQUE KEY uk_ops_outbox_idempotency (idempotency_key),
|
|
KEY idx_ops_outbox_pending (event_status, available_at, created_at),
|
|
KEY idx_ops_outbox_aggregate (aggregate_type, aggregate_id, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
COMMENT='运维库事务 Outbox;由运维异步执行器轮询';
|
|
|
|
CREATE TABLE IF NOT EXISTS ops_consumer_inbox (
|
|
consumer_name VARCHAR(128) NOT NULL,
|
|
event_id CHAR(26) NOT NULL,
|
|
process_status VARCHAR(16) NOT NULL DEFAULT 'processing'
|
|
COMMENT 'processing/succeeded/failed',
|
|
message_id VARCHAR(128) NULL,
|
|
processed_at DATETIME(3) NULL,
|
|
error_message VARCHAR(2000) NULL,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
is_deleted TINYINT(1) NOT NULL DEFAULT 0,
|
|
deleted_at DATETIME(3) NULL,
|
|
PRIMARY KEY (consumer_name, event_id),
|
|
KEY idx_ops_inbox_status (
|
|
consumer_name, process_status, created_at
|
|
)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
COMMENT='运维异步消费者幂等 Inbox';
|
|
|