🔒

Painel Master PERSONALITY

Acesso exclusivo para administradores. Digite a senha master para continuar.

← Voltar para o Site Principal
Painel de Configuração Geral ⚙️

Configurações do Banco de Dados (Supabase)

Configure a conexão direta com o Supabase para que a página grave os leads e carregue as lojas de forma permanente na nuvem.

Encontrado em: *Project Settings > API > Project URL* no painel do Supabase.

Encontrado em: *Project Settings > API > Project API keys (anon public)*.

Tabela no banco de dados que irá receber os campos: `name`, `email`, `whatsapp`, `message`, `loja`, `voucher`.

Tabela no banco de dados que irá receber as óticas: `nome`, `endereco`, `telefone`.

Tabela no banco de dados que irá receber os cadastros dos profissionais: `nome`, `cpf_cnpj`, `email`, `whatsapp`, `telefone`, `clinica`, `newsletter`.

Tabela no banco de dados que irá receber os cadastros dos vendedores: `nome`, `cpf`, `loja`, `whatsapp`, `email`, `usuario`, `senha`.

Tabela no banco de dados que irá receber as O.S. lançadas: `vendedor_id`, `vendedor_nome`, `loja`, `os`, `cliente_nome`, `lente_familia`, `ar_familia`, `data_venda`, `pontos_lente`, `valor_lente`, `pontos_ar`, `valor_ar`, `status`.

Tabela no banco de dados que irá receber as tabelas de prêmios por família: `categoria`, `nome`, `pontos`, `valor`.

Tabela no banco de dados que irá receber as O.S. autorizadas pelo laboratório: `os`, `cpf_vendedor`, `loja`, `cliente_nome`, `lente_familia`, `ar_familia`, `utilizada`.

Envio direto do navegador para o Make.com. Funciona mesmo sem gatilhos no Supabase.

Não configurado / Sem conexão local

📧 Como resolver falhas no envio de e-mails pelo Make.com:

  • 1. Testar e Redeterminar a Estrutura (Re-determine Data Structure): No Make.com, clique com o botão direito no módulo Custom Webhook, escolha "Re-determine data structure" e clique no botão 🧪 Testar Disparo do Make acima.
  • 2. Mapeamento dos Campos: No módulo de e-mail do Make (Gmail, Outlook ou SMTP), certifique-se de que o campo To (Para) esteja apontado para o campo email.
  • 3. Conexão do Gmail / E-mail no Make: Se estiver usando o módulo do Gmail no Make, verifique se a conta não expirou. Caso ocorra erro de autorização no Make, acesse Connections > Re-authorize na sua conta de e-mail dentro do Make.
  • 4. Ligar a Automação (ON): Lembre-se de ativar a chave do cenário no canto inferior esquerdo do Make.com para ON (Immediately).

🛠️ Script SQL para criação das tabelas no Supabase:

Copie e execute o código abaixo no menu **SQL Editor** do seu painel do Supabase para criar ou atualizar as tabelas do projeto:

-- 1. Tabela de Leads Promocionais com Loja e Voucher
create table if not exists leads_personality (
  id uuid default gen_random_uuid() primary key,
  name text not null,
  email text not null,
  whatsapp text not null,
  message text,
  loja text,
  loja_endereco text,
  loja_telefone text,
  voucher text,
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);

-- 2. Tabela de Lojas Licenciadas
create table if not exists lojas_licenciadas (
  id uuid default gen_random_uuid() primary key,
  nome text not null,
  endereco text,
  telefone text,
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);

-- 3. Tabela de Acessos de Lojas Credenciadas
create table if not exists acessos_lojas (
  id uuid default gen_random_uuid() primary key,
  loja_nome text not null unique,
  usuario text not null unique,
  senha text not null,
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);

-- 4. Tabela de Equipe Técnica (Suporte & Garantia)
create table if not exists tecnicos_personality (
  id uuid default gen_random_uuid() primary key,
  nome text not null,
  email text not null,
  whatsapp text not null,
  especialidade text default 'Assistência Geral',
  loja_atendida text default 'Todas as Lojas',
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);

-- 5. Tabela de Chamados de Assistência Técnica (Com O.S., CRM Médico, Tratamento e Data da Compra)
create table if not exists chamados_assistencia (
  id uuid default gen_random_uuid() primary key,
  protocolo text not null,
  cliente_nome text not null,
  cliente_email text not null,
  cliente_whatsapp text not null,
  loja_nome text not null,
  linha_produto text not null,
  tratamento text not null,
  data_compra date not null,
  os_numero text not null,
  medico_crm text not null,
  motivo text not null,
  data_atendimento date not null,
  horario_atendimento text not null,
  tecnico_nome text not null,
  tecnico_email text not null,
  tecnico_whatsapp text not null,
  status text default 'Agendado',
  observacoes text,
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);

