Módulos comerciais: Master, Workspace e Site
Estes três módulos tornam a Encantra comercializável: atraem e convertem clientes (Site), deixam cada cliente configurar o próprio workspace (Workspace) e dão à Inspire4U o controle da plataforma e da receita (Master).
Site (público)
| Rota | Descrição |
|---|---|
/ |
Landing (narrativa Kotler/5A, módulos, Lumi, Connect, preços, FAQ) |
/precos |
Planos ativos e públicos da tabela plans, mensal/anual e comparativo |
/signup |
Cadastro self-service: cria tenant em avaliação, owner, emite tenant.created, envia boas-vindas e leva ao onboarding |
/signup/check-slug |
JSON de disponibilidade/sugestão do endereço público |
/design-system |
Documentação viva do Aurora Design System |
/docs/... |
Portal que renderiza docs/**/*.md (e exibe .yaml/.json); whitelist por varredura, sem path traversal |
/termos, /privacidade, /status |
Legal (LGPD) e status da plataforma |
Proteções do cadastro: platform.signup_enabled, rate limit (5/h por IP), honeypot, slugs reservados.
Workspace (/app/settings, owner/admin)
- Geral: nome, endereço (
/h/{slug}), fuso, e-mail de suporte, dados fiscais. - Marca: cor e logotipo (PNG/JPG/WEBP ≤ 2 MB, validado por
finfo+getimagesize), salvo emstorage/uploads/{tenant_uuid}/e servido por/media/{uuid}/{arquivo}comnosniffe CSP. - Equipe: convites com token de uso único (72 h), papéis, desativação; respeita o limite
agents(observadores não ocupam assento). Se o e-mail falhar, o link é exibido uma única vez para cópia. - Lumi: tom de voz, assinatura, triagem e resposta automática com limiar de confiança; BYOK (chave Claude própria, criptografada) quando o plano tem
byok. - Auditoria:
audit_logsdo tenant com filtros. - Onboarding: assistente em 6 passos; grava
onboarding_completed_at. - Plano e faturamento (visível a todos; alterar exige owner/admin): medidores (núcleo +
Hooks::collect('usage.meters')), troca de plano mensal/anual com fatura gerada (redireciona ao link de pagamento quando o Asaas está ativo); planos "sob consulta" notificam o master.
Limites efetivos: App\Modules\Workspace\Services\Limits::get($key) = limite do plano sobreposto por settings.limits_override (definido pelo master).
Master (/master, papel master)
Painel (MRR/ARR, status, churn, IA por tenant, operação, Hooks::render('master.home')), Workspaces (CRUD, limites personalizados, suspensão, personificação com auditoria), Planos (limites/recursos amigáveis), Faturas, Comunicados (banner + e-mail aos owners), E-mails, Fila de jobs, Auditoria, Sistema (migrações, cron, extensões), Configurações (SMTP com teste, IA com teste, plataforma, cobrança) e Administradores.
Cobrança (Asaas)
Services\Asaas: cliente + cobrançabillingType=UNDEFINED(o pagador escolhe PIX, boleto ou cartão); sandbox ou produção.- Webhook
POST /billing/webhook/asaas(sem CSRF) autenticado pelo headerasaas-access-token; idempotente viabilling_events;PAYMENT_RECEIVED/CONFIRMED→ fatura paga, tenant ativo, período estendido (mensal ou anual). Services\Billing::daily()(cron 06:15): renovações, vencidas →past_due, suspensão apósbilling.suspend_after_days(padrão 10), lembrete de fim de avaliação.
Eventos e hooks
- Emite:
tenant.created(viaTenantFactory::create). - Consome:
settings.sections,usage.meters,master.home.
Configurações (platform_settings)
mail.* (senha criptografada), ai.enabled, ai.model, ai.api_key*, platform.signup_enabled, platform.trial_days, platform.default_plan, platform.support_email, billing.api_key*, billing.sandbox, billing.webhook_secret*, billing.suspend_after_days (* = criptografado).
Encontrou algo para melhorar? Escreva para master@inspire4u.com.br.