Skip to content

Consolidação de templates de e-mail, faturamento com PDFs e integração Stripe (checkout) com melhorias de autenticação, logs e frontend de checkout#98

Merged
ualers2 merged 1 commit into
mainfrom
minha-feature
Sep 30, 2025
Merged

Consolidação de templates de e-mail, faturamento com PDFs e integração Stripe (checkout) com melhorias de autenticação, logs e frontend de checkout#98
ualers2 merged 1 commit into
mainfrom
minha-feature

Conversation

@ualers2
Copy link
Copy Markdown
Owner

@ualers2 ualers2 commented Sep 30, 2025

Descrição

Resumo das mudanças: introdução de templates de email HTML para notificações diversas (falha/sucesso de projeto, onboarding, upgrade de plano, entre outros), utilitários backend para envio de emails, busca de usuário por email e geração de PDFs de faturas. Integração completa com Stripe (checkout, webhooks e notificações), melhorias de autenticação, logs e ajustes no frontend para suportar o fluxo de checkout. Este PR consolida mudanças relacionadas para melhorar a comunicação com usuários, automatizar notificações e facilitar faturamento e suporte, com templates centralizados e fluxo de cobrança automatizado.

Propósito geral: padronizar comunicações via email, automatizar eventos (criação de conta, upgrade de plano, falhas) e apoiar faturamento, auditoria e suporte, com uma base backend robusta (templates, busca de usuário, geração de PDFs) e integração completa com Stripe, além de melhorias significativas no frontend e na infraestrutura para checkout e faturamento.