-- 6. Tabela de Motivos do Chamado
create table if not exists motivos_assistencia (
  id uuid default gen_random_uuid() primary key,
  motivo text not null unique,
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);

-- 7. Tabela de Profissionais da Saúde Cadastrados
create table if not exists profissionais_personality (
  id uuid default gen_random_uuid() primary key,
  nome text not null,
  cpf_cnpj text not null,
  email text not null,
  whatsapp text not null,
  telefone text,
  clinica text not null,
  newsletter boolean default false,
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);

-- 8. Tabela de Vendedores
create table if not exists vendedores_personality (
  id uuid default gen_random_uuid() primary key,
  nome text not null,
  cpf text not null unique,
  loja text not null,
  whatsapp text not null,
  email text not null unique,
  usuario text not null unique,
  senha text not null,
  aprovado boolean default false,
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);


-- 9. Tabela de Configurações de Prêmios por Produto
create table if not exists premios_config_personality (
  id uuid default gen_random_uuid() primary key,
  categoria text not null, -- 'lente' ou 'antirreflexo'
  nome text not null unique,
  pontos numeric not null,
  valor numeric not null,
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);

-- 10. Tabela de Prêmios Lançados (Vendas de Vendedores)
create table if not exists premios_lancados_personality (
  id uuid default gen_random_uuid() primary key,
  vendedor_id uuid not null,
  vendedor_nome text not null,
  loja text not null,
  os text not null unique,
  cliente_nome text not null,
  lente_familia text not null,
  ar_familia text not null,
  data_venda date not null,
  pontos_lente numeric default 0,
  valor_lente numeric default 0,
  pontos_ar numeric default 0,
  valor_ar numeric default 0,
  status text default 'Pendente', -- 'Pendente', 'Validado' ou 'Pago'
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);

-- 11. Tabela de O.S. Autorizadas (Vendas Pré-lançadas pelo Laboratório)
create table if not exists os_autorizadas_personality (
  id uuid default gen_random_uuid() primary key,
  os text not null unique,
  cpf_vendedor text not null,
  loja text not null,
  cliente_nome text not null,
  lente_familia text not null,
  ar_familia text not null,
  utilizada boolean default false,
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);

-- 12. Tabela de Configurações Gerais
create table if not exists config_geral_personality (
  chave text primary key,
  valor text not null,
  created_at timestamp with time zone default timezone('utc'::text, now()) not null
);
insert into config_geral_personality (chave, valor) values ('valor_ponto', '1.00') on conflict (chave) do nothing;

-- Habilitar RLS (Row Level Security) e Criar Políticas de Acesso Nativas
alter table leads_personality enable row level security;
alter table lojas_licenciadas enable row level security;
alter table profissionais_personality enable row level security;
alter table acessos_lojas enable row level security;
alter table tecnicos_personality enable row level security;
alter table chamados_assistencia enable row level security;
alter table motivos_assistencia enable row level security;
alter table vendedores_personality enable row level security;
alter table premios_config_personality enable row level security;
alter table premios_lancados_personality enable row level security;
alter table os_autorizadas_personality enable row level security;
alter table config_geral_personality enable row level security;

-- Criar Políticas de Permissão Pública (Limpando antigas se existirem)
drop policy if exists "Permitir select em leads_personality" on leads_personality;
drop policy if exists "Permitir insert em leads_personality" on leads_personality;
drop policy if exists "Permitir update em leads_personality" on leads_personality;
drop policy if exists "Permitir delete em leads_personality" on leads_personality;
create policy "Permitir select em leads_personality" on leads_personality for select using (true);
create policy "Permitir insert em leads_personality" on leads_personality for insert with check (true);
create policy "Permitir update em leads_personality" on leads_personality for update using (true);
create policy "Permitir delete em leads_personality" on leads_personality for delete using (true);

drop policy if exists "Permitir select em profissionais_personality" on profissionais_personality;
drop policy if exists "Permitir insert em profissionais_personality" on profissionais_personality;
drop policy if exists "Permitir update em profissionais_personality" on profissionais_personality;
drop policy if exists "Permitir delete em profissionais_personality" on profissionais_personality;
create policy "Permitir select em profissionais_personality" on profissionais_personality for select using (true);
create policy "Permitir insert em profissionais_personality" on profissionais_personality for insert with check (true);
create policy "Permitir update em profissionais_personality" on profissionais_personality for update using (true);
create policy "Permitir delete em profissionais_personality" on profissionais_personality for delete using (true);

