feat: bootstrap project
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# US02 - Listar Beneficiários (Admin)
|
||||
|
||||
**Como** Administrador do RefoodOne
|
||||
**Quero** visualizar a lista de todos os beneficiários registados no sistema
|
||||
**Para** poder consultar os seus dados e gerir a atribuição de apoio alimentar.
|
||||
|
||||
## Descrição do Fluxo
|
||||
O Administrador acede ao menu "Admin" -> "Beneficiários", onde lhe é apresentada uma tabela com a listagem de todos os beneficiários registados. A listagem permite pesquisar e filtrar os beneficiários de forma rápida.
|
||||
|
||||
## Critérios de Aceitação
|
||||
|
||||
### 1. Interface Gráfica (UI)
|
||||
- **Tabela de Beneficiários**: Deve conter as seguintes colunas:
|
||||
|
||||
- **Número** (Número de beneficiário)
|
||||
- **Nome** (Nome do beneficiário)
|
||||
- **Nº Pessoas** (Número de pessoas do agregado familiar)
|
||||
- **Estado** (Ativo / Inativo)
|
||||
- **Ações** (Botões para Editar/Inativar/Ver Detalhes)
|
||||
- **Filtros e Pesquisa**:
|
||||
- Barra de pesquisa por Nome ou número
|
||||
- Filtro por Estado (Todos, Ativos, Inativos).
|
||||
- **Botão "Novo Beneficiário"**: Um botão destacado (ex: cor primária/verde) posicionado no topo da página para criar um novo beneficiário.
|
||||
- **Paginação**: Caso existam muitos beneficiários, a tabela deve ser paginada (ex: 15 por página).
|
||||
|
||||
### 2. Comportamento e Regras de Negócio
|
||||
- Apenas utilizadores com a função **Admin** podem aceder a esta página.
|
||||
- Se um utilizador sem permissões tentar aceder, o sistema deve apresentar uma página de erro 403 (Acesso Negado) ou redirecionar para a página inicial com mensagem de erro.
|
||||
- A listagem deve ser ordenada alfabeticamente por Nome por defeito.
|
||||
|
||||
### 3. Integração de Dados / Segurança
|
||||
- Os dados devem ser lidos diretamente da tabela de beneficiários da base de dados SQLite.
|
||||
- A consulta à base de dados deve ser executada exclusivamente no servidor (`+page.server.ts`).
|
||||
@@ -0,0 +1,37 @@
|
||||
# US03 - Detalhe e Edição de Beneficiário (Admin)
|
||||
|
||||
**Como** Administrador do RefoodOne
|
||||
**Quero** visualizar, criar e editar as informações de um beneficiário específico
|
||||
**Para** manter os dados dos beneficiários atualizados no sistema.
|
||||
|
||||
## Descrição do Fluxo
|
||||
Este ecrã serve dois propósitos:
|
||||
1. **Criação**: Acedido através do botão "Novo Beneficiário" na listagem (US02), abrindo o formulário vazio para preenchimento.
|
||||
2. **Edição/Visualização**: Acedido através do botão de ação "Editar" na listagem (US02), abrindo o formulário pré-preenchido com os dados do beneficiário selecionado.
|
||||
|
||||
## Critérios de Aceitação
|
||||
|
||||
### 1. Interface Gráfica (UI)
|
||||
- **Campos do Formulário**:
|
||||
- **Número** (obrigatório, numérico único - identificador do beneficiário no sistema)
|
||||
- **Nome** (obrigatório, texto)
|
||||
- **Contacto** (obrigatório, número de telefone/telemóvel válido)
|
||||
- **Nº Pessoas do Agregado** (obrigatório, numérico, mínimo 1)
|
||||
- **Observações** (opcional, área de texto livre para notas adicionais)
|
||||
- **Estado** (Ativo / Inativo - apenas na edição)
|
||||
- **Botões de Ação**:
|
||||
- **Guardar** (submete o formulário e guarda os dados)
|
||||
- **Cancelar** (volta para a listagem sem guardar alterações)
|
||||
|
||||
### 2. Comportamento e Regras de Negócio
|
||||
- Apenas utilizadores com a função **Admin** podem aceder/gravar neste ecrã.
|
||||
- **Validações**:
|
||||
- O campo **Número** deve ser único na base de dados. Se o Administrador tentar guardar um número já existente, o sistema deve exibir um aviso claro em PT-PT.
|
||||
- Todos os campos obrigatórios devem ser validados antes de permitir guardar.
|
||||
- **Redirecionamento**:
|
||||
- Após guardar com sucesso (inserir ou atualizar), o sistema deve redirecionar o utilizador de volta para a listagem de beneficiários (US02) com uma mensagem de sucesso (ex: *"Beneficiário guardado com sucesso"*).
|
||||
- Clicar em Cancelar deve redirecionar de volta para a listagem (US02) sem efetuar qualquer alteração.
|
||||
|
||||
### 3. Integração de Dados / Segurança
|
||||
- As operações de escrita (INSERT/UPDATE) devem ser efetuadas de forma segura na base de dados SQLite através do Drizzle ORM.
|
||||
- O processamento do formulário deve ser feito inteiramente no servidor (`+page.server.ts` actions).
|
||||
@@ -0,0 +1,32 @@
|
||||
# US04 - Listar Turnos (Admin)
|
||||
|
||||
**Como** Administrador ou Gestor de Turnos do RefoodOne
|
||||
**Quero** visualizar a lista de todos os turnos de entregas registados no sistema
|
||||
**Para** consultar o seu horário atual e os dias em que são realizados.
|
||||
|
||||
## Descrição do Fluxo
|
||||
O utilizador acede ao menu de administração correspondente aos "Turnos", onde lhe é apresentada uma tabela com os turnos configurados no sistema (ex: T1, T2, T3), indicando os seus horários e os dias da semana em que ocorrem.
|
||||
|
||||
## Critérios de Aceitação
|
||||
|
||||
### 1. Interface Gráfica (UI)
|
||||
- **Tabela de Turnos**: Deve conter as seguintes colunas:
|
||||
- **Identificador** (ex: T1, T2, T3)
|
||||
- **Horário** (ex: 14h30 - 16h30)
|
||||
- **Duração** (ex: 2h)
|
||||
- **Dias de Funcionamento** (ex: Terças e Quintas)
|
||||
- **Ações** (Botão para Editar)
|
||||
- **Idioma**: Todos os textos e cabeçalhos devem estar em PT-PT.
|
||||
|
||||
### 2. Comportamento e Regras de Negócio
|
||||
- Apenas utilizadores com as funções de **Admin** ou **Gestor de Turnos** podem aceder a esta listagem.
|
||||
- Por defeito, o sistema deve apresentar os turnos configurados atualmente:
|
||||
- **T1**: 14h30 - 16h30
|
||||
- **T2**: 16h30 - 18h30
|
||||
- **T3**: 18h30 - 20h30
|
||||
- Por defeito, os dias de funcionamento são as **3ªs feiras (Terças)** e **5ªs feiras (Quintas)**.
|
||||
- A listagem deve ser ordenada por ordem cronológica de horário de início.
|
||||
|
||||
### 3. Integração de Dados / Segurança
|
||||
- Os dados devem ser lidos da base de dados SQLite através das tabelas de configuração/turnos do sistema.
|
||||
- A consulta à base de dados deve ser executada exclusivamente no servidor (`+page.server.ts`).
|
||||
@@ -0,0 +1,34 @@
|
||||
# US05 - Editar Horário e Dias de Turno (Admin)
|
||||
|
||||
**Como** Administrador ou Gestor de Turnos do RefoodOne
|
||||
**Quero** editar o horário (horas de início e fim) e os dias da semana de um turno específico
|
||||
**Para** adaptar o funcionamento das entregas conforme a disponibilidade dos voluntários e as necessidades da Refood PdN.
|
||||
|
||||
## Descrição do Fluxo
|
||||
O utilizador clica no botão "Editar" de um turno específico na listagem de turnos (US04). É apresentado um formulário pré-preenchido onde pode alterar a hora de início, a hora de fim e selecionar/deselecionar os dias da semana em que o turno é realizado.
|
||||
|
||||
## Critérios de Aceitação
|
||||
|
||||
### 1. Interface Gráfica (UI)
|
||||
- **Campos do Formulário**:
|
||||
- **Identificador** (Apenas leitura/desativado, ex: "T1")
|
||||
- **Hora de Início** (Obrigatório, seletor de tempo no formato HH:MM)
|
||||
- **Hora de Fim** (Obrigatório, seletor de tempo no formato HH:MM)
|
||||
- **Dias da Semana** (Obrigatório, checkboxes permitindo selecionar múltiplos dias, ex: Segunda a Domingo)
|
||||
- **Botões de Ação**:
|
||||
- **Guardar** (Submete o formulário e grava as alterações)
|
||||
- **Cancelar** (Volta para a listagem sem guardar)
|
||||
|
||||
### 2. Comportamento e Regras de Negócio
|
||||
- Apenas utilizadores com as funções de **Admin** ou **Gestor de Turnos** podem aceder a este ecrã e guardar alterações.
|
||||
- **Validações**:
|
||||
- A hora de fim deve ser posterior à hora de início.
|
||||
- A duração configurada deve respeitar as regras do sistema (ex: 2 horas por turno por defeito, ou emitir um aviso/validação caso não seja).
|
||||
- Pelo menos um dia da semana deve ser selecionado (não é permitido ter um turno ativo sem dias associados).
|
||||
- **Redirecionamento**:
|
||||
- Após guardar com sucesso, redirecionar para a listagem de turnos (US04) com uma mensagem de sucesso em PT-PT (ex: *"Horário do turno guardado com sucesso"*).
|
||||
- Clicar em Cancelar redireciona de volta para a listagem (US04) sem efetuar qualquer alteração.
|
||||
|
||||
### 3. Integração de Dados / Segurança
|
||||
- As alterações de horário e dias devem ser guardadas com segurança na base de dados SQLite através do Drizzle ORM.
|
||||
- O processamento da ação do formulário deve ocorrer no servidor (`+page.server.ts` actions).
|
||||
@@ -0,0 +1,36 @@
|
||||
# US06 - Inicialização (Bootstrap) de Turnos
|
||||
|
||||
**Como** Sistema do RefoodOne
|
||||
**Quero** inicializar a base de dados com os turnos predefinidos (T1, T2 e T3)
|
||||
**Para** garantir que a aplicação começa a funcionar com uma configuração base válida e sem necessidade de introdução manual de dados.
|
||||
|
||||
## Descrição do Fluxo
|
||||
Este é um processo automatizado executado pelo sistema (ex: através de um script de *seeding* ou na inicialização da base de dados). O sistema verifica se a tabela de turnos está vazia e, caso esteja, insere os três turnos base com os horários e dias da semana padrão.
|
||||
|
||||
## Critérios de Aceitação
|
||||
|
||||
### 1. Interface Gráfica (UI)
|
||||
- Não aplicável (processo de sistema em segundo plano).
|
||||
|
||||
### 2. Comportamento e Regras de Negócio
|
||||
- **Verificação de Existência**: O bootstrap apenas deve ser executado se a tabela de turnos na base de dados SQLite estiver completamente vazia. Se já existirem dados, o processo não deve fazer nada (para evitar sobrescrever alterações manuais feitas pelo Administrador).
|
||||
- **Dados Padrão a Inserir**:
|
||||
- **Turno T1**:
|
||||
- Código/Identificador: `T1`
|
||||
- Hora de Início: `14:30`
|
||||
- Hora de Fim: `16:30`
|
||||
- Dias da Semana: Terça-feira (3ªf) e Quinta-feira (5ªf)
|
||||
- **Turno T2**:
|
||||
- Código/Identificador: `T2`
|
||||
- Hora de Início: `16:30`
|
||||
- Hora de Fim: `18:30`
|
||||
- Dias da Semana: Terça-feira (3ªf) e Quinta-feira (5ªf)
|
||||
- **Turno T3**:
|
||||
- Código/Identificador: `T3`
|
||||
- Hora de Início: `18:30`
|
||||
- Hora de Fim: `20:30`
|
||||
- Dias da Semana: Terça-feira (3ªf) e Quinta-feira (5ªf)
|
||||
|
||||
### 3. Integração de Dados / Segurança
|
||||
- A inserção dos dados deve ser feita de forma segura utilizando o Drizzle ORM num script de seed (`seed.ts` ou semelhante) ou num mecanismo executado durante o arranque do servidor.
|
||||
- Os dias da semana devem ser armazenados num formato estruturado (ex: JSON array ou tabela de junção) para fácil manipulação pelas US04 e US05.
|
||||
Reference in New Issue
Block a user