agendapro/gemini.md

3.3 KiB

Registro de Modificações - Gemini (AgendaPRO)

Este arquivo registra todas as alterações, novos arquivos criados e configurações de dependências feitas no projeto AgendaPRO para a integração do gateway Asaas e controle de acesso por assinatura.


1. Arquivos Criados

A. src/lib/asaas.ts

Implementação do cliente de API modular do Asaas (v3) para sandbox e produção:

  • Registro de clientes (createCustomer).
  • Geração de cobranças avulsas (createPayment).
  • Busca de QR Code e Linha Digitável do Pix (getPixQrCode).
  • Gerenciamento de Assinaturas recorrentes (createSubscription e cancelSubscription).

B. src/app/api/webhooks/asaas/route.ts

Endpoint de recebimento de notificações do Asaas:

  • Validação do cabeçalho asaas-access-token.
  • Idempotência via tabela asaas_webhook_events.
  • Atualização automatizada de status de agendamentos (payments e appointments) e assinaturas dos inquilinos (subscriptions).

C. src/app/api/tenant/subscription/route.ts

Endpoint para controle de fluxo de planos:

  • GET: Consulta do plano ativo do tenant, validade e lista de planos disponíveis (com auto-seeding de planos Starter, Professional, Business e Enterprise).
  • POST: Criação e cobrança de novas assinaturas via Pix, Boleto ou Cartão de Crédito integrados ao Asaas.

D. src/app/api/tenant/subscription/simulate/route.ts

Endpoint de desenvolvimento e testes em sandbox:

  • POST: Permite forçar instantaneamente o status do tenant como active (desbloqueado) ou inactive (bloqueado) sem depender do envio externo de webhooks.

E. asaas_skill.md

Manual de referência contendo todas as chaves, rotas, payloads de integração e procedimentos de testes no ambiente Sandbox do Asaas.


2. Arquivos Modificados

A. src/app/page.tsx

  • Adicionado carregamento de status do plano no carregamento inicial da página.
  • Enforcamento de bloqueio: inquilinos com assinatura pendente ou vencida são forçados a visualizar apenas a aba de assinatura.
  • Adicionado loader de transição visual durante a verificação de acesso.

B. src/components/Sidebar.tsx

  • Suporte ao parâmetro isLocked.
  • Desativação visual (opacidade reduzida e ícone de cadeado 🔒) dos menus de controle (Dashboard, Agenda, Clientes, Serviços, Equipe, Configurações) quando o acesso do inquilino está bloqueado por falta de pagamento.

C. src/components/Subscription.tsx

  • Exibição de banner de alerta vermelho quando o acesso está bloqueado.
  • Seleção visual interativa do plano desejado e do meio de pagamento (Pix, Boleto, Cartão de Crédito).
  • Formulário de preenchimento de dados de cartão.
  • Retorno com QR Code visual para Pix ou link para download do boleto.
  • Botão "Simular Pagamento Webhook" integrado para desbloqueio instantâneo do sistema em ambiente local.

D. tsconfig.json

  • Adicionada a exclusão da pasta admin ("admin") na verificação de tipos do tsconfig principal para resolver conflitos de paths entre as duas subaplicações.

3. Dependências Instaladas

  • @types/pg: Instalado como dependência de desenvolvimento (npm i --save-dev @types/pg) para garantir tipagem estática e evitar erros de compilação em consultas ao banco PostgreSQL.