7.6 KiB
Portal público — estrutura e serviços
Implementação local de 27/09/2026, seguindo as sete áreas pedidas pelo proprietário.
Páginas e percursos
| Área | Caminho e comportamento |
|---|---|
| Página inicial | /: cabeçalho, banner, sectores activos, Como Investir, oportunidades em destaque, documentos essenciais publicados, apoio e rodapé. |
| Oportunidades | /oportunidades: pesquisa, sector, província, estado de preparação/maturidade e dimensão por montante mínimo/máximo e moeda. Valores em moedas diferentes nunca são somados ou comparados automaticamente. Só aparecem oportunidades publicadas. |
| Ficha de oportunidade | /oportunidades/{slug}: ficha e manifestação de interesse existentes. |
| Sectores prioritários | /sectores e /sectores/{slug}: descrição do cadastro, oportunidades publicadas e acesso ao percurso de preparação e apoio. |
| Como Investir | /como-investir: seis etapas de preparação, documentação, enquadramento, parceiros e acompanhamento; roteiro de orientação, sem inventar prazos ou requisitos legais obrigatórios. |
| Legislação e Incentivos | /legislacao: documentos públicos catalogados como legislação, pesquisáveis por título, categoria e tema, com referência e download. |
| Documentos e Formulários | /documentos: catálogo público, pesquisa, categorias, temas e acesso aos formulários digitais. |
| Apoio ao Investidor | /apoio: formulário, protocolo, contactos configuráveis e FAQ sobre utilização do portal. |
| Bolsa de Parcerias | /parcerias: propostas publicadas, filtros e pedido de contacto intermediado. Conta com email verificado pode propor; gestor autorizado publica ou retira. Contactos e identidade da conta não são expostos na listagem pública. |
| Simulador Fiscal | /simulador-fiscal: cálculo aritmético de cenários com base, taxa e redução introduzidas pelo utilizador. Não incorpora taxas legais, elegibilidade ou concessão automática de incentivos. |
| Formulários | /formularios/investidor e /formularios/empresa: recolha de dados de contacto, sector/assunto, empresa quando aplicável, mensagem e consentimento; gera protocolo. Não equivale a constituição ou registo legal de empresa. |
| Balcão Virtual | /balcao-virtual: autenticação e email verificado; mostra pedidos enviados com a conta e estado das suas propostas. Liga ao painel existente da carteira. |
O layout partilhado acrescenta breadcrumbs e o botão fixo Contactar Apoio ao Investidor às páginas Inertia, incluindo autenticação e gestão. Páginas de erro produzidas directamente pelo servidor não passam por este layout.
Gestão e dados
/management/portal-services permite carregar PDF/TXT autorizado (até 10 MiB), catalogar, publicar e retirar documentos, e rever/publicar/retirar propostas de parceria. Usa o privilégio existente manage-portal, sem criar novos gestores e sem exigir uma segunda pessoa para publicar.
Os ficheiros ficam no storage privado e os metadados no cadastro documents. Downloads só funcionam para documentos activos, classificados como públicos e catalogados como publicados; verificam caminho real e SHA-256. Reclassificar, eliminar, retirar ou alterar o ficheiro bloqueia o download. Não foi instalado um motor antivírus.
A migration aditiva 2026_09_27_120000_public_portal_services cria portal_resources e portal_partnerships; rollback com dados é recusado. Nenhum documento legal, contacto institucional ou anúncio fictício foi inserido. Sem conteúdo publicado, as páginas apresentam estado vazio e caminho para pedir apoio.
Os pedidos reutilizam interest_requests, o serviço transaccional InterestSubmission e a gestão /management/interests, com tipo e contexto em metadata. Repetir a mesma chave e payload não duplica pedido ou evento de integração; reutilizar a chave com dados/conta diferentes devolve 409. Consentimento é obrigatório. O Balcão filtra pelo ID da conta gravado no envio, nunca por coincidência de email. Pedidos anónimos geram protocolo, mas não são associados retroactivamente a contas.
Os eventos da outbox permanecem pendentes conforme a integração existente. Não foram enviados emails nem activado SuiteCRM. Os estados dos pedidos são actualizados na gestão existente; o Balcão não oferece chat nem submissão automática a entidades públicas.
Contactos e conteúdo
Configurar PORTAL_SUPPORT_EMAIL, PORTAL_SUPPORT_PHONE, PORTAL_SUPPORT_ADDRESS e PORTAL_SUPPORT_HOURS no ambiente e limpar cache de configuração quando necessário. Campos vazios não geram contactos fictícios. Publicar os documentos reais no catálogo para preencher Legislação, Documentos e os destaques essenciais da página inicial.
Validação
Execução final: 124 testes / 1.284 verificações aprovadas. PHPStan nos controllers alterados, Pint, TypeScript e build aprovados.
Testes funcionais cobrem páginas públicas, acesso autenticado, privacidade dos pedidos, consentimento, idempotência, moderação de parcerias, ausência de identidade pública, classificação/checksum dos downloads, documentos essenciais e filtros monetários. Os testes HTTP desactivam SSR para não dependerem do servidor Vite de desenvolvimento; a protecção contra chamadas HTTP inesperadas da IA permanece activa.
Edge headless: 11 páginas públicas/autenticação verificadas a 390×844, com breadcrumbs, botão de apoio visível e sem transbordo horizontal ou excepções JavaScript. Capturas de início e apoio inspeccionadas. Fluxos privados, submissões e downloads foram verificados nos testes PHP com dados sintéticos em base isolada, não em contas reais no navegador.
Página inicial também verificada a 1440×1000. Cenário fiscal exercitado no navegador: base 1.000 × taxa 10% × (1 − redução 50%) = 50. Resultados em public-portal-browser-validation.json.
Antes da migration local foi criado e restaurado o backup de 74 tabelas em storage/app/private/portal-services-backup-20260927-090641/. O backup completo anterior permanece em C:/laragon/backups/portal-investidor-20260927-101224/ e representa o estado anterior a esta entrega.