2.2 KiB
2.2 KiB
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:
- Criação: Acedido através do botão "Novo Beneficiário" na listagem (US02), abrindo o formulário vazio para preenchimento.
- 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.tsactions).