74 lines
2.7 KiB
Markdown
74 lines
2.7 KiB
Markdown
# Portal de Requisição e Reserva de Equipamentos
|
|
|
|
Portal interno para consultar, requisitar, aprovar, entregar e devolver equipamentos cuja fonte oficial de inventário é o Snipe-IT.
|
|
|
|
## Estado atual
|
|
|
|
O projeto concluiu a **Fase 1 — Fundação técnica**, a **Fase 2 — Integração de leitura Snipe-IT** e a **Fase 3 — Motor de reservas**. Estão disponíveis autenticação local, perfis base, catálogo sincronizável com pesquisa temporal, criação de requisição com vários equipamentos, pré-reserva, deteção de conflitos, cancelamento auditado, expiração automática, calendário e histórico pessoal, dashboard e diagnóstico administrativo da integração. A próxima entrega implementa o fluxo de aprovação.
|
|
|
|
Consulte sempre [docs/PROJECT_STATUS.md](docs/PROJECT_STATUS.md) antes de alterar o projeto. Esse documento contém o ponto de situação, riscos e próxima tarefa recomendada.
|
|
|
|
## Arranque rápido
|
|
|
|
Requisitos: Docker Desktop e Docker Compose.
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
docker compose build
|
|
docker compose run --rm app php artisan key:generate
|
|
docker compose up -d
|
|
docker compose exec app php artisan migrate --seed
|
|
```
|
|
|
|
O portal fica disponível em <http://localhost:8000> e o Mailpit em <http://localhost:8025>.
|
|
|
|
Contas de desenvolvimento:
|
|
|
|
| Perfil | Email | Palavra-passe |
|
|
|---|---|---|
|
|
| Requisitante | `demo@escola.pt` | `password` |
|
|
| Administrador | `admin@escola.pt` | `password` |
|
|
|
|
Estas credenciais existem apenas no `DatabaseSeeder` e nunca devem ser usadas em produção.
|
|
|
|
## Comandos frequentes
|
|
|
|
```bash
|
|
docker compose exec app php artisan test
|
|
docker compose exec app composer lint
|
|
docker compose exec app composer types:check
|
|
docker compose exec node npm run types:check
|
|
docker compose exec node npm run lint:check
|
|
docker compose exec node npm run build
|
|
```
|
|
|
|
Para repor apenas dados de desenvolvimento:
|
|
|
|
```bash
|
|
docker compose exec app php artisan migrate:fresh --seed
|
|
```
|
|
|
|
## Documentação
|
|
|
|
- [Estado e handoff](docs/PROJECT_STATUS.md)
|
|
- [Arquitetura](docs/ARCHITECTURE.md)
|
|
- [Requisitos e âmbito](docs/REQUIREMENTS.md)
|
|
- [Decisões técnicas](docs/DECISIONS.md)
|
|
- [Operação local](docs/RUNBOOK.md)
|
|
- [Registo de alterações](CHANGELOG.md)
|
|
- [Regras para agentes](AGENTS.md)
|
|
|
|
## Stack
|
|
|
|
- Laravel 13 / PHP 8.3+
|
|
- React 19 / TypeScript / Inertia 3
|
|
- Tailwind CSS 4 / componentes shadcn/ui
|
|
- PostgreSQL 17
|
|
- Redis 7
|
|
- Nginx, worker de filas, scheduler e Mailpit em Docker Compose
|
|
- Pest, PHPStan/Larastan, ESLint, Prettier e TypeScript
|
|
|
|
## Princípio central
|
|
|
|
O portal nunca escreve diretamente na base de dados do Snipe-IT. Identificação e estado operacional do equipamento pertencem ao Snipe-IT; períodos, aprovações, conflitos, notificações, entrega/devolução e auditoria pertencem ao portal.
|