drop policy if exists "Permitir select em lojas_licenciadas" on lojas_licenciadas;
drop policy if exists "Permitir insert em lojas_licenciadas" on lojas_licenciadas;
drop policy if exists "Permitir update em lojas_licenciadas" on lojas_licenciadas;
drop policy if exists "Permitir delete em lojas_licenciadas" on lojas_licenciadas;
create policy "Permitir select em lojas_licenciadas" on lojas_licenciadas for select using (true);
create policy "Permitir insert em lojas_licenciadas" on lojas_licenciadas for insert with check (true);
create policy "Permitir update em lojas_licenciadas" on lojas_licenciadas for update using (true);
create policy "Permitir delete em lojas_licenciadas" on lojas_licenciadas for delete using (true);

drop policy if exists "Permitir select em acessos_lojas" on acessos_lojas;
drop policy if exists "Permitir insert em acessos_lojas" on acessos_lojas;
drop policy if exists "Permitir update em acessos_lojas" on acessos_lojas;
drop policy if exists "Permitir delete em acessos_lojas" on acessos_lojas;
create policy "Permitir select em acessos_lojas" on acessos_lojas for select using (true);
create policy "Permitir insert em acessos_lojas" on acessos_lojas for insert with check (true);
create policy "Permitir update em acessos_lojas" on acessos_lojas for update using (true);
create policy "Permitir delete em acessos_lojas" on acessos_lojas for delete using (true);

drop policy if exists "Permitir select em tecnicos_personality" on tecnicos_personality;
drop policy if exists "Permitir insert em tecnicos_personality" on tecnicos_personality;
drop policy if exists "Permitir update em tecnicos_personality" on tecnicos_personality;
drop policy if exists "Permitir delete em tecnicos_personality" on tecnicos_personality;
create policy "Permitir select em tecnicos_personality" on tecnicos_personality for select using (true);
create policy "Permitir insert em tecnicos_personality" on tecnicos_personality for insert with check (true);
create policy "Permitir update em tecnicos_personality" on tecnicos_personality for update using (true);
create policy "Permitir delete em tecnicos_personality" on tecnicos_personality for delete using (true);

drop policy if exists "Permitir select em chamados_assistencia" on chamados_assistencia;
drop policy if exists "Permitir insert em chamados_assistencia" on chamados_assistencia;
drop policy if exists "Permitir update em chamados_assistencia" on chamados_assistencia;
drop policy if exists "Permitir delete em chamados_assistencia" on chamados_assistencia;
create policy "Permitir select em chamados_assistencia" on chamados_assistencia for select using (true);
create policy "Permitir insert em chamados_assistencia" on chamados_assistencia for insert with check (true);
create policy "Permitir update em chamados_assistencia" on chamados_assistencia for update using (true);
create policy "Permitir delete em chamados_assistencia" on chamados_assistencia for delete using (true);

drop policy if exists "Permitir select em motivos_assistencia" on motivos_assistencia;
drop policy if exists "Permitir insert em motivos_assistencia" on motivos_assistencia;
drop policy if exists "Permitir update em motivos_assistencia" on motivos_assistencia;
drop policy if exists "Permitir delete em motivos_assistencia" on motivos_assistencia;
create policy "Permitir select em motivos_assistencia" on motivos_assistencia for select using (true);
create policy "Permitir insert em motivos_assistencia" on motivos_assistencia for insert with check (true);
create policy "Permitir update em motivos_assistencia" on motivos_assistencia for update using (true);
create policy "Permitir delete em motivos_assistencia" on motivos_assistencia for delete using (true);

drop policy if exists "Permitir select em vendedores_personality" on vendedores_personality;
drop policy if exists "Permitir insert em vendedores_personality" on vendedores_personality;
drop policy if exists "Permitir update em vendedores_personality" on vendedores_personality;
drop policy if exists "Permitir delete em vendedores_personality" on vendedores_personality;
create policy "Permitir select em vendedores_personality" on vendedores_personality for select using (true);
create policy "Permitir insert em vendedores_personality" on vendedores_personality for insert with check (true);
create policy "Permitir update em vendedores_personality" on vendedores_personality for update using (true);
create policy "Permitir delete em vendedores_personality" on vendedores_personality for delete using (true);

drop policy if exists "Permitir select em premios_config_personality" on premios_config_personality;
drop policy if exists "Permitir insert em premios_config_personality" on premios_config_personality;
drop policy if exists "Permitir update em premios_config_personality" on premios_config_personality;
drop policy if exists "Permitir delete em premios_config_personality" on premios_config_personality;
create policy "Permitir select em premios_config_personality" on premios_config_personality for select using (true);
create policy "Permitir insert em premios_config_personality" on premios_config_personality for insert with check (true);
create policy "Permitir update em premios_config_personality" on premios_config_personality for update using (true);
create policy "Permitir delete em premios_config_personality" on premios_config_personality for delete using (true);

