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

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.