Guia rapido — Novo cliente no portal

  1. 1
    Criar cliente

    Preencha o formulario abaixo. Campos obrigatorios: Slug (identificador unico, ex: technova) e Nome.

    Ver detalhes
    • Slug: identificador unico sem espacos (ex: technova, clinica-viva)
    • Nome: nome exibido no portal (ex: "Joao Silva")
    • Empresa/Segmento: aparecem no dashboard do admin
    • E-mail: para contato e login (se marcar o checkbox)
    • Marque "Criar acesso ao portal" → gera login + projeto + vinculo automaticamente
    • Defina uma senha de pelo menos 8 caracteres para o cliente
    ↓ Formulario abaixo
  2. 2
    Criar projeto

    Vincule um projeto ao cliente. Um cliente pode ter varios projetos (diagnostico, implementacao, etc).

    Ver detalhes
    • Cliente: selecione no dropdown (precisa criar primeiro no passo 1)
    • Slug: identificador do projeto (ex: diag-2026, impl-comercial)
    • Nome: ex: "Diagnostico + Implementacao — TechNova"
    • Status: active, paused, completed, cancelled
    • Saude: on_track, at_risk, blocked, off_track
    • Datas: inicio e fim estimado do projeto

    Se voce marcou "Criar acesso ao portal" no passo 1, o projeto ja foi criado automaticamente.

    Clique para ir → Projetos
  3. 3
    Vincular usuario ao portal

    Se nao usou o checkbox automatico, crie o auth user e vincule ao cliente + projeto.

    Ver detalhes
    • Na secao "Portal — vinculo" abaixo nesta pagina
    • Criar Auth User: preencha e-mail + senha → gera UUID do usuario
    • Vincular: selecione o UUID, o cliente e o projeto → cria o acesso
    • Sem este vinculo, o cliente ve "portal sendo preparado" ao logar
    ↓ Secao "Portal — vinculo" abaixo
  4. 4
    Definir PIN de aprovacao

    PIN de 6 digitos que o cliente digita para aprovar diagnostico e entregaveis.

    Ver detalhes
    • Role ate a secao "PIN de aprovacao" nesta pagina
    • Selecione o cliente, digite o PIN 2 vezes e clique "Gravar PIN"
    • O PIN e armazenado como hash bcrypt — ninguem ve o valor real
    • Comunique o PIN ao cliente por canal seguro (WhatsApp, ligacao)
    • Exemplo: 482916 — evite sequencias obvias como 123456
    ↓ Secao "PIN de aprovacao" abaixo
  5. 5
    Preencher conteudo do portal

    O conteudo que o cliente ve no portal vem do campo portal_content.payload (JSON).

    Ver detalhes — estrutura do JSON

    Selecione o projeto na barra superior antes. O JSON aceita estas chaves:

    • project: name, currentPhase (onboarding/diagnosis/implementation/maintenance/evolution), currentPath, contractDate, scope
    • project.phases[]: { key, label, status: "done"|"current"|"pending", date }
    • project.currentSprint: { number: 2, total: 4, label: "Sprint 2 de 4" }
    • metrics: roi { value, estimated, unit:"x" }, monthlySavings { value, estimated, unit:"R$", delta, direction }, hoursRecovered, conversionRate, responseTime
    • diagnosis: status (pending/published/approved), publishedDate, summary, problems[], opportunities[], totalRoi, recommendation
    • nextSteps: nextSprint { number, title, startDate, endDate, items[{ title, done }] }, pendencies[{ title, dueDate, status }]
    • meetings[]: { id, type, date, duration, platform, summary, decisions[], transcript[] }
    • activity[]: { date, time, type: "update"|"delivery"|"meeting"|"approval"|"milestone", title, description }
    • monthlyReport: month, systems[], metricsComparison[{ label, before, after, delta }], adjustments[], nextMonth { focus, items[] }
    • notifications[]: { id, type, title, body, date, read }
    • tools[]: { name, type: "ia"|"automacao"|"integracao", status }

    Hoje o conteudo e editado direto no SQL (Supabase SQL Editor) ou via "Notas para o portal". Evolucao futura: editor visual no admin.

    Clique para ir → Portal do Cliente
  6. 6
    Adicionar entregaveis

    Cada entrega que o cliente pode aprovar ou solicitar ajuste.

    Ver detalhes
    • Selecione o projeto na barra superior antes
    • Tipo (kind): ia, automacao, dados, integracao, processo
    • Sprint: numero do sprint (1, 2, 3...)
    • Status: pending → in-review → approved / needs-adjustment
    • Arquivo: upload opcional (vai para Storage, cliente baixa com URL assinada)
    • O cliente ve os entregaveis na aba "Entregaveis" do portal
    • Para aprovar, o cliente precisa digitar o PIN do passo 4
    Clique para ir → Entregaveis

