# 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.