refactor: migrate legacy cron payloads to bound sessions

This commit is contained in:
chengyongru
2026-06-12 16:51:20 +08:00
parent af8192dc38
commit 8335554894
6 changed files with 210 additions and 431 deletions
+15 -5
View File
@@ -186,11 +186,13 @@ async def test_session_automations_route_filters_by_webui_session(
schedule=hourly,
message=message,
session_key=f"websocket:{to}",
origin_channel="websocket",
origin_chat_id=to,
)
cron.add_job(
name="Legacy same target",
schedule=hourly,
message="Legacy job should not be treated as bound",
message="Legacy job should be migrated",
deliver=True,
channel="websocket",
to="abc",
@@ -228,7 +230,7 @@ async def test_session_automations_route_filters_by_webui_session(
assert resp.status_code == 200
body = resp.json()
assert [job["name"] for job in body["jobs"]] == ["Morning check"]
assert [job["name"] for job in body["jobs"]] == ["Morning check", "Legacy same target"]
job = body["jobs"][0]
assert job["schedule"]["kind"] == "every"
assert job["schedule"]["every_ms"] == 3_600_000
@@ -249,12 +251,16 @@ async def test_session_automations_route_ignores_unified_owner(
schedule=hourly,
message="Check the shared session",
session_key=UNIFIED_SESSION_KEY,
origin_channel="websocket",
origin_chat_id="abc",
)
cron.add_job(
name="Visible chat job",
schedule=hourly,
message="Show for this chat",
session_key="websocket:abc",
origin_channel="websocket",
origin_chat_id="abc",
)
channel = _ch(
bus,
@@ -728,6 +734,8 @@ async def test_session_delete_blocks_when_bound_automation_exists(
schedule=CronSchedule(kind="every", every_ms=86_400_000),
message="Check the repo",
session_key="websocket:doomed",
origin_channel="websocket",
origin_chat_id="doomed",
)
channel = _ch(bus, session_manager=sm, cron_service=cron, port=29915)
server_task = asyncio.create_task(channel.start())
@@ -767,6 +775,8 @@ async def test_session_delete_can_cascade_bound_automations(
schedule=CronSchedule(kind="every", every_ms=86_400_000),
message="Check the repo",
session_key="websocket:doomed",
origin_channel="websocket",
origin_chat_id="doomed",
)
cron.add_job(
name="Legacy same target",
@@ -793,9 +803,7 @@ async def test_session_delete_can_cascade_bound_automations(
assert resp.json()["deleted"] is True
assert not path.exists()
assert cron.list_bound_cron_jobs_for_session("websocket:doomed") == []
assert [job.name for job in cron.list_jobs(include_disabled=True)] == [
"Legacy same target"
]
assert cron.list_jobs(include_disabled=True) == []
finally:
await channel.stop()
await server_task
@@ -813,6 +821,8 @@ async def test_session_delete_blocks_origin_automation_when_unified_enabled(
schedule=CronSchedule(kind="every", every_ms=86_400_000),
message="Check this chat",
session_key="websocket:doomed",
origin_channel="websocket",
origin_chat_id="doomed",
)
channel = _ch(
bus,