Files
reservas/CHANGELOG.md

5.6 KiB

Registo de alterações

Todas as alterações materiais são registadas neste ficheiro. O formato segue Keep a Changelog sem exigir versionamento formal durante o desenvolvimento inicial.

Não publicado

Adicionado

  • Fundação Laravel 13 com React 19, Inertia 3, TypeScript, Tailwind 4 e Fortify.
  • Infraestrutura Docker Compose para Nginx, PHP-FPM, PostgreSQL, Redis, Vite, filas, scheduler e Mailpit.
  • Modelos e migrations de identidades, perfis, permissões, ativos, reservas, aprovações, bloqueios, entregas, sincronizações e auditoria.
  • Restrição PostgreSQL para impedir reservas bloqueantes sobrepostas.
  • Serviços transacionais de disponibilidade e criação de pré-reserva.
  • Dashboard, catálogo filtrável, formulário de requisição multi-equipamento e histórico pessoal.
  • Seeders com perfis, ativos fictícios e contas de demonstração.
  • Documentação de arquitetura, requisitos, decisões, operação, estado e handoff.
  • Cliente de leitura Snipe-IT com autenticação Bearer, paginação, timeout, retries seletivos, DTOs e mapper defensivo.
  • Sincronização horária e manual de equipamentos, job único, lock distribuído, histórico de execuções e desativação segura de ausentes.
  • Área administrativa de diagnóstico Snipe-IT com teste de conectividade, métricas do cache e histórico de sincronizações.
  • Autorização administrativa através de Gate e navegação condicional por perfil.
  • Pesquisa de disponibilidade por período no catálogo e formulário, incluindo reservas, atribuições atuais e bloqueios administrativos.
  • Cancelamento pelo requisitante com validação da máquina de estados, libertação transacional dos equipamentos e auditoria.
  • Expiração automática e manual de pré-reservas, com job único agendado a cada cinco minutos e comando reservations:expire.
  • Calendário mensal pessoal com isolamento por utilizador e navegação entre meses.
  • Núcleo de aprovações com fila pesquisável, Gate por perfil, aprovação, rejeição e pedido de esclarecimentos.
  • Revalidação transacional da disponibilidade antes da aprovação, promoção de itens para reserved e histórico em approval_actions/auditoria.
  • Notificações assíncronas por email e caixa interna para submissões, decisões, esclarecimentos e substituições.
  • Centro de notificações isolado por utilizador, com contador e marcação de leitura.
  • Resposta auditada a pedidos de esclarecimento e renovação do prazo de decisão.
  • Substituição controlada por equipamento disponível da mesma categoria, preservando o item original no histórico.
  • Filtros da fila de aprovação por categoria/período e histórico de ações apresentado na interface.
  • Cliente operacional Snipe-IT com token separado, checkout para utilizador, check-in para localização habitual e validação defensiva de respostas.
  • Domínio Operations com registos de entrega/devolução, condição física, operador, destinatário e resposta externa.
  • Área diária do operador com pesquisa/leitura por scanner, preparação, entrega, devolução, conclusão, faltas, atrasos e incidentes.
  • Associação do utilizador local ao ID Snipe-IT confirmada durante a entrega.
  • Bloqueios temporais de equipamento criados a partir de incidentes e considerados pelo motor de disponibilidade.
  • Tratamento e auditoria de falhas parciais em movimentos com vários equipamentos.

Alterado

  • Nome, identidade visual e idioma orientados ao Portal de Reservas.
  • Configuração padrão alterada para PostgreSQL, Redis, SMTP/Mailpit e Europa/Lisboa.
  • Configuração de desenvolvimento Vite passa a publicar módulos e HMR em localhost:5173 e a aceitar explicitamente a origem do portal em localhost:8000, corrigindo a página em branco em Docker.
  • As mensagens flash globais recebem agora as propriedades diretamente de withApp, evitando o uso de usePage() fora do contexto Inertia que interrompia o arranque do React.
  • SSR de desenvolvimento ligado internamente de PHP para o serviço node, com o hostname Docker autorizado no Vite.
  • Catálogo sem período passa a distinguir equipamentos apenas requisitáveis; quando um período é selecionado, apresenta exclusivamente equipamentos livres nesse intervalo.
  • Máquina de estados passa a admitir incidentes durante preparação/utilização, atrasos e resolução por devolução.

Segurança

  • Registo público desativado.
  • Variáveis para tokens Snipe-IT separados e credenciais Entra ID documentadas sem valores.
  • Rotas operacionais protegidas por Gate e verificação de perfil também no serviço de domínio; escritas externas não fazem retry automático.

Verificado

  • Migrations e seeders executados em PostgreSQL 17 real.
  • Suite backend: Pint em 111 ficheiros, PHPStan nível 7 em 84 ficheiros e 70 testes Pest (340 asserções).
  • Frontend: TypeScript, ESLint, Prettier e build Vite de produção.
  • Stack Docker operacional e endpoint de login acessível através do Nginx.
  • Renderização SSR real do login validada, incluindo o conteúdo “Entrar no Portal de Reservas”.
  • API Snipe-IT simulada em testes: paginação, headers, retry, erro em HTTP 200, falha parcial, idempotência e desativação de ausentes.
  • Migration last_seen_sync_run_id aplicada em PostgreSQL 17.
  • Comando de expiração executado em PostgreSQL e agendamento a cada cinco minutos confirmado.
  • Builds Vite cliente e SSR com as páginas de disponibilidade, cancelamento e calendário concluídos.
  • Migration da caixa interna de notificações aplicada em PostgreSQL 17.
  • Fluxo operacional: autorização, checkout/check-in, entrega parcial, auditoria, incidentes e bloqueios validados com API Snipe-IT simulada.