Files
Investidor-V2/deploy/local/README.md
2026-10-20 11:39:25 +02:00

5.5 KiB

Execução local no Windows

Ambiente de demonstração novo autorizado em 19/10/2026. PostgreSQL/PostGIS isolado em 127.0.0.1:55441, base investmoz_local_test, volume Docker investmoz-local-qa_postgres-qa. Não contém os dados do portal activo. O MySQL existente não serve este esquema PostgreSQL e é preservado.

Arrancar

Inicie Docker Desktop. Na raiz do projecto:

./deploy/local/start.ps1

Com a base já iniciada e preparada, basta:

composer run dev

Abra http://127.0.0.1:8000. O comando inicia Laravel, o worker da fila e Vite. Use Ctrl+C para terminar. A base conserva os dados entre arranques.

composer run dev aguarda até 900 segundos se o PostgreSQL estiver indisponível ou em recuperação. Mostra o motivo e o progresso, sem revelar credenciais. Erros de autenticação ou de base inexistente interrompem o arranque imediatamente. O diagnóstico directo php artisan portal:dev-check continua sem espera; use --wait=900 para aguardar. O comando não inicia Docker nem executa migrations.

O script de arranque executa estes passos, parando no primeiro erro:

docker compose --env-file .env -f deploy/local/compose.yaml up -d --wait --wait-timeout 900
php tools/local-qa-bootstrap.php
composer run dev

O start.ps1 usa --wait-timeout 900. O healthcheck admite 600 segundos de arranque antes de contar falhas e reconhece imediatamente um servidor pronto. O Compose concede 60 segundos para um encerramento normal do PostgreSQL.

PostgreSQL em recuperação

Em 20/10/2026, os registos mostraram um encerramento incorrecto seguido de recuperação entre 09:59 e 10:07 (Africa/Johannesburg). Durante esse período, o servidor recusava ligações com the database system is in recovery mode. O teste anterior ocultava a causa e terminava na primeira falha.

Se voltar a acontecer, deixe a recuperação concluir e consulte:

docker compose --env-file .env -f deploy/local/compose.yaml ps -a
docker compose --env-file .env -f deploy/local/compose.yaml logs --tail 40 postgres
php artisan portal:dev-check --wait=900

Se o contentor estiver parado, execute ./deploy/local/start.ps1 com Docker Desktop iniciado. Não remova o volume nem reinicie repetidamente durante a recuperação. Para parar a base normalmente, use docker compose --env-file .env -f deploy/local/compose.yaml stop postgres antes de encerrar Docker Desktop ou o computador.

A espera, os diagnósticos e estes prazos são escolhas técnicas para a correcção solicitada em 20/10/2026, sob as decisões Tempo de AGENTS.md; não criam regras de negócio nem alteram dados activos.

O preparador verifica configuração e identidade real da base antes de migrar. Só admite investmoz_local_test, TCP local e porta real 55441, sem DB_URL nem configuração em cache. Executa migrations em testing, como exigem as guardas existentes. Só cria os dados iniciais quando sectores e utilizadores estão vazios; um novo arranque não redefine contas. Nunca usa migrate:fresh.

As quatro migrations mais recentes também admitem QA com identidade verificada por IsolatedQaDatabase. A alternativa de instalação autenticada no activo é preservada. A excepção QA é uma escolha técnica consistente com as migrations anteriores, sem activar funcionalidades ou publicar dados.

Conta do seeder existente, exclusivamente para esta demonstração: test@example.com / password. Não é um administrador do portal. As regras existentes de autenticação, MFA e instalação autenticada mantêm-se.

Dependências e configuração

  • PHP >= 8.4.1, com pdo_pgsql e pgsql activos no PHP do terminal.
  • Node 24, Composer, dependências de composer.lock e package-lock.json.
  • Docker Desktop com contentores Linux.
  • .env local com PostgreSQL, porta 55441, base e utilizador do Compose e DB_PASSWORD privado. A chave da aplicação existente deve ser preservada.
  • O primeiro build obtém as fontes configuradas de fonts.bunny.net; precisa de rede.

O bootstrap cria as pastas de cache, vistas, sessões e logs antes da configuração Laravel. php artisan portal:dev-check verifica os requisitos essenciais sem alterar registos nem mostrar credenciais. Falhas interrompem composer run dev antes de iniciar os três processos.

php artisan portal:dev-check
php artisan wayfinder:generate --with-form
npm run types:check
npm run build

Os testes que usam RefreshDatabase devem usar outra base investmoz_test no mesmo servidor QA; nunca a base de demonstração nem o activo. tests/TestCase.php mantém as guardas e o bloqueio contra testes concorrentes.

Origem e limites

Origem: pedido expresso de correcção e configuração local e escolha do responsável por uma base nova de demonstração em 19/10/2026. Portas, Compose, pastas automáticas e verificação de arranque são escolhas técnicas, sem novas regras organizacionais. Aplicam-se as decisões Tempo de 12/10/2026 e a separação QA/activo de AGENTS.md. Não constitui implantação em produção nem aceitação funcional global da matriz existente em docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv.

Não remover o volume Docker para actualizar. O .env anterior e o php.ini anterior à activação PostgreSQL foram conservados em storage/app/private/. O correio local usa o canal log. Integrações externas e serviços opcionais precisam das configurações próprias já previstas no projecto; este arranque não lhes atribui autorização, publicação ou credenciais.