Visão geral
Números agregados de toda a plataforma, sem entrar em nenhuma organização.
plataforma_metricas() no card C2, sem nenhuma linha de passageiro/reserva/pagamento trafegando pro navegador. Exclui organizações demo.
Todos os números: reais de hoje -- quebra por agência na aba Analytics
agencias.ativo = false desde 26/06) -- mas essa coluna não bloqueia nada hoje.
Organizações
Todo inquilino do banco compartilhado. Cliente novo entra aqui com organização própria -- nunca dentro da organização de outro cliente.
| Organização | Agências | Master | Criada em | Status | Ações |
|---|---|---|---|---|---|
| Família (OnWay) | 4 | cretive.lab@gmail.com | 19/06/2026 | ||
| [DEMO] OnWay Demo | 1 | demo@onwayos.com | 23/08/2026 | ||
| Agência cliente | 1 | e-mail do master | 24/08/2026 | Ativa |
agencias.ativo) -- Guatambu Travel já está com ela em false desde 26/06. Mas hoje essa coluna não bloqueia nada: login, RLS e rotas ignoram ela (conferido no código). C9 foi corrigido -- não é "criar coluna", é "ligar a coluna que já existe".
Status de organização é só mock; status de agência já existe no banco mas não trava nada ainda (ver C9)
| cretive.lab@gmail.com | desde 19/06/2026 |
100% manual hoje (SQL direto no PROD). Sem tela pra isso ainda -- card C12.
Analytics
Vendas e destino por agência, sem nenhuma linha de passageiro, telefone ou CPF. Pedido em 22/08: "não quero os dados dos clientes, quero a visão analítica".
| Agência | Viagens cadastradas | Realizadas | Passageiros | Receita 30d | Último login |
|---|---|---|---|---|---|
| Mundo a Passeio & Caminhos de Luz | 0 | 0 | 872 | R$ 10.950 | 22/08/2026 |
| Caravana Caminhos de Luz | 47 | 30 | 1.678 | R$ 3.530 | 30/03/2026 |
| Mundo a Passeio | 0 | 0 | 631 | R$ 500 | sem usuário |
| Guatambu Travel | 0 | 0 | 0 | R$ 0 | sem usuário |
3 das 4 mostram 0 viagens cadastradas com passageiros > 0: a Família grava a viagem numa marca só (Caravana Caminhos de Luz) e credita o passageiro à marca que vendeu. É assim que a família opera hoje, não é bug -- um cliente novo, com 1 organização = 1 agência, não tem esse efeito. Exclui [DEMO] OnWay Demo, como o resto da plataforma.
Cuidado ao ler "último login" como sinal isolado de uso: a Caravana não loga desde 30/03, mas é a agência com MAIS atividade real da família -- a operação dela passa por um canal mediado por IA (ator ia_agente na Auditoria), não por login direto. Login sozinho mede acesso humano à tela, não uso do sistema.
Clique numa linha pra abrir o detalhe completo da agência: usuários, viagens, auditoria e erros.
| Destino (como está gravado) | Viagens | Realizadas |
|---|---|---|
| Triangulo Mineiro (Minas Gerais) | 18 | 15 |
| Termas Romanas (Rio Grande do Sul) | 4 | 1 |
| + 26 outros destinos (1 viagem cada, texto livre sem padrão -- "MG", "Gramado / RS", "Chile: Mendoza | Santiago | Córdoba" convivem) | 26 | 14 |
Pedido em 22/08, mas não entra agora: o ponto de embarque (ponto_embarque) está vazio em 1.218 de 1.219 linhas no PROD hoje. Mostrar uma origem aqui seria inventar dado sobre uma coluna que, na prática, ninguém preenche -- fica de fora até esse campo virar confiável (fora do escopo deste épico).
Nova agência
Cria organização, agência e usuário master numa tacada -- o mesmo fluxo do script provisionar-cliente.mjs, agora com tela.
Nessa ordem, numa transação só: organização nova → agência dentro dela → usuário master (e-mail já confirmado, sem precisar clicar em link nenhum) → permissões gravadas (dono da própria agência, não enxerga as outras) → prova de isolamento adversarial contra o dado da Família.
Não sai e-mail automático nenhum ainda. A senha temporária aparece UMA vez, aqui embaixo -- você repassa pro cliente por fora (WhatsApp, e-mail manual). Convite automático fica pra depois; não é o caminho simples de agora.
Segurança e isolamento
Superfície nova, pedida em 22/08: mostra o resultado da auditoria de permissões ao vivo, pra não virar relatório que envelhece. Alimentada pelos cards C5, C6 e C7 -- hoje nenhum rodou ainda, os números abaixo são ilustrativos de layout.
| Família (OnWay) | OK |
| [DEMO] OnWay Demo | OK |
| Tabelas sem prova completa | a mapear |
Última corrida: -- (guard atual, escopo restrito)
Achados conhecidos corrigidos: 1 (regex de marca em contratos/analytics, 22/08)
5 roles ativas na Família -- ver matriz completa abaixo
| Role | Ver financeiro | Excluir registro | Gerenciar equipe | Ver outras agências | Provisionar cliente |
|---|---|---|---|---|---|
| Plataforma (dono) | |||||
| Owner (master do cliente) | |||||
| Financeiro | |||||
| Agente | |||||
| Excluir (permissão avulsa) |
Layout de referência -- a matriz real (card C6) confere cada célula contra o código, não contra a intenção de cada tela.
Auditoria
Eventos de plataforma, com PII redigida pra quem não tem escopo declarado na organização do evento.
| Data/hora | Ator | Ação | Tabela | Detalhe |
|---|---|---|---|---|
| 22/08 00:07 | ia_agente | update | agentes_viagem | perm_plataforma |
| 22/08 03:14 | cretive.lab@... | insert | plataforma_sessao | escopo org X |
| 23/08 09:12 | cretive.lab@... | insert | agencias | nova organização |
Negócio
A visão da OnWay como empresa (faturamento, custo, margem) -- separada da visão operacional de cada agência cliente. Pedido em 22/08; hoje nenhuma das três caixas tem de onde puxar dado real, então nenhuma delas mostra número.
Depende de um gateway de pagamento (Stripe ou parecido) cobrando cada agência cliente. Hoje ninguém é cobrado -- o produto ainda não fatura por assinatura. Sem gateway, não existe número real; mostrar um aqui seria inventado.
Vercel, Supabase e o que mais entrar. Achado nesta revisão: o Supabase já expõe custo por organização via API própria -- dá pra puxar sem esperar o gateway. Vercel exigiria uma integração à parte. Nenhum dos dois está ligado ao painel ainda.
Faturamento menos custo de infra. Só existe depois que as duas caixas ao lado tiverem dado real -- não faz sentido calcular margem sobre número inventado.
Caravana Caminhos de Luz
AtivaTudo o que a plataforma sabe sobre esta agência -- sem entrar na organização dela (isso é declarar_escopo_org(), botão Gerenciar).
agencias: responsável, telefone, e-mail, CNPJ, cidade -- existem na tabela desde sempre, mas hoje NENHUMA das 4 agências da família preenche a maioria deles (achado de 22/08, não é um buraco só desta tela). "Cliente desde" é agencias.criado_em; nas agências que nasceram junto (04/04/2026) reflete a criação original da linha, anterior ao modelo de organização (19/06/2026) -- pra um cliente novo de verdade, essa data já vai significar exatamente "dia que entrou pelo provisionamento".
Último login: --
agencias já tem as colunas stripe_customer_id / stripe_subscription_id / pix_chave -- hoje null pra esta e pra toda agência, porque não existe gateway de pagamento integrado ainda (card C13, ONWAY-121). Quando existir, esta seção vira a cobrança de verdade desta agência específica.
| Destino | Viagens |
|---|---|
| Triangulo Mineiro (Minas Gerais) | 18 |
| Termas Romanas (Rio Grande do Sul) | 4 |
| + 25 outros destinos (1 viagem cada) | 25 |
Nenhuma viagem cadastrada por esta agência -- é um dos dois achados que a trouxeram pra "Precisa da sua atenção" na Visão Geral.
| Nome | Tipo | Master | Financeiro | Excluir | Ativo | |
|---|---|---|---|---|---|---|
| Alva Cinara Manfro Schinoff | não informado | agente | Sim |
Fonte: agentes_viagem (cadastro operacional, já existe hoje). A camada de papéis mais rica (membros, com role_id) alimenta a matriz do card C6 -- pra esta tela, o caminho simples primeiro.
| Viagem | Destino | Vagas | Status |
|---|---|---|---|
| Setembro 2027: Pantanal | Pantanal (Mato Grosso do Sul) | 43 | ativa |
| Junho 2027: Chile - Santiago e os Andes | Santiago e os Andes (Chile) | 43 | ativa |
| Julho 2027: Minas Espirita | Triangulo Mineiro (MG) | 43 | ativa |
| Junho 2027: Aparecida e Frei Galvão | Aparecida e Guaratingueta (SP) | 43 | ativa |
| Maio 2027: Paraty e Angra dos Reis | Paraty e Angra dos Reis (RJ) | 43 | ativa |
| Abril 2027: Minas | Triangulo Mineiro (MG) | 43 | ativa |
| Janeiro 2027: Caminho das Águas | São Thomé das Letras, Caxambu e Capitólio (MG) | 43 | ativa |
| Novembro 2027: Minas | Triangulo Mineiro (MG) | 43 | ativa |
| + 39 outras viagens desta agência (47 no total) | |||
data_saida e data_retorno de 11 das 47 viagens desta agência estão gravadas como 2099-12-31 -- valor-sentinela, não data real. Por isso as colunas de data ficam fora desta tabela: mostrar 2099 como se fosse uma viagem real seria inventar informação. Vale confirmar com a agência se é campo que nunca foi preenchido no cadastro.
| Data/hora | Ator | Ação | Tabela |
|---|---|---|---|
| 22/08 14:41:55 | ia_agente | update | passageiros |
| 22/08 14:41:40 | ia_agente | update | passageiros |
| 21/08 14:30:40 | ia_agente | update | pagamentos |
| 21/08 14:30:40 | ia_agente | update | reservas |
| 21/08 14:29:09 | ia_agente | insert | reservas |
| 21/08 14:29:09 | ia_agente | insert | pagamentos |
| Data/hora | Ator | Ação | Tabela |
|---|---|---|---|
| 03/08 00:13:10 | ia_agente | update | site_config |
| 17/07 12:15:05 | ia_agente | update | site_config |
| 12/07 22:41:45 | ia_agente | update | site_config |
| 04/07 10:12:41 | postgres | update | site_config |
Só edição de configuração do site, nenhum evento de viagem/passageiro/pagamento -- consistente com a agência estar sem atividade comercial. Repare que a auditoria NÃO está vazia mesmo a agência estando dormente: é um rastro administrativo, não comercial.
Fonte: audit.eventos_plataforma filtrada por agencia_id -- direto, sem JOIN (diferente de Erros, ao lado).
Diferente de auditoria, esta tabela só guarda user_id -- filtrar por agência exige JOIN com agentes_viagem.user_id, não é um simples "where agencia_id = X". Hoje a tabela está zerada pra plataforma inteira (conferido em 22/08, últimos 7 dias e acumulado), então o JOIN nem foi necessário pra este mock -- mas vai ser preciso assim que o primeiro erro acontecer.
ONWAY-107 -- arquitetura completa no runbook 1-pra-facilitar-talvez-tingly-adleman.md, secao 8. Nenhum card de tela (C1-C4, C8-C12, e o novo card do detalhe por agência) comeca antes do aceite neste mock. C13 (Negócio) é futuro, não bloqueia nada desta semana.