# Arquitetura Multi-tenant - Modelo de Negócio Aggios

## Visão Geral da Plataforma

A plataforma Aggios utiliza uma arquitetura multi-tenant em três camadas principais:

```
┌─────────────────────────────────────────────────┐
│  aggios.app (Site Institucional)                │
│  - Marketing                                     │
│  - Cadastro de novas agências                   │
└─────────────────────────────────────────────────┘
                    │
                    ▼
┌─────────────────────────────────────────────────┐
│  dash.aggios.app (SuperAdmin)                   │
│  - Você (dono da plataforma)                    │
│  - Gerencia TODAS as agências                   │
│  - Vê analytics globais                         │
└─────────────────────────────────────────────────┘
                    │
        ┌───────────┴───────────┐
        ▼                       ▼
┌──────────────────┐    ┌──────────────────┐
│ idealpages.      │    │ outraagencia.    │
│ aggios.app       │    │ aggios.app       │
├──────────────────┤    ├──────────────────┤
│ Painel da        │    │ Painel da        │
│ IdeaPages        │    │ Outra Agência    │
│                  │    │                  │
│ • CRM            │    │ • CRM            │
│ • ERP            │    │ • ERP            │
│ • Projetos       │    │ • Projetos       │
│ • White Label    │    │ • White Label    │
│   (seu logo)     │    │   (logo deles)   │
└──────────────────┘    └──────────────────┘
        │                       │
        ▼                       ▼
   Clientes da            Clientes da
   IdeaPages              Outra Agência
```

## Como Funciona na Prática

### 1. Sua Agência (Exemplo: IdeaPages)
- **URL**: `idealpages.aggios.app`
- **White Label**: Logo e cores da IdeaPages
- **Clientes**: Cadastrados DENTRO da agência IdeaPages
- **Isolamento**: Cada cliente é isolado por tenant_id (multi-tenant)

### 2. Quando um Cliente Precisa do CRM

**Você SEMPRE manda a URL da sua agência**, não aggios.app!

- Cliente cria conta em `idealpages.aggios.app`
- Cliente acessa `idealpages.aggios.app` com login próprio
- Cliente vê **SEU logo** (IdeaPages)
- Cliente vê **SEU white label**
- Cliente só vê os dados DELE (isolamento por tenant)

### 3. Estrutura de Clientes

```
IdeaPages (você - agência)
├── Cliente 1 (Empresa ABC)
│   ├── Vê: Logo IdeaPages
│   ├── Acessa: idealpages.aggios.app
│   └── Usa: CRM, ERP, Projetos (dados isolados)
│
├── Cliente 2 (Tech Solutions)
│   ├── Vê: Logo IdeaPages
│   ├── Acessa: idealpages.aggios.app
│   └── Usa: CRM, ERP, Projetos (dados isolados)
│
└── Cliente 3 (Marketing Pro)
    ├── Vê: Logo IdeaPages
    ├── Acessa: idealpages.aggios.app
    └── Usa: CRM, ERP, Projetos (dados isolados)
```

## Benefícios para a Agência

✅ **White Label Completo**: Cliente vê sua marca, não "Aggios"
✅ **Controle Total**: Você gerencia todos os seus clientes
✅ **Isolamento de Dados**: Cada cliente só vê os próprios dados
✅ **Escalável**: Adicione quantos clientes quiser na mesma agência
✅ **Identidade Visual**: Logo e cores personalizadas por agência

## Fluxo de Trabalho

1. **Agência se cadastra** → Cria subdomínio (ex: idealpages.aggios.app)
2. **Agência personaliza** → Upload de logo, cores, identidade visual
3. **Agência adiciona clientes** → Cada cliente recebe credenciais
4. **Cliente acessa** → idealpages.aggios.app (vê marca da agência)
5. **Cliente usa módulos** → CRM, ERP, Projetos (dados isolados)

## Resposta Direta

**Pergunta**: "Cliente precisa do CRM, mando aggios.app ou idealpages.aggios.app?"

**Resposta**: **`idealpages.aggios.app`** ✅

O cliente SEMPRE acessa o painel da sua agência, onde verá sua marca e terá acesso aos módulos que você liberar.

---

## Sistema de Links de Cadastro Personalizados

### Visão Geral

Sistema que permite ao SuperAdmin criar links de cadastro customizados, escolhendo:
- **Campos do formulário**: Quais informações coletar
- **Módulos habilitados**: Quais funcionalidades o cliente terá acesso
- **Branding**: Logo e cores personalizadas

### Fluxo de Uso

1. **SuperAdmin** acessa `dash.aggios.app/superadmin/signup-templates`
2. **Cria template** selecionando:
   - Campos: email, senha, subdomínio, CNPJ, telefone, etc.
   - Módulos: CRM, ERP, PROJECTS, FINANCIAL, etc.
   - Slug: URL amigável (ex: `crm-rapido`)
3. **Compartilha link**: `aggios.app/cadastro/crm-rapido`
4. **Cliente acessa** e vê formulário personalizado
5. **Após cadastro**, tenant criado com módulos específicos

### Exemplo Real: DH Projects

```
Template: "CRM Rápido"
Slug: crm-rapido
Campos: email, senha, subdomínio, nome da empresa
Módulos: CRM

Link gerado: aggios.app/cadastro/crm-rapido

Cliente preenche:
- Email: contato@dhprojects.com
- Senha: ********
- Subdomínio: dhprojects
- Empresa: DH Projects

Resultado:
✅ Tenant criado: dhprojects.aggios.app
✅ Módulo CRM habilitado
✅ Outros módulos desabilitados
```

### Estrutura Técnica

**Backend:**
- Tabela: `signup_templates`
- Repository: `SignupTemplateRepository`
- Handlers: `/api/admin/signup-templates` (CRUD)
- Handler público: `/api/signup-templates/slug/{slug}` (renderiza form)

**Frontend:**
- Gerenciamento: `dash.aggios.app/superadmin/signup-templates`
- Cadastro público: `aggios.app/cadastro/{slug}`

**Campos Disponíveis:**
- email, password, subdomain (obrigatórios)
- company_name, cnpj, phone, address, city, state, zipcode (opcionais)

**Módulos Disponíveis:**
- CRM, ERP, PROJECTS, FINANCIAL, INVENTORY, HR

### Benefícios

✅ Cadastro rápido para clientes específicos
✅ Coleta apenas informações necessárias
✅ Habilita somente módulos contratados
✅ Reduz fricção no onboarding
✅ Personalização por caso de uso
