Operações no console e rotinas agendadas
TLDR: runbook das operações manuais do checkout-api — criar admins, unificar clientes, restaurar pagamento apagado — e o que os cronjobs fazem sozinhos.
Pré-requisitos
- Acesso ao console da aplicação (
make console.stagingoumake console.production, conforme o ambiente) - Permissão de System Manager para as operações que passam pelo ActiveAdmin — ver ../reference/admin/access_permissions.md
Todas as operações abaixo alteram dados de produção. Confirme o ambiente antes de executar.
Passos
Criar um usuário admin
```ruby uu = User.new( admin: true, email: ‘pessoa@example.com’, password: ‘senha-forte’, password_confirmation: ‘senha-forte’, roles: ‘customer_support’ )
uu.valid? uu.save ```
Os valores válidos de roles e o que cada um enxerga estão em ../reference/admin/access_permissions.md.
Unificar dois clientes (merge total)
O primeiro parâmetro é o cadastro errado, o segundo é o correto:
ruby
IbftMergeCustomersJob.set(wait: 1.seconds).perform_later(39435, 39407)
Para mover apenas algumas organizações entre dois cadastros, sem unificar nem desativar ninguém, use a transferência por organização no ActiveAdmin — ver ../specs/20260407150300_organization_transfer.md.
Restaurar um pagamento apagado
Às vezes pagamentos são apagados e fica difícil rastrear. Dá para restaurar a partir dos logs do Asaas, em https://www.asaas.com/customerConfigIntegrations/logs?category=PAYMENTS&status=200:
ruby
restore = PaymentRestoreService.new(req_json: '{}', resp_json: '{}', checkout_id: 75)
restore.process
O checkout_id é parâmetro obrigatório: não é possível inferi-lo a partir do log sem trabalho demais.
Rotinas agendadas
| Rotina | Frequência | O que faz |
|---|---|---|
rake apolo:sync_classrooms |
A cada 10 minutos | Sincroniza as turmas do Apolo |
rake asaas:remove_pending_non_paid_payments |
A cada 10 minutos | Cancela pagamentos criados há 7 dias e não pagos |
rake asaas:remove_overdue_payments |
Parado desde terça, 13 de junho, 15h | Removia pagamentos vencidos |
Auto-cancelamento de pagamentos não pagos
O rake asaas:remove_pending_non_paid_payments cancela todos os pagamentos criados há 7 dias que não foram pagos. O script também remove as parcelas no gateway, para evitar notificações ao usuário.
O modelo Payment tem a flag auto_cancel_non_paid_period: quando ela é false, o pagamento escapa do auto-cancelamento.
Reparcelamentos e quitações têm a flag em false, porque o usuário precisa ter um pagamento ativo no gateway para ser enviado ao SERASA, se necessário.
Provedores de PlatformService
Provedores atuais:
APOLOCITRGNotificationEmail(em progresso)NotificationWhatsapp(em progresso)NotificationEmailWhatsapp(em progresso)
Como adicionar um provedor novo está detalhado em ../plans/20260318144411_onion_integration.md, que percorre o caso do Onion ponta a ponta. O mecanismo genérico está em ../reference/payments/payment_integration_flow.md.
Opções de provedor por checkout
O módulo CheckoutIntegrationOption guarda, para cada checkout criado, os valores necessários — de forma genérica entre integrações diferentes.
Tabela checkout_integration_options:
| Campo | Descrição |
|---|---|
checkout_id |
Checkout ao qual a opção pertence |
integration |
:apolo, :memberkit, :citrg, :notification_email, :notification_whatsapp, :notification_notificacoes_inteligentes_whatsapp |
option_name |
Nome da opção |
option_value |
Valor da opção |
Troubleshooting
| Sintoma | Onde olhar |
|---|---|
| Webhook de saída não chegou ao integrador | OutcomeWebhookLog — status, resposta e tentativas |
| Plataforma externa não liberou acesso | WebhookLog — payload enviado e resposta recebida |
| Pagamento sumiu | Logs de integração do Asaas, e depois PaymentRestoreService |
| Jobs parados | Dashboard do GoodJob, acessível ao System Manager |