feat: implement brand asset cleanup event handling and reconciliation logic
Backend CI / Backend (push) Failing after 6m54s
Backend CI / Backend (push) Failing after 6m54s
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
DELETE FROM ops.scheduler_job_triggers
|
||||
WHERE job_key = 'brand_asset_cleanup_reconcile';
|
||||
|
||||
DELETE FROM ops.scheduler_jobs
|
||||
WHERE job_key = 'brand_asset_cleanup_reconcile';
|
||||
|
||||
UPDATE ops.scheduler_jobs
|
||||
SET schedule_type = 'interval',
|
||||
interval_seconds = 60,
|
||||
config = config - 'suppress_empty_success_runs' - 'empty_success_metric_keys',
|
||||
updated_at = NOW()
|
||||
WHERE job_key = 'brand_asset_cleanup';
|
||||
@@ -0,0 +1,35 @@
|
||||
UPDATE ops.scheduler_jobs
|
||||
SET schedule_type = 'manual',
|
||||
interval_seconds = 3600,
|
||||
config = config
|
||||
|| jsonb_build_object(
|
||||
'batch_size', 20,
|
||||
'statement_timeout', '8s',
|
||||
'dry_run', false,
|
||||
'suppress_empty_success_runs', true,
|
||||
'empty_success_metric_keys', jsonb_build_array('event_count', 'candidate_count')
|
||||
),
|
||||
updated_at = NOW()
|
||||
WHERE job_key = 'brand_asset_cleanup';
|
||||
|
||||
DELETE FROM ops.scheduler_job_triggers
|
||||
WHERE job_key = 'brand_asset_cleanup'
|
||||
AND reason IN ('brand deleted', 'brand cleanup continuation', 'brand cleanup reconcile');
|
||||
|
||||
INSERT INTO ops.scheduler_jobs
|
||||
(job_key, display_name, category, description, enabled, schedule_type, interval_seconds, timezone, timeout_seconds, batch_size, config)
|
||||
VALUES
|
||||
('brand_asset_cleanup_reconcile', '品牌资产清理兜底巡检', 'tenant', '低频巡检仍处于 deleting 的品牌并补发清理事件;正常路径由业务事件 worker 通过 LISTEN/NOTIFY 驱动。', true, 'interval', 3600, 'Asia/Shanghai', 60, 100,
|
||||
'{"batch_size":100,"statement_timeout":"8s","dry_run":false,"suppress_empty_success_runs":true,"empty_success_metric_keys":["candidate_count","runnable_event_count","enqueued_event_count"]}'::jsonb)
|
||||
ON CONFLICT (job_key) DO UPDATE
|
||||
SET display_name = EXCLUDED.display_name,
|
||||
category = EXCLUDED.category,
|
||||
description = EXCLUDED.description,
|
||||
enabled = EXCLUDED.enabled,
|
||||
schedule_type = EXCLUDED.schedule_type,
|
||||
interval_seconds = EXCLUDED.interval_seconds,
|
||||
timezone = EXCLUDED.timezone,
|
||||
timeout_seconds = EXCLUDED.timeout_seconds,
|
||||
batch_size = EXCLUDED.batch_size,
|
||||
config = ops.scheduler_jobs.config || EXCLUDED.config,
|
||||
updated_at = NOW();
|
||||
Reference in New Issue
Block a user