2.9 KiB
2.9 KiB
Contexto de Memória - AgendaPRO SaaS
Este arquivo contém o histórico arquitetural e as decisões do sistema AgendaPRO para garantir consistência em futuras sessões de desenvolvimento.
[!IMPORTANT] O AgendaPRO é um projeto totalmente separado e independente do EduManager. O banco de dados e os recursos do AgendaPRO não devem ter nenhuma relação com o banco de dados do EduManager.
1. Estrutura do Banco de Dados (AgendaPRO)
O banco de dados oficial do AgendaPRO é estruturado para multi-inquilinato (multi-tenant) usando PostgreSQL. Abaixo estão as tabelas principais mapeadas:
tenants: Cadastro de inquilinos/estabelecimentos.id(UUID, PK)name(VARCHAR)slug(VARCHAR, Unique) - Identificador na URL (ex:barbearia-premium)subscription_status(VARCHAR) - Status da assinatura (active,pending,past_due,cancelled,suspended)subscription_ends_at(TIMESTAMPTZ) - Data limite de validade do planosettings(JSONB) - Configurações gerais (fuso horário, chaves integradas de gateways de pagamento)
plans: Planos de assinatura disponíveis na plataforma.id(UUID, PK)name(VARCHAR)price(NUMERIC)features(TEXT[])slug(VARCHAR)
subscriptions: Vinculo do tenant ao plano.id(UUID, PK)tenant_id(UUID, FK -> tenants)plan_id(UUID, FK -> plans)status(VARCHAR)gateway_subscription_id(VARCHAR) - ID da assinatura gerada no Asaasamount(NUMERIC)
subscription_payments: Transações e faturas do plano de assinatura.id(UUID, PK)subscription_id(UUID, FK)tenant_id(UUID, FK)amount(NUMERIC)status(VARCHAR)gateway_payment_id(VARCHAR)
payments: Cobranças avulsas emitidas pelos inquilinos para os seus clientes (agendamentos).id(UUID, PK)tenant_id(UUID, FK)external_id(VARCHAR) - Mapeamento com ID do Asaas (pay_...)status(VARCHAR) - (pending,completed,refunded,failed)amount(NUMERIC)appointment_id(UUID)
2. Estrutura do Código e Separação de Projetos
- Aplicação Principal (Painel do Inquilino & Agendamento do Cliente): Localizada na raiz do projeto (
src/...). - Painel Administrativo da Plataforma (Master Admin): Localizado na subpasta
/admin. Possui dockerfile próprio e gerencia todos os inquilinos e faturamento global da plataforma.
3. Isolamento e Segurança
- Toda requisição feita de forma administrativa para cobrar os inquilinos usa a credencial mestre do AgendaPRO (
process.env.ASAAS_API_KEY). - Configurações específicas dos clientes dos inquilinos (ex: Pix do salão ou barbearia) são carregadas do campo
settingsda tabelatenants.