fix(alerts): kpi_alerts 去重键改生成侧语义键 dedupe_key(A2)— 文案改动不再重复落库
ci/woodpecker/push/main Pipeline was successful
ci/woodpecker/push/main Pipeline was successful
- 列 dedupe_key VARCHAR(160) NULL + 唯一索引 (entity_id,kpi_id,alert_type,dedupe_key) - write_alerts 三级判重:dedupe_key 命中 / 历史 NULL 行反解兼容 / 无命中插入 - 并发兜底:savepoint 捕获 IntegrityError 计跳过 - dry-run would_insert 改用 count_would_insert(修复 len(hits) 虚高) - DDL 幂等执行器 scripts/ddl_kpi_alerts_dedupe.py(check/apply/rollback) - tests/test_dedupe_key.py 7 passed(T1-T7b);alert/overdue 回归 173 passed
This commit is contained in:
@@ -1136,7 +1136,8 @@ def run_ar_overdue_check(
|
||||
return payload
|
||||
|
||||
if dry_run:
|
||||
payload.update({"would_insert": 0 if blockers else len(hits), "write_blockers": blockers})
|
||||
payload.update({"would_insert": 0 if blockers else ar_overdue_alert.count_would_insert(
|
||||
db, entity_id, resolved_kpi_id, result), "write_blockers": blockers})
|
||||
return payload
|
||||
|
||||
if blockers:
|
||||
@@ -1147,6 +1148,6 @@ def run_ar_overdue_check(
|
||||
"hit": len(hits), **written},
|
||||
entity_id=entity_id)
|
||||
db.commit()
|
||||
payload.update({"would_insert": len(hits), "write_blockers": [], **written,
|
||||
payload.update({"would_insert": written["inserted"], "write_blockers": [], **written,
|
||||
"generated": written["inserted"]})
|
||||
return payload
|
||||
|
||||
Reference in New Issue
Block a user