1
0
forked from erp-dev/erp
Files
erpnew/mission/notifications.py
2026-07-01 11:51:13 +08:00

37 lines
1.3 KiB
Python

import logging
from django.conf import settings
logger = logging.getLogger(__name__)
def enqueue_mission_created_speech(*, mission) -> None:
if not getattr(settings, "SPEECH_ENABLED", True):
return
if not getattr(settings, "MISSION_SPEECH_NOTIFY_ENABLED", True):
return
category = getattr(mission, "category", None)
if not getattr(category, "speech_enabled", False):
return
text = _build_mission_created_speech_text(mission=mission)
try:
from mission.tasks import notify_mission_speech
notify_mission_speech.delay(text=text)
except Exception:
logger.exception("[mission.notifications] 投递任务语音播报任务失败(已忽略)")
def _build_mission_created_speech_text(*, mission) -> str:
category_name = getattr(getattr(mission, "category", None), "name", "任务") or "任务"
creator_name = getattr(getattr(mission, "creator", None), "name", "") or ""
prefix = f"{creator_name}创建了" if creator_name else "创建了"
description = (getattr(mission, "description", "") or "").strip()
if len(description) > 60:
description = f"{description[:60]}..."
if description:
return f"{prefix}{category_name}任务,{description}"
return f"{prefix}{category_name}任务"