Mudanças Principais

  • Backend

    • Templates de email HTML: Back-End/EmailTemplates/*.html incluindo FalhaDeProjeto.html, SucessoDeProjeto.html, email_account_success.html, email_plan_upgraded.html, email_tiktok_fail.html, email_youtube_fail.html, server_limit.html, teste.html. Templates com placeholders (ex.: {{erro}}, {{title_origin}}, {{username}}) para renderização dinâmica.
    • Utilitário de busca de usuário por email: Back-End/Modules/Geters/user_by_email.py com get_user_by_email(email) que retorna o usuário ou None.
    • Gerador de PDF de fatura: Back-End/Modules/Resolvers/generate_invoice_pdf.py que produz invoice_{id}.pdf com informações da fatura usando ReportLab (A4).
    • Envio de emails com templates e logging: Back-End/Modules/Resolvers/send_email.py com fluxo SMTP (TLS opcional), renderização de templates HTML com placeholders, configuração via variáveis de ambiente e logs de envio.
    • Integração com Stripe e faturamento: endpoints de checkout, webhook e proxy de checkout; fluxo de billing com gestão de planos, geração de invoices e atualização de usuários conforme o status do pagamento; geração de PDFs de faturas e armazenamento correspondente.
    • Autenticação e observabilidade: melhorias no fluxo de autenticação (fallback com email/senha), tratamento de erros e logs; criação de diretório Logs e logs em api.log/console para rastreabilidade.
    • Configurações e infraestrutura: renomeação de diretórios, variáveis de ambiente para Stripe/SMTP, inclusão de ADMIN_API_KEY e suporte a proxies de checkout; Adição de Back-End/TestDiscovery/create_new_user.py para criação de contas via API.
  • Front-end

    • Checkout flow e páginas associadas: novos componentes/páginas para suporte ao fluxo de signup/checkout (SignupCheckout.tsx, CheckoutSuccess.tsx, CheckoutError.tsx); rotas de checkout (/checkout, /checkout/sucess, /checkout/cancel) e lógica de pricing com CTA dinâmico.
    • Integração com faturamento: melhoria no fluxo de download de faturas em Invoices.tsx, incluindo redirecionamento para pdfUrl quando disponível.
    • Autenticação e UX: refatoração do Login.tsx para simplificar o fluxo de login, remoção do fluxo de registro no formulário principal; NotFound.tsx com redirecionamento automático para a home para melhorar a experiência do usuário.
    • Ajustes de conteúdo UI: atualização de textos e navegação lateral (app-sidebar) para melhor identificação; pricing-section.tsx com CTA que direciona planos pagos para checkout com parâmetros no URL.
    • Infra e dependências: inclusão de @stripe/stripe-js, axios, framer-motion e react-icons; ajustes em package.json/package-lock.json para suportar as novas dependências.
  • Infraestrutura/Dev

    • build e deploy: build.py atualizado para rodar pipeline-api; docker-compose.yml ajustando porta da API para 5910 e adicionando volumes para Invoices; inclusão de nova pasta invoices no container e persistência de faturas.
    • Logs e observabilidade: estrutura de logs centralizada para facilitar monitoramento durante pagamentos e autenticação.

Por que esta mudança?

  • Habilitar cobrança recorrente e upgrades de planos via Stripe, automatizar onboarding e renovação, melhorar a confiança com usuários via notificações padronizadas e ter faturamento em PDF automatizado.
  • Aumentar confiabilidade e segurança da autenticação com fallback/erros mais claros e logs ricos para auditoria.
  • Padronizar conteúdo de templates para agilidade de revisão de conteúdo, facilitar suporte e auditoria.
  • Alinhar frontend com backend para suportar o fluxo de checkout e notificações por e-mail, proporcionando experiência de usuário mais fluida e previsível.

Como testar

  1. Teste de templates e envio de email
  • Verifique os arquivos em Back-End/EmailTemplates e confirme que contêm placeholders como {{erro}}, {{title_origin}}, {{username}} e estão prontos para renderização.
  • Teste get_user_by_email('<um_email_existente>') para validar retorno ou None.
  • Gere uma fatura de exemplo com invoice_id, date, user_id, plan_name, lines e amount; rode generate_invoice_pdf(invoice) e confirme invoice_.pdf no diretório de saída.
  • Configure SMTP (host, porta, credentials) e execute envio de e-mails com diferentes email_type (ex.: 'Failed Project', 'Success Project', 'Success Upgrated Account', 'Server Limitation') e valide que HTML é renderizado com placeholders substituídos e assunto definido.
  1. Fluxo de faturamento e PDFs
  • Use Stripe para criar sessão de checkout via /api/billing/checkout com payload contendo email, senha, plano e billing. Siga para o fluxo no frontend (SignupCheckout/CheckoutSuccess). Complete pagamento com cartão de teste e confirme webhook acionado (/webhook).
  • Verifique que o usuário é atualizado conforme o status do pagamento, que a invoice é criada e que o PDF é gerado e disponível.
  • Valide que o envio de emails de criação de conta, upgrade de plano e confirmação de pagamento é acionado com os templates corretos.
  1. Integração Stripe e webhooks
  • Utilize Stripe CLI para simular checkout.session.completed e verifique atualização de usuário, criação de invoice e envio de confirmação.
  • Teste cenários de atraso/recorrência para validação de atualização de plano e notificações.
  1. Front-end e UX de checkout
  • Acesse a página de pricing e selecione um plano pago; confirme que o CTA redireciona para /checkout com plan/price/billing nos parâmetros.
  • Acesse /checkout?plan=Startup&billing=monthly&price=8 e valide o formulário SignupCheckout (email/senha) e o redirecionamento para Stripe Checkout com sessionId.
  • Tente cenários de erro (senha curta, email inválido) e confirme mensagens de erro.
  • Verifique as páginas de sucesso (/checkout/sucess) e erro (/checkout/cancel) e o redirecionamento para o dashboard ou voltar ao checkout.
  • Teste a navegação 404 (/rota-inexistente) para confirmar redirecionamento para home.
  1. Notas de faturamento e downloads
  • Em cenários com faturas disponíveis, teste o botão de download em Invoices; se json contiver pdfUrl, abra a URL, caso contrário baixe o blob localmente e exiba mensagens adequadas.
  1. Autenticação
  • Teste login com token via X-API-TOKEN e fallback para email/senha; verifique logs de sucesso/erro.
  1. Infraestrutura
  • Assegure que a API esteja disponível na porta 5910 (conforme docker-compose); confirme a persistência de invoices via o volume Invoices; valide que o script de build executa pipeline-api como esperado.

Observações Adicionais (Opcional)

  • Pode haver pequenas inconsistências de grafia em alguns nomes de templates (ex.: Sucess/Sucess Upgrated); esse ponto pode ser ajustado numa iteração futura.
  • Dependências novas: Stripe, axios, framer-motion e react-icons; garanta capacidade de build/execução no ambiente de produção.
  • Se houver necessidade de migrar dados de invoices existentes, planejar migração correspondente.
  • Próximos passos sugeridos: introduzir motor de renderização de templates (ex.: Jinja2) para placeholders de forma uniforme e adicionar testes automatizados para validação dos templates.

@ualers2 ualers2 changed the title Título do PR Consolidação de templates de e-mail, faturamento com PDFs e integração Stripe (checkout) com melhorias de autenticação, logs e frontend de checkout Sep 30, 2025
@ualers2 ualers2 merged commit a696f29 into main Sep 30, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant