Refactor(application): Extract default email as magic values to avoid hardcoding

This commit is contained in:
YuehuCao 2025-08-11 15:30:40 +08:00
parent 11c1cc811d
commit 1d6f41c3b5
2 changed files with 15 additions and 5 deletions

View File

@ -6,7 +6,7 @@ from common.exception.exceptions import InvalidDataError
from backend.business.tenant_notification_manager import TenantNotificationManager from backend.business.tenant_notification_manager import TenantNotificationManager
from backend.application.template_message_hub import TemplateMessageHub from backend.application.template_message_hub import TemplateMessageHub
from backend.application.email_sender_hub import EmailSenderHub from backend.application.email_sender_hub import EmailSenderHub
from backend.models.constants import NotificationConstants
class TenantNotificationHub: class TenantNotificationHub:
def __init__(self): def __init__(self):
@ -14,6 +14,7 @@ class TenantNotificationHub:
self.template_message_hub = TemplateMessageHub() self.template_message_hub = TemplateMessageHub()
self.email_sender_hub = EmailSenderHub() self.email_sender_hub = EmailSenderHub()
self.module_logger = ModuleLogger(sender_id="TenantNotificationHub") self.module_logger = ModuleLogger(sender_id="TenantNotificationHub")
self.notification_constants = NotificationConstants()
async def send_tenant_email( async def send_tenant_email(
self, self,
@ -41,23 +42,23 @@ class TenantNotificationHub:
) )
# 3. get tenant email senders # 3. get tenant email senders
default_sender_email = self.notification_constants.DEFAULT_EMAIL_SENDER
if sender_emails is None: if sender_emails is None:
# TODO: use default email sender directly
tenant_email_senders = await self.email_sender_hub.get_email_senders(tenant_id) tenant_email_senders = await self.email_sender_hub.get_email_senders(tenant_id)
if not tenant_email_senders: if not tenant_email_senders:
sender_emails = ["support@freeleaps.com"] sender_emails = [default_sender_email]
await self.module_logger.log_info( await self.module_logger.log_info(
"Using default email sender for tenant", "Using default email sender for tenant",
properties={ properties={
"tenant_id": tenant_id, "tenant_id": tenant_id,
"default_sender": "support@freeleaps.com" "default_sender": default_sender_email
} }
) )
else: else:
sender_emails = tenant_email_senders sender_emails = tenant_email_senders
# 4. check if sender_emails are valid # 4. check if sender_emails are valid
if sender_emails != ["support@freeleaps.com"]: if sender_emails != [default_sender_email]:
tenant_senders = await self.email_sender_hub.get_email_senders(tenant_id) tenant_senders = await self.email_sender_hub.get_email_senders(tenant_id)
invalid_senders = [email for email in sender_emails if email not in tenant_senders] invalid_senders = [email for email in sender_emails if email not in tenant_senders]
if invalid_senders: if invalid_senders:

View File

@ -125,3 +125,12 @@ SystemNotifications = {
}, },
}, },
} }
class NotificationConstants:
DEFAULT_EMAIL_SENDER: str = "support@freeleaps.com"
class Settings:
name = "notification_constants"
indexes = [
"DEFAULT_EMAIL_SENDER"
]