71 lines
4.0 KiB
Markdown
71 lines
4.0 KiB
Markdown
# Estado do projeto e handoff
|
|
|
|
**Atualizado em:** 4 de agosto de 2026
|
|
**Fase:** Fase 1 concluída; primeiro fluxo vertical da Fase 3 concluído
|
|
**Último agente:** Codex
|
|
|
|
## Resultado disponível
|
|
|
|
- Projeto oficial Laravel 13 React Starter Kit criado.
|
|
- Autenticação local via Fortify, recuperação de palavra-passe, verificação de email, 2FA e passkeys.
|
|
- Registo público desativado conforme o plano.
|
|
- Estrutura relacional de utilizadores, identidades externas, perfis e permissões.
|
|
- Cache local de ativos Snipe-IT.
|
|
- Modelo completo inicial para reservas, itens, aprovações, bloqueios, entrega/devolução, sincronizações e auditoria.
|
|
- Proteção PostgreSQL contra períodos sobrepostos para o mesmo equipamento através de `EXCLUDE USING gist` e intervalos `[início, fim)`.
|
|
- Serviço de disponibilidade que considera estado local, atribuição, reservas e bloqueios.
|
|
- Criação transacional de uma requisição pendente com vários equipamentos e registo de auditoria.
|
|
- Dashboard pessoal, catálogo com pesquisa/filtros, formulário de nova requisição e histórico.
|
|
- Docker Compose com Nginx, PHP-FPM, PostgreSQL, Redis, Node/Vite, filas, scheduler e Mailpit.
|
|
- Dados fictícios e duas contas locais para desenvolvimento.
|
|
|
|
## Limites conhecidos
|
|
|
|
- A API real do Snipe-IT ainda não está implementada. O catálogo utiliza dados fictícios do seeder.
|
|
- Microsoft Entra ID ainda não está implementado; as variáveis de ambiente já estão definidas.
|
|
- Aprovação, rejeição, entrega e devolução têm tabelas preparadas, mas ainda não possuem ações ou interface.
|
|
- As notificações e jobs de expiração ainda não foram implementados.
|
|
- As políticas de autorização finas ainda não foram ligadas às rotas; nesta fase todas as rotas funcionais exigem utilizador autenticado, verificado e ativo.
|
|
- A disponibilidade apresentada no catálogo ainda não recebe um período; a validação real ocorre ao submeter.
|
|
|
|
## Próxima tarefa recomendada
|
|
|
|
Implementar a **Fase 2 — cliente e sincronização Snipe-IT**:
|
|
|
|
1. abrir `docs/ARCHITECTURE.md` e `config/services.php`;
|
|
2. criar `app/Integrations/SnipeIt/SnipeItClient.php`, DTOs, mapper e exceções;
|
|
3. implementar paginação, timeout, retry limitado e token de leitura;
|
|
4. criar `AssetSyncService`, job e comando `snipe:sync-assets`;
|
|
5. testar com `Http::fake()` paginação, falhas e desativação de ativos ausentes;
|
|
6. criar página administrativa de diagnóstico apenas para administradores;
|
|
7. atualizar este documento e o changelog.
|
|
|
|
## Testes da última sessão
|
|
|
|
Validação concluída em 4 de agosto de 2026:
|
|
|
|
- `docker compose exec -T app composer test`: passou;
|
|
- Laravel Pint: 78 ficheiros sem desvios;
|
|
- PHPStan/Larastan nível 7: 59 ficheiros, zero erros;
|
|
- Pest: 44 testes passaram, 157 asserções e 2 testes de registo ignorados por a funcionalidade estar deliberadamente desativada;
|
|
- TypeScript (`tsc --noEmit`): passou;
|
|
- ESLint: passou;
|
|
- Prettier: passou;
|
|
- Vite: build de produção concluído, 2304 módulos transformados;
|
|
- PostgreSQL 17: `migrate:fresh --seed` concluído, incluindo extensão `btree_gist` e restrição de exclusão temporal;
|
|
- smoke test HTTP: `/login` respondeu com estado 200 através do Nginx;
|
|
- Vite em Docker: URL pública, HMR e CORS verificados em `localhost:5173`; corrigida a página em branco causada pela publicação anterior de `0.0.0.0:5173`;
|
|
- verificação visual no browser integrado: não executada devido a uma política administrativa temporariamente indisponível no browser desta sessão; não foi detetado erro da aplicação.
|
|
|
|
## Decisões pendentes do contexto institucional
|
|
|
|
Estas decisões não bloqueiam o desenvolvimento com defaults seguros, mas devem ser confirmadas antes do piloto:
|
|
|
|
- versão e URL da instância Snipe-IT;
|
|
- categorias e estados requisitáveis;
|
|
- tenant, client ID e redirect URI do Entra ID;
|
|
- matriz final de aprovadores por categoria/departamento;
|
|
- duração máxima, antecedência e margens por categoria;
|
|
- domínio institucional e método de emissão TLS;
|
|
- SMTP institucional.
|