122 lines
5.5 KiB
Markdown
122 lines
5.5 KiB
Markdown
# 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:
|
|
|
|
```powershell
|
|
./deploy/local/start.ps1
|
|
```
|
|
|
|
Com a base já iniciada e preparada, basta:
|
|
|
|
```powershell
|
|
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:
|
|
|
|
```powershell
|
|
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:
|
|
|
|
```powershell
|
|
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.
|
|
|
|
```powershell
|
|
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.
|