Skip to content

Upgrade de plano pelo sistema#107

Draft
devbatista wants to merge 1 commit intomainfrom
feature/subscription-plan-upgrade
Draft

Upgrade de plano pelo sistema#107
devbatista wants to merge 1 commit intomainfrom
feature/subscription-plan-upgrade

Conversation

@devbatista
Copy link
Copy Markdown
Owner

Contexto

Este PR (draft) implementa a base do fluxo de upgrade de assinatura na área Configurações > Assinatura, com foco em regras de elegibilidade de plano e cobrança pró-rata vinculada à confirmação de pagamento.

O que foi implementado

  • Inclusão de ação de upgrade em Configurações.
  • Regras de upgrade entre planos:
    1. Básico -> Profissional ou Enterprise
    2. Profissional -> Enterprise
    3. Enterprise -> sem upgrade
  • Cálculo de pró-rata do ciclo atual.
  • Geração de cobrança pró-rata para PIX e boleto.
  • Registro de upgrade pendente no raw_payload da assinatura (plan_upgrade).
  • Aplicação do novo plano apenas após confirmação de pagamento (approved) via webhook/reconciliação.
  • Bloqueio de múltiplas solicitações simultâneas de upgrade pendente.
  • Ajustes de UI para exibir seção de upgrade e estado de pendência.

Regra de negócio atual

  • O plano não é alterado no momento da solicitação.
  • O plano é alterado somente quando o pagamento pró-rata for confirmado.
  • Enquanto o pagamento estiver pendente, a assinatura/plano atual continuam vigentes.

Escopo técnico

  • Controller:
    • App::ConfigurationsController#upgrade_plan
  • Model:
    • Subscription (regras de upgrade, cálculo de pró-rata, persistência e aplicação do upgrade pendente)
  • Integração pagamento:
    • reaproveitamento de Cmd::MercadoPago::CreatePixPayment e CreateBoletoPayment com amount_override
  • Processamento assíncrono:
    • MercadoPago::WebhookProcessor
    • Cmd::Subscriptions::ReconcileSubscription
  • View:
    • parcial de assinatura em configurações

Limitações conhecidas (neste draft)

  • Fluxo de upgrade com cartão de crédito ainda não implementado.
  • Sem cobertura de specs neste momento (pendência registrada no checklist de testes).
  • Mensageria/UI de estados intermediários pode ser refinada (ex.: reemitir cobrança, expiração de cobrança pendente).

Riscos / pontos de atenção

  • Garantir idempotência para eventos de webhook duplicados.
  • Garantir que eventos pending/cancelled de cobrança de upgrade não derrubem assinatura ativa indevidamente.
  • Alinhar política final de upgrade com comportamento oficial de assinaturas/preapproval do Mercado Pago.

Próximos passos propostos

  1. Definir arquitetura final para cartão de crédito no upgrade.
  2. Decidir sincronização com preapproval do Mercado Pago no momento de aplicação do upgrade.
  3. Completar suite de testes do fluxo de upgrade (model + controller + webhook/reconciliação).

@devbatista devbatista changed the title iniciando a criação do upgrade de plano pelo sistema Upgrade de plano pelo sistema Apr 1, 2026
@devbatista devbatista self-assigned this Apr 1, 2026
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