agendapro/memory.md

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 plano
    • settings (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 Asaas
    • amount (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 settings da tabela tenants.