feat(cookie-gate): 调度器恢复重跑接线与控制台健康自检

调度器维护循环挂载 CookieGateRecoveryManager,登录态恢复后按原业务日期自动
重跑被阻断工作流并飞书确认;工作流级 required_accounts 声明接入目录解析;
采集器抛 CookieExpiredError 退出 75;控制台新增 /api/health 自检端点与进程内
看门狗,配合 deploy/watchdog 双层保活;安装脚本同步。
This commit is contained in:
wangyunlong committed 2026-10-09 13:45:29 +08:00
1 parent 78ea4641ce
commit 130f06b320
13 files changed
+318 -77

No files matched your search

+4 -6
View File
@@ -18,8 +18,8 @@ def test_catalog_maps_39_project_scheduled_tasks() -> None:
assert len(scheduled) == 39
assert len({item.source_task_name for item in scheduled}) == 39
assert Counter(item.module for item in scheduled) == {
"content_marketing": 10,
"product_commerce": 13,
"content_marketing": 9,
"product_commerce": 14,
"shop_intelligence": 12,
"supply_chain": 4,
}
@@ -80,7 +80,6 @@ def test_jd_video_upload_is_an_idempotent_scheduled_workflow() -> None:
assert step.args == (
"--anchor-record-id",
"recvrXTRWWFXeJ",
"--manual-login",
"--execute",
)
assert step.replay_policy == "idempotent"
@@ -192,7 +191,7 @@ def test_every_scheduled_workflow_has_one_valid_asia_shanghai_schedule() -> None
assert schedule.workflow_id == workflow.workflow_id
assert schedule.kind in {"daily", "weekly", "monthly", "interval_days"}
assert schedule.at.count(":") == 1
assert sum(schedule.enabled for schedule in catalog.schedules) == 27
assert sum(schedule.enabled for schedule in catalog.schedules) == 28
customer_service = catalog.schedule_for("shop.jd_customer_service.daily")
assert customer_service.at == "03:00"
assert customer_service.enabled is True
@@ -265,8 +264,7 @@ def test_scheduled_workflows_use_python_entries_and_content_tasks_are_graphs() -
"data/tools/sync_self_video_metrics.py"
)
assert catalog.schedule_for(self_operated.workflow_id).effective_times == (
"01:00",
"05:00",
"06:00",
)
backfill = next(