feat: bootstrap project

This commit is contained in:
Duarte
2026-05-31 20:22:50 +01:00
commit 66581ef584
65 changed files with 7915 additions and 0 deletions
@@ -0,0 +1,40 @@
# US09 - Interface de Registo de Entregas
**Como** Voluntário ou Administrador do RefoodOne
**Quero** um ecrã com botões grandes para cada beneficiário ativo e um popup de confirmação
**Para** registar de forma rápida e tátil as entregas de cabazes em dispositivos tablet.
## Descrição do Fluxo
O voluntário acede ao menu "Entregas". O ecrã apresenta uma grelha de botões táteis correspondentes a todos os beneficiários ativos. Ao tocar no botão de um beneficiário (ex: "#124"), abre-se um popup de confirmação exibindo os dados principais do beneficiário (Nome e Nº de Pessoas do Agregado). Ao clicar em "Confirmar", o sistema grava a entrega associando o turno ativo e a data corrente, e fecha o popup.
## Critérios de Aceitação
### 1. Interface Gráfica (UI)
- **Ecrã de Grelha (Grid)**:
- Apresenta botões organizados em grelha (vários por linha dependendo da resolução).
- Cada botão corresponde a um **beneficiário ativo**.
- O rótulo (label) do botão deve ser o **número do beneficiário** em destaque.
- Os botões devem ser dimensionados para facilitar o toque com o dedo (design tátil ideal para tablets).
- **Popup de Confirmação (Modal)**:
- Disparado ao clicar no botão de um beneficiário.
- Deve mostrar em destaque:
- **Nome do beneficiário**
- **Nº de pessoas do agregado familiar** (do registo do beneficiário)
- Botões de Ação no popup:
- **Confirmar** (submete o registo de entrega, cor verde)
- **Cancelar** (fecha o popup sem registar, cor cinzenta)
### 2. Comportamento e Regras de Negócio
- Apenas beneficiários com estado **Ativo** devem ser exibidos na grelha.
- **Prevenção de Duplicados (Desativação do Botão)**:
- Se um beneficiário já tiver uma entrega registada na data corrente (dia de hoje), o seu respetivo botão na grelha de entregas deve estar **desativado** (disabled).
- O botão desativado deve ter um aspeto visual distinto (ex: cor cinzenta ou verde-suave com um visto de "concluído") para indicar claramente que a entrega já foi efetuada no dia de hoje.
- **Gravação Automática**:
- Ao confirmar, o sistema regista a entrega na base de dados (`deliveries`).
- A data de entrega é preenchida pelo servidor com a **data atual** (no formato YYYY-MM-DD).
- O turno é determinado automaticamente pelo servidor com base no **dia da semana e hora atual** em que o registo está a ser submetido (se cair fora do horário de funcionamento de qualquer turno, associa-se o turno padrão ou mais próximo).
### 3. Integração de Dados / Segurança
- O ecrã deve carregar os dados dos beneficiários e turnos no servidor (`+page.server.ts`).
- A gravação deve ocorrer via SvelteKit Action (`POST` request) para garantir que a data e o turno sejam calculados e validados de forma segura no lado do servidor.
- Apenas utilizadores autenticados podem aceder e registar entregas.