function baseLayout(title, body) { return `
Любимый Креатив — магазин handmade изделий
Ваш заказ #${orderId.slice(0, 8)} успешно создан.
Товаров: ${itemsCount} | Сумма: ${total} ₽
${nextAction}
` return { subject: 'Заказ создан', html: baseLayout('Заказ создан', body) } } export function renderOrderStatusChangedEmail({ orderId, oldStatus, newStatus }) { const statusLabels = { DRAFT: 'Черновик', PENDING_PAYMENT: 'Ожидает оплаты', PAID: 'Оплачен', IN_PROGRESS: 'В работе', READY_FOR_PICKUP: 'Готов к выдаче', SHIPPED: 'Отправлен', DONE: 'Выполнен', CANCELLED: 'Отменён', } const oldLabel = statusLabels[oldStatus] || oldStatus const newLabel = statusLabels[newStatus] || newStatus const body = `Статус заказа #${orderId.slice(0, 8)} изменён.
${oldLabel} → ${newLabel}
` return { subject: `Статус заказа изменён — ${newLabel}`, html: baseLayout('Статус заказа изменён', body), } } export function renderOrderMessageEmail({ orderId, preview }) { const truncated = preview.length > 200 ? preview.slice(0, 197) + '...' : preview const body = `Новое сообщение к заказу #${orderId.slice(0, 8)}:
Ответьте в личном кабинете.
` return { subject: 'Новое сообщение к заказу', html: baseLayout('Новое сообщение', body), } } export function renderPaymentStatusChangedEmail({ orderId, paymentStatus }) { const statusLabels = { pending: 'Ожидает', confirmed: 'Подтверждён', rejected: 'Отклонён', } const label = statusLabels[paymentStatus] || paymentStatus const body = `Статус оплаты заказа #${orderId.slice(0, 8)}: ${label}.
` return { subject: `Оплата заказа — ${label}`, html: baseLayout('Оплата заказа', body), } } export function renderAdminOrderCreatedEmail({ orderId, userEmail, totalCents, itemsCount, deliveryType }) { const total = (totalCents / 100).toLocaleString('ru-RU') const note = deliveryType === 'delivery' ? '⚠️ Скорректируйте стоимость доставки в админ-панели.
' : '' const body = `Новый заказ #${orderId.slice(0, 8)} от ${userEmail}.
Товаров: ${itemsCount} | Сумма: ${total} ₽
${note} ` return { subject: 'Новый заказ', html: baseLayout('Новый заказ', body) } } export function renderAdminNewReviewEmail({ rating, text, productTitle, userName }) { const stars = '★'.repeat(rating) + '☆'.repeat(5 - rating) const body = `Новый отзыв ${stars} на товар ${productTitle} от ${userName}.
${text ? `Проверьте отзыв в админ-панели.
` return { subject: 'Новый отзыв', html: baseLayout('Новый отзыв', body) } } export function renderAuthCodeEmail({ code }) { const body = `Ваш код входа: ${code}
Если это были не вы — просто проигнорируйте письмо.
` return { subject: 'Код входа', html: baseLayout('Код входа', body) } } export function renderDeliveryFeeAdjustedEmail({ orderId, totalCents }) { const total = (totalCents / 100).toLocaleString('ru-RU') const body = `Стоимость доставки заказа #${orderId.slice(0, 8)} скорректирована.
Новая сумма: ${total} ₽
Ожидает оплаты. Проверьте статус заказа в личном кабинете.
` return { subject: 'Стоимость доставки скорректирована', html: baseLayout('Стоимость доставки скорректирована', body), } }