Files
Investidor-V2/docs/investmoz/management.md
T
nala 250ac35fd1
tests / ci (push) Canceled after 0s
first commit
2026-09-28 10:01:09 +02:00

5.6 KiB

Gestão do portal

Acesso

A página /acesso-gestao, ligada no rodapé do portal, permite configurar a conta mais tarde. Apresenta entrada/registo, verificação pendente ou acesso à gestão conforme a sessão. Não cria contas nem revela a lista de emails autorizados. A verificação de email está activa no modelo User; o envio real depende da configuração de correio do ambiente. Nenhuma conta é verificada automaticamente.

Configurar PORTAL_MANAGER_EMAILS no .env com os emails autorizados, separados por vírgula. As contas devem existir e ter email verificado. A lista vazia bloqueia o acesso de todos os utilizadores. O registo público não concede privilégios. Após alterar a configuração, executar php artisan config:clear (ou reconstruir o cache de configuração no ambiente de implantação).

Esta lista limita o acesso à gestão local; não substitui a futura matriz de papéis e permissões de todos os domínios InvestMoz.

Páginas

  • /management/history: histórico protegido de criação/edição de sectores, oportunidades e revisão de pedidos. Guarda o responsável e os campos alterados; valores de textos livres e contactos não são copiados.

  • /dashboard: resumo para gestores com pedidos por estado, oportunidades publicadas e em rascunho, sectores activos e os cinco pedidos mais recentes. As contas sem autorização recebem apenas orientações de configuração, sem indicadores internos. Os totais são consultados no carregamento da página.

  • /management/interests: pesquisa por referência, nome e email; filtro por estado; paginação e consulta dos pedidos. A alteração de estado regista o utilizador autenticado e a data da última revisão.

  • /management/sectors: criação e edição de sectores, ordem e activação.

  • /management/opportunities: criação e edição, maturidade, moeda e valor, publicação, destaque e arquivo. Rascunhos e arquivos não aparecem na API pública.

  • /management/crm/leads: leads, pesquisa, responsável, qualificação humana e tarefas. A ficha do pedido permite convertê-lo em lead, com identificação explícita do investidor e próxima acção obrigatória. Repetir a conversão abre o mesmo lead.

  • /management/crm/investors: investidores e respectivos contactos. Um contacto partilhado entre investidores tem uma única ficha; a alteração reflecte-se nos vínculos.

  • /management/projects: cadastro de projectos, orçamento e calendário.

  • /management/clusters: cadastro de clusters, associação de projectos e etapas da cadeia de valor. Estes cadastros são internos; activar não publica nem aprova. Na ficha do cluster também é possível ligar etapas, retirar ligações preservando o histórico e gerir lacunas de investimento com localização, capacidade, justificação, estado e chamada para acção. A localização é descritiva; a chamada para acção ainda não constitui um formulário público de candidatura.

O histórico inclui também as alterações efectuadas nestes módulos. A cobertura actual e as funcionalidades ainda pendentes estão em upgrade-progress.md.

As rotas de alteração usam sessões e protecção CSRF do Laravel. O servidor valida os dados e verifica a autorização em todas as rotas. Os formulários não aceitam atribuição de privilégios. Não há eliminação definitiva de pedidos ou catálogo. As alterações do catálogo invalidam o cache da página inicial nos dois idiomas.

O catálogo administrativo permite pesquisar nome/título, slug e referência, filtrar por estado e, nas oportunidades, por sector. Os filtros ficam no URL, são preservados na paginação e podem ser limpos. Os indicadores do painel abrem as listas filtradas correspondentes. A pesquisa não distingue maiúsculas de minúsculas. Os testes de gestão incluem combinação de filtros, paginação e rejeição de parâmetros inválidos (7 testes, 120 verificações).

Pedidos públicos

As novas referências usam IR-ANO-ULID, sem depender da contagem de linhas. As referências antigas continuam válidas. A restrição única da base mantém-se. Referências de oportunidades inexistentes, retiradas, eliminadas ou com publicação futura são rejeitadas com 422. Pedidos gerais podem omitir a oportunidade. Mensagens de excepção com SQL e dados pessoais não são escritas no log deste endpoint.

Testes

tests/Feature/PortalManagementTest.php cobre autorização, edição, publicação, arquivo, precisão monetária, cache, revisão, validação e persistência real de pedidos. Usar exclusivamente uma base descartável terminada em _test: os testes usam RefreshDatabase. Nunca apontar os testes para a base investemoz. O teste de envio conserva a validação DNS do email e requer resolução DNS; não envia email.

Após a implementação do painel, passaram 49 testes PHP (290 verificações), incluindo contagens reais, ausência de dados, limite e ordem dos pedidos recentes e protecção dos indicadores contra acesso por contas sem autorização.

Validação em 25/09/2026: 45 testes PHP (205 verificações) e 12 testes JavaScript passaram. TypeScript, lint e build passaram. No Edge foram verificados login, criação de sector, publicação e arquivo com consulta da API real, revisão de pedido e persistência após recarregar. Os testes de escrita usaram PostgreSQL isolado na porta 55440; os dados da aplicação não foram alterados.

# Configurar DB_HOST, DB_PORT, DB_USERNAME e DB_PASSWORD da instância isolada.
$env:DB_DATABASE = 'investmoz_test'
php vendor/bin/phpunit --filter PortalManagementTest --do-not-cache-result