This commit is contained in:
@@ -89,7 +89,7 @@ Validação concluída em 5 de agosto de 2026:
|
||||
- `docker compose exec -T app composer test`: passou;
|
||||
- Laravel Pint: 141 ficheiros sem desvios;
|
||||
- PHPStan/Larastan nível 7: 107 ficheiros, zero erros;
|
||||
- Pest: 108 testes passaram, 609 asserções e 2 testes de registo ignorados por a funcionalidade estar deliberadamente desativada;
|
||||
- Pest: 110 testes passaram, 617 asserções e 2 testes de registo ignorados por a funcionalidade estar deliberadamente desativada;
|
||||
- TypeScript (`tsc --noEmit`): passou;
|
||||
- ESLint: passou;
|
||||
- Prettier: passou;
|
||||
@@ -110,7 +110,7 @@ Validação concluída em 5 de agosto de 2026:
|
||||
- backup PostgreSQL real em formato custom criado com checksum e validado por `pg_restore --list`;
|
||||
- restauro real numa base temporária: passou e confirmou 12 migrations antes da remoção automática;
|
||||
- smoke tests via Nginx: `/health/live` devolveu `ok` e `/health/ready` devolveu `ready`.
|
||||
- diagnóstico de login local: a base de desenvolvimento estava vazia apesar de migrada; `db:seed --force` repôs 2 utilizadores ativos, 5 perfis e 18 ativos fictícios, sem substituir dados existentes;
|
||||
- diagnóstico de login local anterior à ligação de produção: a base de desenvolvimento estava vazia apesar de migrada; `db:seed --force` repôs 2 utilizadores ativos, 5 perfis e, nesse contexto sem Snipe-IT configurado, 18 ativos fictícios;
|
||||
- login real no browser validado com `demo@escola.pt`: redirecionou para `/dashboard` e não produziu erros de consola.
|
||||
- testes focados das salvaguardas Snipe-IT: 17 passaram, com 106 asserções, incluindo prova de ausência de `POST` em ativos atribuídos e check-in sem proveniência ou destinatário válidos;
|
||||
- tokens Snipe-IT confirmados como configurados e distintos; ambos responderam a uma consulta `GET` com sucesso, sem revelar credenciais ou URL;
|
||||
@@ -118,6 +118,10 @@ Validação concluída em 5 de agosto de 2026:
|
||||
- cache local após sincronização: 2367 ativos ativos, 716 atribuídos e 144 marcados como requisitáveis;
|
||||
- frontend: TypeScript, ESLint, Prettier e build Vite passaram novamente; Composer Audit sem avisos conhecidos;
|
||||
- smoke tests após a sincronização: liveness `ok`, readiness `ready` e `/login` HTTP 200.
|
||||
- nova recuperação do login após deteção de 0 utilizadores/0 perfis: seeder tornado idempotente e restrito a `local`/`testing`; repôs 2 utilizadores e 5 perfis sem alterar os 2367 ativos reais no cache;
|
||||
- login administrativo validado de ponta a ponta no browser integrado: `admin@escola.pt` redirecionou para `/dashboard` e apresentou as áreas administrativas;
|
||||
- testes específicos do seeder: reposição repetida sem duplicados e preservação do cache Snipe-IT configurado; suite total com 110 testes e 617 asserções;
|
||||
- regra permanente adicionada: testes Laravel usam `composer test`/SQLite em memória e nunca `php artisan test` diretamente sobre a configuração PostgreSQL local.
|
||||
|
||||
## Decisões pendentes do contexto institucional
|
||||
|
||||
|
||||
@@ -54,13 +54,15 @@ Um `POST /login` com resposta 302 seguido novamente de `/login` indica normalmen
|
||||
docker compose exec app php artisan tinker --execute="dump(App\\Models\\User::count());"
|
||||
```
|
||||
|
||||
Se o resultado for zero e esta for a base local descartável, repor apenas os dados fictícios com:
|
||||
Se o resultado for zero e esta for a base local descartável, repor as identidades de desenvolvimento com:
|
||||
|
||||
```bash
|
||||
docker compose exec app php artisan db:seed --force
|
||||
```
|
||||
|
||||
As contas são `demo@escola.pt` e `admin@escola.pt`, ambas com a palavra-passe de desenvolvimento `password`. Nunca executar o seeder para corrigir acessos em produção; aí deve ser usado o processo administrativo de contas/recuperação.
|
||||
As contas são `demo@escola.pt` e `admin@escola.pt`, ambas com a palavra-passe de desenvolvimento `password`. O seeder é idempotente e só atua em `local`/`testing`. Se o Snipe-IT estiver configurado ou já existir inventário no cache, repõe contas/perfis sem criar ativos fictícios. Nunca executar o seeder para corrigir acessos em produção; aí deve ser usado o processo administrativo de contas/recuperação.
|
||||
|
||||
Nunca executar `php artisan test` diretamente com a configuração local. Usar `docker compose exec -T app composer test`, que força SQLite em memória; testes com `RefreshDatabase` sobre a ligação PostgreSQL local podem deixar a base de desenvolvimento sem utilizadores.
|
||||
|
||||
## Atualização de código
|
||||
|
||||
|
||||
Reference in New Issue
Block a user