5.6 KiB
Validação da extensão — 28/09/2026
Verificações executadas
-
Em 28/09, protecção de versões das fichas territoriais aplicada localmente. Backup
storage/app/private/portfolio-version-backup-20260928-011346/restaurado e conferido em 93 tabelas; após migration, apenasmigrationsmudou de 34 para 35. As 29 fichas publicadas foram preservadas comversion_no=1. A suite inclui recusa de gravação/publicação obsoletas com HTTP 409. O teste de navegador anteriormente registado não foi repetido para este novo controlo; cobertura desta alteração por testes HTTP, TypeScript, lint e build. -
Suite PHP completa: 138 testes, 1.463 verificações aprovadas, em PostgreSQL/PostGIS isolado na porta 55441, base
portal_services_test. -
PHPStan completo e verificação TypeScript aprovados; análise focada repetida após as alterações finais. Pint aplicado aos novos ficheiros PHP. Lint dos componentes alterados executado; corrigido tratamento de falha da cópia de ligação.
-
Build Vite aprovado. As verificações de PHP não correram durante a substituição do manifesto do build.
-
O contrato OpenAPI descreve 27 operações, correspondentes às 25 rotas registadas (referências e empresas com ID opcional correspondem a criar e editar). JSON, referências internas e cobertura de métodos/rotas conferidos; isto não substitui validação completa por uma ferramenta OpenAPI externa.
-
Backup anterior à migration restaurado e conferido em 76 tabelas. Depois da migration: 88 tabelas; 114 opções semeadas, restantes tabelas novas vazias. Contagens de negócio anteriores preservadas;
migrationspassou de 32 a 33 esessionsde 1 a 2. Manifesto e reconciliação permanecem no directório privado do backup. -
Segundo backup restaurado e conferido nas 88 tabelas antes da extensão de perfil/conversa; após a segunda migration, 93 tabelas e apenas alteração da contagem de
migrations(33 → 34). -
Latência local: cinco pedidos HTTP sequenciais por endpoint, medianas de 170,67 ms na pesquisa, 173,39 ms nas referências e 160,86 ms no mapa. Servidor PHP de desenvolvimento, pequeno cadastro local, sem concorrência; não é SLA nem teste de carga.
Navegador
Microsoft Edge headless via DevTools Protocol, 390×844 e 1440×1000. Evidência pública: onze páginas, breadcrumbs, apoio fixo, ausência de transbordo horizontal; cenário aritmético do simulador confirmado. Nenhum erro JavaScript observado.
Evidência autenticada: dezoito observações de ecrãs/etapas, com contas e oportunidade exclusivamente sintéticas na base isolada. Foram exercitados:
- Educação e ficha pública.
- Login, área pessoal e criação de rascunho.
- Identificação, participação, objectivo e necessidade educativa com quantidade/unidade.
- Gravação preservando a etapa actual.
- Upload privado pela API multipart, com versão incrementada.
- Revisão, consentimento, submissão e protocolo visível na área pessoal.
- Reenvio idempotente com o mesmo protocolo.
- Login de gestor, referências, edição de contexto e retirada da publicação.
- Leitura do pedido pelo gestor e recusa 404 a outro investidor.
- Perfil e empresa declarada, pré-preenchimento da manifestação, conversa investidor/apoio, consulta de versão histórica e marcação de notificação como lida.
- Recusa 419 de pedido cross-site com sessão mas sem token. O Laravel 13 aceita pedidos same-origin pelo cabeçalho de origem validado; esse comportamento foi conferido no middleware instalado, não confundido com desactivação da protecção.
Não foram detectados campos visíveis sem rótulo, transbordo horizontal ou erros JavaScript nesses ecrãs. A primeira tentativa usou uma porta ocupada por outro servidor PHP sem driver PostgreSQL; o teste foi repetido com servidor dedicado na porta 18027. A fixture de QA foi corrigida para marcar explicitamente o email verificado, sem alterar utilizadores operacionais.
O upload foi exercitado pela API a partir da sessão real do navegador; o selector nativo de ficheiros não foi automatizado. As verificações de autorizações complementam os testes HTTP, que cobrem adulteração de checksum, opções de grupo errado, ausência de consentimento, retirada de publicação, conflito de versão, relações territoriais cumulativas, CSV e isolamento.
Repetição automatizada
Com uma base descartável terminada em _test, PostgreSQL/PostGIS e variáveis DB_* explícitas:
php vendor/bin/phpunit --filter 'InvestmentUnification|InvestmentPortfolio|PublicPortalNavigation' --do-not-cache-result
php vendor/bin/phpunit --filter InvestmentWorkspace --do-not-cache-result
php vendor/bin/phpunit --do-not-cache-result
php vendor/bin/phpstan analyse --no-progress --memory-limit=512M
npm run types:check
npm run build
RefreshDatabase recria tabelas no ambiente de teste. Não executar esses comandos de teste contra a base operacional. Em PowerShell com restrições a scripts, usar npm.cmd.
Limites
Os ensaios não demonstram WCAG 2.2 AA integral, experiência com leitor de ecrã, carga concorrente, desempenho de produção, entrega de notificações ou SuiteCRM externo, nem integridade da base remota ainda inacessível. O mapa foi validado com pontos sintéticos nos testes PostGIS e estado vazio quando não há coordenadas públicas. Não foi desenhada cartografia fictícia para preencher a interface.
A aprovação de requisitos pelo proprietário foi respeitada. Homologação com participantes, formação, deploy remoto e monitorização no destino continuam por executar; não são etapas que se possam declarar aprovadas apenas com esta evidência local.