feat(comms): logistics notification types, templates, and email settings
- Add 8 constants to NotificationTypes (FINALIST_CONFIRMED/DECLINED/EXPIRED/ WAITLIST_PROMOTED/REMINDER/WITHDRAWN, TRAVEL_CONFIRMED, VISA_STATUS_UPDATE) with matching icons and priorities in NotificationIcons/NotificationPriorities - Add 4 branded email templates: getFinalistReminderTemplate, getFinalistWithdrawnTemplate, getTravelConfirmedTemplate, getVisaStatusTemplate — registered in NOTIFICATION_EMAIL_TEMPLATES (admin-alert types use generic fallback) - Add 8 logistics seed rows to seed-notification-settings.ts; upserted to dev DB (idempotent) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -214,6 +214,64 @@ const NOTIFICATION_EMAIL_SETTINGS = [
|
||||
sendEmail: true,
|
||||
},
|
||||
|
||||
// Logistics notifications
|
||||
{
|
||||
notificationType: 'FINALIST_CONFIRMED',
|
||||
category: 'logistics',
|
||||
label: 'Finalist Confirmed',
|
||||
description: 'Admin alert when a team confirms their grand-finale attendance',
|
||||
sendEmail: true,
|
||||
},
|
||||
{
|
||||
notificationType: 'FINALIST_DECLINED',
|
||||
category: 'logistics',
|
||||
label: 'Finalist Declined',
|
||||
description: 'Admin alert when a team declines or an admin declines their finalist slot',
|
||||
sendEmail: true,
|
||||
},
|
||||
{
|
||||
notificationType: 'FINALIST_EXPIRED',
|
||||
category: 'logistics',
|
||||
label: 'Finalist Confirmation Expired',
|
||||
description: 'Admin alert when a pending confirmation passes its deadline without a response',
|
||||
sendEmail: true,
|
||||
},
|
||||
{
|
||||
notificationType: 'FINALIST_WAITLIST_PROMOTED',
|
||||
category: 'logistics',
|
||||
label: 'Waitlist Promoted',
|
||||
description: 'Admin alert when a waitlisted team is promoted to a confirmed finalist slot',
|
||||
sendEmail: true,
|
||||
},
|
||||
{
|
||||
notificationType: 'FINALIST_REMINDER',
|
||||
category: 'logistics',
|
||||
label: 'Confirmation Reminder',
|
||||
description: 'Reminder email to the team lead when the confirmation deadline is approaching',
|
||||
sendEmail: true,
|
||||
},
|
||||
{
|
||||
notificationType: 'FINALIST_WITHDRAWN',
|
||||
category: 'logistics',
|
||||
label: 'Finalist Slot Withdrawn',
|
||||
description: 'Notification to the team when their confirmed grand-finale slot is withdrawn by an admin',
|
||||
sendEmail: true,
|
||||
},
|
||||
{
|
||||
notificationType: 'TRAVEL_CONFIRMED',
|
||||
category: 'logistics',
|
||||
label: 'Travel Confirmed',
|
||||
description: 'Email to the attendee when their flight and travel details are confirmed',
|
||||
sendEmail: true,
|
||||
},
|
||||
{
|
||||
notificationType: 'VISA_STATUS_UPDATE',
|
||||
category: 'logistics',
|
||||
label: 'Visa Status Update',
|
||||
description: 'Email to the attendee when their visa application status changes',
|
||||
sendEmail: true,
|
||||
},
|
||||
|
||||
// Admin notifications (in-app only by default)
|
||||
{
|
||||
notificationType: 'FILTERING_COMPLETE',
|
||||
|
||||
Reference in New Issue
Block a user