Portal de Equipa como Centro de Comando do Grupo
0 O mais urgente, em primeiro (para o CEO)
Hoje, qualquer pessoa com login no portal (mesmo um consultor) consegue ver os dados das 4 lojas, não só da sua. O ecrã mostra a cada um só o que deve, mas o pedido por baixo entrega tudo. Risco interno: um consultor pode ver as comissões e a carteira de outra loja.
Corrige-se no servidor, na Fase 1, sem mudar nada no que se vê. O detalhe técnico está na secção 13.
Os leads do dia podem estar em falta. Quando a Fase 2a estiver feita, este tipo de falha aparece automaticamente no portal com data do último lote bem-sucedido.
1 O que isto é, em três linhas
O portal já existe e está bem construído. O objetivo é fazê-lo crescer de "painel de registo" para o centro de comando do grupo: o sítio onde o CEO vê e controla as 4 lojas, onde cada diretor gere a sua, e onde cada consultor se motiva a cumprir os seus objetivos.
Passa a ser o único sítio de registo e acompanhamento da imobiliária, no lugar dos Excels. Do CRM (X-IMO, crmdsi.pt) só entram automaticamente os leads. A produção (angariações, vendas, CPCVs, visitas) é registada à mão pelo diretor, com o relatório do CRM ao lado.
2 Objetivos do CEO (02 e 03/11/2026)
- Funcional e automático. Os leads entram sozinhos e o diretor recebe o relatório do CRM automaticamente.
- Um registo, visível em todas as camadas. Grava-se uma vez, aparece em todo o lado.
- O consultor vê o quadro completo do seu trabalho. O que está a fazer, o que já fez, e a comparação com a sua produção anterior, com números nos gráficos.
- Rankings de loja e do grupo Valores. Cada um sabe onde está.
- Design mais atrativo. Mobile-first. Atrativo de usar, não só funcional.
- Acabar com os 3 Excels. Portal como único sítio de registo e acompanhamento.
Quem regista o quê (decisão do CEO, 03/11)
| Quem | Escreve | Lê |
|---|---|---|
| Robô | Leads; relatório do CRM; FSBOs | Lista de consultores por loja (para atribuição) |
| Diretor | Produção (angariações, vendas, CPCVs, visitas, propostas); DS Points; comissões; metas; marcação de pagamento no pipeline | Loja inteira + drill-down por consultor |
| Consultor | Os seus objetivos próprios; relatório semanal; feedback dos FSBOs | O seu perfil + ranking + leads + FSBOs atribuídos |
| CEO | Pode marcar pagamento no pipeline (além do diretor) | Grupo inteiro + drill-down para qualquer loja e consultor |
3 A fasquia
Referência: sistema de operações de uma rede de mediação europeia de topo (eGO Real Estate, Casafari). Cinco critérios:
- Cada número tem um dono, e ele está à vista. Ao lado de cada número, o portal mostra quem o registou e quando.
- Em camadas, por papel. O consultor vê-se a si, o diretor vê a loja, o CEO vê o grupo. Drill-down em todo o lado.
- Ação, não só relatório. Cada número vermelho traz uma ação ao lado: quem faz, até quando.
- Indicadores de avanço, não só de resultado. Leads, angariações, visitas, propostas, taxa de conversão entre cada passo.
- Rápido e no telemóvel. Mobile-first. O registo do diretor e os FSBOs do consultor fazem-se em segundos.
4 O que já está bem (base a manter)
- Login por token em cabeçalho
Authorization(resistente a CSRF). - Três níveis de acesso: LOJA, Diretor, Consultor, CEO.
- Lista de utilizadores trancada só para CEO (403 testado).
- Senha inicial 1234 obriga troca na primeira entrada.
- Gamificação: DS Points, ranking, pódio mensal. Mantém-se e reforça-se.
- Ação "Registar" para o diretor já existe.
5 CRM: só leads e relatório para o diretor
O robô (robo.py) já faz login nos CRM das 4 lojas com conta própria (cofre DS-CacaFSBOs). O portal_import.py já envia leads por /api/fsbo-import.
O que o robô faz (e só isto)
- Leads para o portal.
- Relatório do CRM por loja para a área do diretor.
- FSBOs diários para a aba FSBOs.
Não mete angariações, vendas, CPCVs, visitas nem nenhum outro número no portal. A produção é do diretor. Um erro de leitura do CRM nunca vira um número errado no portal sem ninguém ver.
Porque não usar a API do X-IMO
Pedir API ao X-IMO abre um precedente de segurança. Não é preciso: o robô usa a conta própria do grupo para ler dados do próprio grupo.
6 Ciclo de faturação e DS Points novo
Todos os números do portal (angariações, visitas, leads, DS Points, comissões, metas) pertencem ao ciclo que vai do dia 26 de um mês até ao dia 25 do mês seguinte. Ao lado de cada número, o portal mostra sempre o período.
Estrutura real das comissões (fonte: DSI_final_v2, Drive)
O DSI_final_v2 decompõe os ganhos do consultor em quatro categorias. O portal deve espelhar esta estrutura:
| Consultor | Loja | € Angariação | € Venda | € Dir. Comercial | € Dir. Loja | Total Ganho |
|---|---|---|---|---|---|---|
| Hugo Guedes | Monção | 19.765 | 8.768 | 7.463 | 939 | 36.935 |
| Thiago Silveira | Monção | 11.273 | 10.873 | 172 | 0 | 22.317 |
| Luis Silva | Valença | 18.478 | 13.093 | 0 | 0 | 31.571 |
| Jorge Rosas | Valença | 7.750 | 9.670 | 0 | 0 | 17.419 |
| Sónia Pedro | Santa Iria | 5.763 | 6.523 | 2.300 | 3.158 | 17.744 |
| Nuno Quinta | Santa Iria | 4.145 | 1.295 | 0 | 0 | 5.440 |
| … (lista completa no DSI_final_v2, Drive) | ||||||
Grupo 2026: Volume Vendas 11.425.917 € · Comissão Recebida 400.297 € · Comissões Pagas 173.725 € · Resultado 118.193 €
DS Points
- São do grupo Valores e Teorias, não do CRM.
- Fonte: relatório do diretor (regra de 01/11/2026). O robô nunca mete pontos.
- O portal recebe os pontos já calculados pelo diretor, não os recalcula.
Comissões dos consultores
- A comissão decompõe-se em: € Angariação, € Venda, € Dir. Comercial, € Dir. Loja (estrutura do DSI_final_v2).
- O diretor preenche os valores ao registar. O portal mostra o que cada consultor já recebeu e o que está em carteira.
7 Pipeline: estados e pagamento actualizado
O pipeline atual (Excel) tem dois estados. O portal passa a ter três:
Pagamento parcial no CPCV novo
Em alguns negócios a comissão é paga em duas tranches. O portal suporta:
| Campo | Tipo | Quem preenche | Notas |
|---|---|---|---|
comissao_bruta | Número (€) | Diretor | Total da comissão do negócio |
pago_no_cpcv | Número (€) ou null | Diretor | Valor recebido na assinatura do CPCV (pode ser 0 ou metade) |
pago_na_escritura | Número (€) ou null | Diretor | Valor recebido na escritura |
por_receber | Calculado | Portal | comissao_bruta − pago_no_cpcv − pago_na_escritura |
Pipeline atual (dados do Excel, 03/11/2026)
| Loja | Negócios | Comissão em Carteira | Previsto Este Mês | Sem Data |
|---|---|---|---|---|
| Monção | 17 (CPCV) + 11 (Escrit.) | 99.275 € | 38.085 € | 8 |
| Valença | 4 | 24.100 € | 0 € | 2 |
| Santa Iria | 3 | 22.180 € | — | — |
| Porto Bonfim | 0 | 0 € | 0 € | 0 |
| TOTAL | 24 | 145.555 € | 38.085 € | 10 |
Fonte: pipeline.xlsx lido a 03/11/2026.
8 As três camadas
Camada 1: Consultor (motivar, não burocratizar)
O consultor escreve só duas coisas: os seus objetivos próprios e o seu relatório semanal. Tudo o resto é leitura.
- Barra de progresso rumo aos objetivos próprios.
- Os meus leads (do robô).
- FSBOs atribuídos (ver secção 9).
- Funil: leads, angariações, visitas, propostas, fechados e taxa de conversão por passo.
- Comissão prevista vs recebida (€ Angariação, € Venda, € Dir. — estrutura do DSI).
- Meta do ciclo e ranking na loja e no grupo.
- Histórico completo com comparação (ver secção 10).
- Formação do grupo (acesso à Drive).
Camada 2: Diretor e Loja
- Registo rápido da produção por consultor, com o relatório do CRM ao lado. Rápido no telemóvel.
- Relatório do CRM com aviso de divergência.
- FSBOs da loja com estado por consultor.
- Mapa da equipa: consultor por linha, funil, conversão, atividade da semana.
- Objetivos e relatório semanal de cada consultor.
- Alertas acionáveis com responsável e prazo.
- Pipeline da loja por fase.
- Perfil completo de qualquer consultor (ver secção 10).
Camada 3: CEO e Grupo
- As 4 lojas lado a lado: comissão vs 20.000€, angariações, CPCVs, pipeline, tendência.
- Onde está o risco hoje.
- Disciplina de registo: que diretor registou e quando.
- FSBOs do grupo (resumo de todas as lojas).
- Drill-down: loja → diretor → consultor.
- Cada loja contra os 20.000€ mínimos e contra os 60.000€ do grupo.
9 Aba FSBOs no portal novo
O robô DS Caça FSBOs corre segunda a sábado (04:30 + repetições às 07:30 e 09:00). Agrega FSBOs por concelho (Minho) e gerava um PDF diário por email. Esse conteúdo passa agora a carregar também no portal.
Nova aba "FSBOs"
- Lista de FSBOs do dia, por loja e consultor atribuído.
- Data do lote, fonte e número de contactos novos.
- Se o robô falhou, mostrar data do último lote bem-sucedido com aviso.
Ações do consultor em cada FSBO
| Botão | O que regista | Próximo estado |
|---|---|---|
| Follow Up | Contacto tentado, aguarda resposta | Pendente |
| Colega | Caso passado a colega da loja ou de outra loja | Transferido |
| Marcar Visita | Visita confirmada (data e hora) | Visita Marcada |
- Ao clicar qualquer botão, abre campo de descrição livre (até 500 caracteres). Opcional mas recomendado.
- Cada registo guarda: consultor, botão, descrição, data e hora.
O que o diretor e o CEO veem
- Diretor: todos os FSBOs da loja, estado por consultor, alerta de FSBOs sem resposta há mais de X dias.
- CEO: resumo do grupo — total de FSBOs do dia, quantos têm feedback, quantos têm visita marcada, por loja.
Rotas sugeridas
POST /api/fsbos— só robô (chave de serviço). Carrega lote diário.GET /api/fsbos?loja=X&data=YYYY-MM-DD— lista da loja na data.POST /api/fsbos/:id/feedback— consultor. Regista botão + descrição.GET /api/fsbos/resumo— CEO/Diretor. Totais por loja.
- Robô carrega lote e aparece na aba no próprio dia.
- Consultor clica "Follow Up", escreve nota, registo aparece no perfil dele e no mapa do diretor.
- Consultor de Monção não vê FSBOs de Valença.
- CEO vê resumo de todas as lojas.
- Se robô falhou, aba mostra "último lote: [data anterior]" em destaque.
10 Histórico completo do consultor novo
Secção "Agora" — ciclo atual
- Angariações, visitas, propostas, CPCVs, escrituras do ciclo em curso.
- DS Points; comissão recebida (€ Ang. + € Venda + € Dir.) + em carteira.
- Taxa de conversão por passo. Objetivos próprios. Último relatório semanal. FSBOs.
Secção "Histórico" — presente vs passado
- Gráfico de barras: produção por ciclo, últimos 12 meses, com o número em cada barra.
- Gráfico de linha: evolução DS Points mês a mês.
- Gráfico de linha: comissão recebida por ciclo.
- Comparação direta: ciclo atual vs mesmo ciclo do ano anterior.
- Taxa de conversão por ciclo: onde melhorou, onde piorou.
Secção "Registos semanais"
Lista de todos os relatórios semanais submetidos, mais recente primeiro.
Secção "Pipeline pessoal"
Todos os negócios do consultor em carteira, com estado e previsão.
Gráficos históricos só ficam completos depois da Fase 2b (importação dos Excels). Antes disso, o portal mostra dados desde a data de arranque do registo no portal.
11 Os KPIs certos
| KPI | Para quê | Nível | Estado |
|---|---|---|---|
| Angariações, escrituras, comissão, DS Points | Resultados base | Todos | Já existe |
| Leads, visitas, propostas | Ver onde o funil trava | Todos | Novo |
| Taxa de conversão por passo | A métrica em falta hoje | Todos | Novo |
| Comissão paga vs em carteira (€ Ang. / € Venda / € Dir.) | Controlo financeiro | Todos | Novo |
| Dias no mercado (DOM) | Imóveis parados | Loja, grupo | Novo |
| Rácio preço pedido / preço fechado | Qualidade da avaliação | Loja, grupo | Novo |
| Previsão de fecho do ciclo | O que está para entrar | Loja, grupo | Novo |
| FSBOs com feedback / sem feedback | Taxa de resposta | Todos | Novo |
12 Design e utilidade actualizado
Cores e tipografia
- Tema escuro. Azul DS
#004AADcomo cor de destaque. Texto branco. - Fonte: Gotham Rounded (ou Inter como fallback).
- Gráficos com os números escritos em cada barra/ponto. Medalhas e pódio com mais vida.
Melhorias de utilidade
- Telemóvel primeiro. Registo do diretor e FSBOs do consultor em segundos.
- A ação ao lado do número (botões "marcar reunião", "registar" dentro de alertas).
- Drill-down em todo o lado. Clicar num número leva ao detalhe.
- Semáforo consistente: vermelho abaixo de 50% da meta do ciclo.
- Origem à vista: ao pé de cada número, quem registou e quando.
Aprovação do aspeto (Fase 1b)
Antes de alastrar ao portal inteiro, mostrar ao CEO um ou dois ecrãs (consultor + diretor) para aprovação.
13 Segurança
Falha a corrigir: autorização por loja
/api/portal-data devolve dados das 4 lojas a qualquer login. /api/data?key=kanban:outra-loja responde ao Diretor de outra loja.
Correção: em cada pedido, confirmar se a loja pedida está nas lojas do utilizador. Se não, 403. Mesmo mecanismo que já existe em /api/users-list.
Afinações
- Cabeçalhos de segurança (CSP, HSTS, anti-clickjacking) nas regras da Cloudflare.
- Senha inicial 1234 expira em 24–48 horas.
Conta de serviço do robô
Rotas de escrita do robô (/api/fsbo-import, /api/fsbos, relatório CRM) só aceitam a conta de serviço própria do robô. O portal_import.py deixa de usar a conta master do CEO.
Regras de escrita
- Diretor: só regista na sua loja.
- Consultor: só os seus objetivos, relatórios e feedback FSBOs.
- Diretor ou CEO: marcam pagamento no pipeline.
- Cada registo guarda
registado_poreregistado_em. Alteração guarda valor anterior.
14 Roadmap por fases
- Corrigir autorização por loja (leitura e escrita).
- Cabeçalhos de segurança na Cloudflare.
- Expiração do 1234.
- Conta de serviço para o robô.
- Ação ao lado dos alertas (tarefa com responsável e prazo).
- Consultor de Monção que peça dados de Valença recebe 403.
- Diretor de Valença que registe em Monção recebe 403.
- Pedido a
/api/fsbo-importsem chave do robô recebe 401. - Clicar num alerta cria tarefa com responsável e prazo.
- Design mobile-first com tema escuro, azul DS, gráficos com números, medalhas.
- Mostrar ao CEO um ou dois ecrãs para aprovação antes de alastrar.
- Registo rápido da produção pelo diretor (respeitando ciclo 26-25), no telemóvel.
- Pipeline com três estados: CPCV Assinado → Escriturado → Pago.
- Campos de pagamento parcial no CPCV.
- Relatório do CRM na área do diretor, com aviso de divergência.
- Decomposição da comissão em € Angariação, € Venda, € Dir. Comercial, € Dir. Loja (estrutura do DSI_final_v2).
- Diretor regista angariação em menos de 1 minuto no telemóvel, aparece logo no consultor, loja e grupo.
- Negócio escriturado só muda para "Pago" quando diretor/CEO o marca.
- Registo de pagamento parcial no CPCV (ex: 2.000€ de 4.000€): portal mostra 2.000€ em carteira.
- Nova aba "FSBOs": robô carrega diariamente o mesmo que punha no PDF.
- 3 botões por contacto (Follow Up, Colega, Marcar Visita) + campo de descrição.
- Diretor vê FSBOs da loja com estado dos consultores.
- CEO vê resumo do grupo.
- Alarme de falha do robô com data do último lote bem-sucedido.
- Robô carrega lote diário e aparece na aba FSBOs.
- Consultor clica "Follow Up", escreve nota — aparece no mapa do diretor.
- Consultor de Monção não vê FSBOs de Valença.
- Se robô falhou, aba mostra "último lote: [data anterior]".
- Importar histórico dos 3 Excels (produção, DS Points, comissões, metas).
- Portal como único sítio de registo a partir do corte (dia 26 de um ciclo).
- Um ciclo inteiro em paralelo (portal + Excel) antes do corte para validação.
- Perfil completo do consultor: histórico com gráficos e números, comparação presente vs passado.
- Rankings saem do portal (validar contra Excel antes do corte).
- Ninguém abre o Excel para registar ou acompanhar.
- Consultor vê gráfico de barras da produção dos últimos 12 meses com valor em cada barra.
- Rankings batem certo com o último Excel.
- Registo do consultor limitado a objetivos e relatório semanal.
- Barra de progresso rumo aos objetivos próprios, com dicas quando o funil trava.
- Formação do grupo embebida (manual V&T, VENDE-C, redes, Canva) da Drive.
- Pipeline por fase, previsão de fecho do mês, dias no mercado, rácio preço.
- Alertas inteligentes: imóvel parado há X dias, lead sem seguimento, CPCV a chegar à escritura.
- Drill-down completo CEO → loja → consultor.
- 4 lojas vs 20.000€ e vs 60.000€ do grupo num só ecrã.
- Ligação às rotinas existentes (PABLO, scorecard, caça FSBOs).
15 Decisões tomadas
- Robô só para leads, relatório CRM e FSBOs (CEO, 03/11).
- Pipeline com três estados (CEO, 03/11): CPCV Assinado → Escriturado → Pago.
- Pagamento parcial no CPCV (CEO, 03/11).
- Ciclo 26 a 25: todos os números respeitam este ciclo, com o período sempre visível.
- DS Points do relatório do diretor (regra 01/11).
- Comissão em 4 categorias (estrutura DSI_final_v2): € Angariação, € Venda, € Dir. Comercial, € Dir. Loja.
- FSBOs com aba própria (CEO, 03/11): 3 botões de feedback + descrição livre.
- Histórico completo no perfil do consultor (CEO, 03/11): gráficos com números, comparação presente vs passado.
- Mobile-first (CEO, 03/11).
- Programador já na Fase 1 (CEO, 03/11): segurança + conta de serviço do robô + Fase 1b do aspeto em paralelo.
16 Modelo de dados mínimo
Utilizador
utilizador { id: string user: string nome: string papel: CEO | diretor | loja | consultor | robo lojas: string[] // loja_ids acessíveis }
Registo de produção (pelo diretor)
producao { id: string loja_id: string consultor_id: string tipo: angariacao | visita | proposta | cpcv | escritura | venda | arrendamento ref_imovel: string | null valor: number comissao_ang: number // € Angariação (estrutura DSI) comissao_venda: number // € Venda comissao_dir_comercial: number // € Dir. Comercial comissao_dir_loja: number // € Dir. Loja comissao_bruta: calculado // soma das 4 categorias pago_no_cpcv: number // 0 ou metade — split de comissão pago_na_escritura: number por_receber: calculado // comissao_bruta − pago_no_cpcv − pago_na_escritura estado: CPCV_Assinado | Escriturado | Pago data_cpcv: date | null data_escritura: date | null data_pagamento: date | null ciclo: string // "2026-11" = ciclo 26/10 a 25/11 registado_por: utilizador_id registado_em: datetime valor_anterior: object | null }
FSBO e feedback
fsbo { id: string lote_id: string // agrupa todos os FSBOs do mesmo dia loja_id: string consultor_id: string contacto: object // nome, telefone, imóvel, fonte data_lote: date } fsbo_feedback { id: string fsbo_id: string consultor_id: string acao: follow_up | colega | visita descricao: string // max 500 chars data_visita: datetime | null // só para acao=visita criado_em: datetime }
Relatório CRM (robô), objetivo e relatório semanal (consultor)
relatorio_crm { id: string loja_id: string data: date linhas: { consultor_id, tipo, ref_imovel, data }[] } objetivo_consultor { id: string consultor_id: string tipo: string valor_meta: number ciclo: string } relatorio_semanal { id: string consultor_id: string semana: string // "2026-W44" conteudo: object criado_em: datetime }
Regras de autorização
Leitura: se papel == CEO, passa. Senão, a loja_id pedida tem de estar em utilizador.lojas, ou 403.
Escrita por papel:
- Consultor: objetivos próprios, relatório semanal, feedback FSBOs.
- Diretor: produção, DS Points, comissões e metas — só na sua loja.
- Robô: leads, FSBOs e relatórios CRM. Nada mais.
- Diretor ou CEO: marcar pagamento no pipeline (estado → Pago).
- Toda a escrita guarda
registado_poreregistado_em. Alteração guarda valor anterior.