drop policy if exists "Permitir select em premios_lancados_personality" on premios_lancados_personality;
drop policy if exists "Permitir insert em premios_lancados_personality" on premios_lancados_personality;
drop policy if exists "Permitir update em premios_lancados_personality" on premios_lancados_personality;
drop policy if exists "Permitir delete em premios_lancados_personality" on premios_lancados_personality;
create policy "Permitir select em premios_lancados_personality" on premios_lancados_personality for select using (true);
create policy "Permitir insert em premios_lancados_personality" on premios_lancados_personality for insert with check (true);
create policy "Permitir update em premios_lancados_personality" on premios_lancados_personality for update using (true);
create policy "Permitir delete em premios_lancados_personality" on premios_lancados_personality for delete using (true);

drop policy if exists "Permitir select em os_autorizadas_personality" on os_autorizadas_personality;
drop policy if exists "Permitir insert em os_autorizadas_personality" on os_autorizadas_personality;
drop policy if exists "Permitir update em os_autorizadas_personality" on os_autorizadas_personality;
drop policy if exists "Permitir delete em os_autorizadas_personality" on os_autorizadas_personality;
create policy "Permitir select em os_autorizadas_personality" on os_autorizadas_personality for select using (true);
create policy "Permitir insert em os_autorizadas_personality" on os_autorizadas_personality for insert with check (true);
create policy "Permitir update em os_autorizadas_personality" on os_autorizadas_personality for update using (true);
create policy "Permitir delete em os_autorizadas_personality" on os_autorizadas_personality for delete using (true);

drop policy if exists "Permitir select em config_geral_personality" on config_geral_personality;
drop policy if exists "Permitir insert em config_geral_personality" on config_geral_personality;
drop policy if exists "Permitir update em config_geral_personality" on config_geral_personality;
drop policy if exists "Permitir delete em config_geral_personality" on config_geral_personality;
create policy "Permitir select em config_geral_personality" on config_geral_personality for select using (true);
create policy "Permitir insert em config_geral_personality" on config_geral_personality for insert with check (true);
create policy "Permitir update em config_geral_personality" on config_geral_personality for update using (true);
create policy "Permitir delete em config_geral_personality" on config_geral_personality for delete using (true);

🔐 Segurança: Senha do Painel Master

Altere a senha de proteção do Painel Master. (Senha padrão inicial: admin123)

Gerenciamento de Lojas Licenciadas

Cadastre e gerencie as óticas parceiras que aparecerão na página principal e no formulário de resgate do voucher.

🏪 Óticas Cadastradas

Nome da Ótica Endereço Telefone Ações

🔑 Acessos das Óticas Licenciadas

Crie e gerencie as credenciais de login que as óticas usarão para acessar o Portal do Parceiro e ver os próprios leads.

Use apenas letras e números minúsculos, sem espaços ou acentos.

🔑 Credenciais Ativas

Ótica Correspondente Usuário (Login) Senha Ações

Gerenciamento da Equipe Técnica & Especialistas

Cadastre os técnicos e responsáveis que receberão os chamados de assistência, ajuste de parâmetros e garantia.

Cadastrar / Editar Técnico:

Técnicos Cadastrados:

Nome E-mail WhatsApp Especialidade Ótica Atendida Ações

Chamados de Assistência Técnica & Garantia

Acompanhe todos os chamados abertos pelos clientes, os técnicos atribuídos, dados da O.S., CRM médico e status dos agendamentos.

Total de Chamados: 0
Protocolo Cliente Ótica / Compra O.S. / Médico CRM Lente / Tratamento / Motivo Agendamento Técnico Responsável Status

Opções de Motivos do Chamado

Cadastre ou remova os motivos de assistência técnica e garantia que aparecem na caixa de seleção para o consumidor final.

Adicionar Novo Motivo de Atendimento:

Motivos Cadastrados no Sistema:

# Descrição do Motivo Ações

Configurações de Domínio e Deploy na Vercel

Guia passo a passo para conectar a sua conta da Vercel ao domínio oficial da marca.

📋 Lista de Etapas (Acompanhamento)

Central de Downloads (Gerenciamento de Materiais)

Adicione, edite ou remova PDFs, catálogos e tabelas técnicas disponíveis para os clientes no site.

➕ Cadastrar Novo Material para Download

