/** * Wrapper HTML para templates de email do SGSE * Aplica estilo governamental profissional com logo e assinatura padronizada */ /** * Obtém a URL base do sistema para uso em links de email */ function getBaseUrl(): string { // Em produção, usar variável de ambiente const url = process.env.FRONTEND_URL || 'http://localhost:5173'; // Garantir que tenha protocolo if (!url.match(/^https?:\/\//i)) { return `http://${url}`; } return url; } /** * Gera o HTML do header com logo do Governo de PE */ function generateHeader(): string { const baseUrl = getBaseUrl(); return `
Governo de Pernambuco
`; } /** * Gera o HTML do footer com assinatura SGSE */ function generateFooter(): string { const baseUrl = getBaseUrl(); const currentYear = new Date().getFullYear(); return `

SGSE - Sistema de Gerenciamento de Secretaria

Secretaria de Esportes do Estado de Pernambuco

Este é um email automático do sistema. Por favor, não responda diretamente a este email.


© ${currentYear} Secretaria de Esportes - Governo de Pernambuco. Todos os direitos reservados.

Acessar Sistema | Central de Notificações

`; } /** * Envolve o conteúdo HTML do email com template profissional governamental * @param conteudoHTML - Conteúdo HTML do corpo do email * @param titulo - Título do email (usado no meta) * @returns HTML completo do email pronto para envio */ export function wrapEmailHTML(conteudoHTML: string, titulo?: string): string { // Se o conteúdo já estiver dentro de um wrapper completo, retornar como está if (conteudoHTML.includes('') || conteudoHTML.includes('${conteudoProcessado}

`; } const header = generateHeader(); const footer = generateFooter(); const emailTitle = titulo || 'Notificação do SGSE'; return ` ${emailTitle}
${header}
${conteudoProcessado}
${footer}

Se você não solicitou este email, pode ignorá-lo com segurança.

`.trim(); } /** * Converte texto plano em HTML básico * @param texto - Texto plano * @returns HTML formatado */ export function textToHTML(texto: string): string { return texto .split('\n') .map((linha) => { const linhaTrim = linha.trim(); if (!linhaTrim) return '
'; // Detectar links const linkRegex = /(https?:\/\/[^\s]+)/g; const linhaComLinks = linhaTrim.replace( linkRegex, '$1' ); return `

${linhaComLinks}

`; }) .join(''); }