Pronto! Envie ao cliente: URL do portal + e-mail + senha + PIN de aprovacao.

Seguranca — chave service_role no navegador
Esta pagina usa a chave service_role no JavaScript. Use so em maquina confiavel e localhost. Nao publique em Vercel, Netlify ou GitHub Pages. Evolucao recomendada: API no servidor ou Edge Functions com login de staff.

Novo cliente

ID Nome Empresa Segmento Status Acoes

Contatos

Contatos do cliente selecionado

Nome Cargo Email Telefone Principal Acoes

Portal — vinculo de usuario

Crie o login no Auth por aqui (com service_role) ou cole o UUID de Authentication → Users. Depois vincule ao cliente e projeto.

Novo usuario no Supabase Auth

Crie o login do cliente. Passe o e-mail e senha para ele por WhatsApp. O cliente acessa o portal e entra com e-mail + senha.

User ID Cliente Projeto Project UUID Acoes

PIN de aprovacao

PIN de 6 digitos para acoes sensiveis no portal (aprovar entregaveis, diagnostico). O valor nunca e guardado em texto — so hash bcrypt no Postgres, via funcao dedicada.

So service_role: a RPC set_client_portal_pin nao e exposta a usuarios do portal. Se o salvamento falhar, aplique a migration 20250411130000_set_client_portal_pin.sql no SQL Editor.

Selecione um cliente na barra superior para ver o dashboard.

Upload de documento

Documentos do cliente

Arquivo Categoria Tamanho Status Importante Data Acoes

Adicionar dado

Formularios de intake

Dados do cliente

Chave Label Valor Origem Data Acoes

Nova analise

Analises do cliente

Titulo Tipo Status Prioridade Criada em Acoes


Nova recomendacao

Recomendacoes

Titulo Analise Impacto Esforco Status Acoes

Notas para o portal

Campo adminNotes em portal_content.payload.

OpenClaw

Copie o contexto e cole no chat do gateway, ou envie pela API HTTP do gateway (CORS exige headers no Nginx se o admin for de outra origem).

Opcional: em kaffra-admin-config.local.js defina openClawBaseUrl — gateway local http://127.0.0.1:18789 ou, na VPS, https://openclaw.seudominio.com (TLS + proxy) —, openClawToken se o gateway exigir Bearer, openClawSessionKey para amarrar a sessão (Telegram etc.), e habilite POST /v1/responses no OpenClaw. Guia: docs/portal-production/OPENCLAW.md.

Entregaveis

Cada linha vira um card no portal. IDs estaveis (del_001…) evitam links quebrados. Status e kind sao validados antes de gravar.

ID Tipo Titulo Sprint Status Acoes

Projetos

Nome Cliente Status Saude Inicio Fim Acoes

Tarefas

Titulo Projeto Status Prioridade Prazo Acoes

Usuarios do portal

User ID Cliente Projeto Criado em Acoes

Permissoes

Gerenciamento de roles e permissoes por usuario — em desenvolvimento.

Modulo de permissoes sera implementado em breve.

Data Usuario Acao Entidade Detalhes