💡 Dica: Aceita links do Google Drive (certifique-se que esteja como "Qualquer pessoa com o link pode ver"), Dropbox, Canva ou arquivos do site.

Título / Categoria Descrição Formato/Tamanho Link do Arquivo Ações

Banco de Imagens e Recursos Visuais

Locais sugeridos para buscar imagens de alta qualidade e instruções de substituição de arquivos no projeto.

🎨 Onde buscar fotos profissionais gratuitas:

  • 📸 Unsplash (unsplash.com): Busque termos como *"luxury optics"*, *"glasses style"*, *"german lab"* ou *"precision technology"*.
  • 📸 Freepik (freepik.com): Ideal para vetores, renderizações de lentes e fotos comerciais de óticas.
  • 📸 Pexels (pexels.com): Excelente acervo de vídeos e fotos de modelos usando óculos em ambientes premium.

📁 Como substituir as imagens no código:

Crie uma pasta chamada images na raiz do projeto e substitua as imagens estruturais:

Seção Caminho Sugerido Dimensões Recomendadas
Lente Premium (Hero) images/hero-lens.png 500x500px (Fundo transparente PNG)
Foto Laboratório/Sobre Nós images/about-lab.jpg 800x600px
Banner Lojas Licenciadas images/store-locator.jpg 1200x500px

Leads Recebidos (Resgates de Voucher)

Visualize os dados dos clientes que cadastraram para ganhar 50% de desconto e os respectivos vouchers gerados.

Total de Vouchers: 0
Nome E-mail WhatsApp Ótica Escolhida Voucher Obs Data

Profissionais & Vendedores Cadastrados

Lista de médicos/profissionais da saúde e balconistas/vendedores cadastrados na plataforma.

Cadastrados: 0
Data Cadastro Nome Tipo CPF / CNPJ Loja / Clínica Ações

➕ Adicionar Novo Produto para Prêmios

Cadastre novos produtos (lentes ou tratamentos) e defina seus dados de classificação.

💸 Configuração de Prêmios de Lentes e Tratamentos

Configure a pontuação e os prêmios dos produtos ativos na campanha.

Regra de Pontuação em Lote:
Valor de Cada Ponto: R$
Produto Preço (R$) Tipo Tecnologia Família IR Pontos/$ Ativo Ações
Página 1 de 1

📥 Liberar Vendas / O.S. para Vendedores

Pré-lance os dados das O.S. válidas amarradas a um vendedor/CPF específico. O vendedor só poderá resgatar as O.S. cadastradas nesta área.

🔍 Localizar Produto e Pontuação

+
+
+
+
📊 Resumo de Comissão da O.S.: Nenhum produto selecionado

📋 Vendas e O.S. Liberadas pelo Laboratório

Veja a listagem de O.S. autorizadas no sistema para cada balconista/vendedor.

+
Vendedor
Ptos
Lentes + AR
Status
Ações
Página 1 de 1 (Mostrando 0 de 0 O.S.)

📈 Dashboard de Performance & Rankings

Análise de vendas, ranking de balconistas, óticas parceiras e produtos mais vendidos no período.

O.S. Resgatadas
0
Pontos Validados
0 Pts
Média de Pontos/O.S.
0
Óticas Ativas
0
Volume em Vendas
R$ 0,00
Ticket Médio Geral
R$ 0,00

🏆 Ranking de Vendedores (Pontos)

🏪 Ranking de Lojas (Pontos)

👓 Lentes Mais Vendidas

✨ Tratamentos Antirreflexo

💰 Ticket Médio por Vendedor

🏬 Ticket Médio por Loja (Ótica)

Relatório e Conciliação de Prêmios de Balconistas

Valide as O.S. lançadas, realize a conciliação financeira de pagamento e gere relatórios.

Aguardando Validação
R$ 0,00
0 O.S. Pendentes
Saldo a Pagar (Validados)
R$ 0,00
0 O.S. Validadas
Prêmios Já Pagos (Histórico)
R$ 0,00
0 O.S. Pagas
+ Vendedor Pontuação Total Status Ações
Mostrando 0 de 0 O.S.

💰 Apuração de Pagamento de Prêmios (Consolidado por Vendedor)

Resumo financeiro acumulado por vendedor com status "A Pagar". Clique no botão de pagar para conciliar todas as O.S. dele em lote.

Vendedor Ótica O.S. Validadas Subtotal Acumulado Ações

💳 Histórico de Pagamentos Realizados (Consolidado por Vendedor)

Resumo de prêmios que já foram pagos e conciliados por vendedor.

Nome do Vendedor CPF Ótica de Trabalho WhatsApp Total Pago (Conciliado) Status