Dashboard-Automatizase/docs/architecture/modelos-de-dados.md
2025-10-05 21:17:43 -03:00

2.6 KiB

Modelos de Dados

User

Propósito: Representa usuário autenticado do portal (gerenciado pelo Supabase Auth, tabela auth.users)

Atributos Principais:

  • id: UUID - ID único do usuário (primary key Supabase Auth)
  • email: string - Email do usuário (usado para login)
  • created_at: timestamp - Data de criação da conta
  • updated_at: timestamp - Última atualização

Interface TypeScript

// Baseado em Supabase Auth User
interface User {
  id: string; // UUID
  email: string;
  created_at: string; // ISO timestamp
  updated_at: string; // ISO timestamp
}

Relacionamentos

  • One-to-One com UserSettings
  • One-to-Many com GoogleCalendarIntegration

UserSettings

Propósito: Configurações e preferências do usuário específicas do portal

Atributos Principais:

  • user_id: UUID - FK para auth.users.id
  • created_at: timestamp - Data de criação
  • updated_at: timestamp - Última atualização

Interface TypeScript

interface UserSettings {
  user_id: string; // UUID, FK to auth.users
  created_at: string;
  updated_at: string;
}

Relacionamentos

  • Belongs-to User (auth.users)

GoogleCalendarIntegration

Propósito: Armazena status de autorização OAuth do Google Calendar por usuário

Atributos Principais:

  • id: UUID - Primary key
  • user_id: UUID - FK para auth.users.id
  • is_connected: boolean - Status de conexão
  • connected_email: string | null - Email da conta Google autorizada
  • connected_at: timestamp | null - Data da última autorização
  • created_at: timestamp - Data de criação
  • updated_at: timestamp - Última atualização

Interface TypeScript

interface GoogleCalendarIntegration {
  id: string; // UUID
  user_id: string; // UUID, FK to auth.users
  is_connected: boolean;
  connected_email: string | null;
  connected_at: string | null; // ISO timestamp
  created_at: string;
  updated_at: string;
}

Relacionamentos

  • Belongs-to User (auth.users)

WhatsAppInstance

Propósito: Modelo virtual (não armazenado no DB) representando instância EvolutionAPI

Atributos Principais:

  • instanceName: string - Nome da instância
  • status: 'connected' | 'disconnected' - Status de conexão
  • qrCode: string | null - Base64 do QR code (quando gerado)

Interface TypeScript

interface WhatsAppInstance {
  instanceName: string;
  status: 'connected' | 'disconnected';
  qrCode?: string | null; // Base64 image
}

Relacionamentos

  • Não persistido no Supabase (dados efêmeros da EvolutionAPI)