From eebc5a14d807d1fbd497e2d427202b22c25fb615 Mon Sep 17 00:00:00 2001 From: stu2not Date: Wed, 27 May 2026 17:14:55 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=90=E5=88=B6=E5=BE=85=E6=94=B6=E5=90=AC?= =?UTF-8?q?=E7=95=99=E8=A8=80=E5=91=A8=E6=9C=9F=E6=8F=90=E9=86=92=E6=9D=A5?= =?UTF-8?q?=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- talkingq-url/services/scheduler.py | 7 ++---- .../tests/test_pending_voice_notice.py | 25 +++++++++++++++---- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/talkingq-url/services/scheduler.py b/talkingq-url/services/scheduler.py index 717a861..a618a65 100644 --- a/talkingq-url/services/scheduler.py +++ b/talkingq-url/services/scheduler.py @@ -1,7 +1,6 @@ from apscheduler.schedulers.asyncio import AsyncIOScheduler from apscheduler.triggers.interval import IntervalTrigger from banban.service.pending_voice_message import pending_voice_message_service -from services.offline_audio_cache import offline_audio_cache from utils.logger import session_logger as logger class TaskScheduler: @@ -35,11 +34,9 @@ class TaskScheduler: async def _execute_task(self): try: pending_devices = await pending_voice_message_service.list_devices_with_pending() - audio_cache = await offline_audio_cache.get_all_audio_cache() - fallback_devices = list(audio_cache.keys()) if audio_cache else [] - device_ids = list(dict.fromkeys([*pending_devices, *fallback_devices])) + device_ids = list(dict.fromkeys(pending_devices)) if not device_ids: - logger.warning("", "", "无离线音频缓存,跳过本次执行") + logger.warning("", "", "无待收听留言,跳过本次执行") return for device_id in device_ids: sent = await pending_voice_message_service.notify_device_pending_message( diff --git a/talkingq-url/tests/test_pending_voice_notice.py b/talkingq-url/tests/test_pending_voice_notice.py index fb71c03..57b08fa 100644 --- a/talkingq-url/tests/test_pending_voice_notice.py +++ b/talkingq-url/tests/test_pending_voice_notice.py @@ -87,13 +87,28 @@ async def test_scheduler_sends_pending_notice_without_websocket_check(monkeypatc calls.append(target_device_id) return True - class FakeOfflineAudioCache: - async def get_all_audio_cache(self): - return {} - monkeypatch.setattr("services.scheduler.pending_voice_message_service", FakePendingVoiceService()) - monkeypatch.setattr("services.scheduler.offline_audio_cache", FakeOfflineAudioCache()) await scheduler._execute_task() assert calls == ["TalkingQ_device001"] + + +@pytest.mark.asyncio +async def test_scheduler_skips_notice_when_no_pending_messages(monkeypatch): + scheduler = TaskScheduler() + calls = [] + + class FakePendingVoiceService: + async def list_devices_with_pending(self): + return [] + + async def notify_device_pending_message(self, *, target_device_id): + calls.append(target_device_id) + return True + + monkeypatch.setattr("services.scheduler.pending_voice_message_service", FakePendingVoiceService()) + + await scheduler._execute_task() + + assert calls == []