# 2. Requisitos do Sistema ## 2.1 Requisitos Funcionais ### 2.1.1 Autenticação e Conta - O sistema deve permitir o registo de novos utilizadores com nome, email, palavra-passe, data de nascimento e localidade (distrito) - O sistema deve impedir o registo de utilizadores com menos de 18 anos, verificando a data de nascimento no servidor - O sistema deve permitir login por email e palavra-passe - O sistema deve disponibilizar recuperação de palavra-passe por email - O utilizador deve poder alterar os seus dados, palavra-passe e preferências de tema (modo claro/escuro) - O utilizador deve poder consultar o seu histórico de adopções e doações - O utilizador deve poder eliminar a sua conta (direito ao apagamento — RGPD) ### 2.1.2 Módulo de Adopção - A página inicial deve apresentar todos os animais disponíveis para adopção - O utilizador deve poder filtrar animais por: distrito, espécie (cão, gato, outro), raça, sexo (macho/fêmea), estado de esterilização e faixa etária - Cada animal deve ter ficha detalhada com: nome, espécie, raça (cães e gatos), idade, sexo, estado de esterilização, fotografias e canil onde se encontra - Ao clicar no canil na ficha do animal, deve aparecer informação com horário de funcionamento, morada e contacto - Para iniciar uma adopção, o utilizador deve ter sessão activa ou ser redirecionado para login/registo - O utilizador deve poder seleccionar uma data disponível para levantar o animal no canil - Após confirmação da reserva, o animal fica com estado **"Reservado"** e o utilizador recebe email de confirmação com data e detalhes do canil - Animais com urgência de adopção devem ter destaque visual na listagem ### 2.1.3 Módulo de Doação - Para efectuar qualquer doação, o sistema deve confirmar que o utilizador tem sessão activa e +18 anos - O utilizador deve poder escolher entre três tipos de doação: **Monetária**, **Ração** e **Brinquedos** - **Doação Monetária:** selecção de método de pagamento (Cartão de Crédito, MBWay), escolha de canil (da localidade do utilizador ou de outra localidade) e montante - **Doação de Ração:** listagem de canis que aceitam ração, tipos disponíveis (seca/húmida, para cão/gato, adulto/filhote), opção de entrega em casa ou levar pessoalmente ao canil - **Doação de Brinquedos:** listagem de canis que aceitam brinquedos, categorias disponíveis, opção de entrega em casa ou levar pessoalmente ao canil - O utilizador deve receber recibo de doação por email após confirmação ### 2.1.4 Gestão de Canis (Painel Privado) - Canis registados devem ter acesso a painel próprio para gerir animais, reservas e necessidades actuais - Canis devem poder actualizar horários de funcionamento, morada e informações de contacto - Canis devem receber notificação de novas reservas e doações - Canis devem poder indicar que necessidades têm actualmente (ex: ração seca para cão adulto, mantas) - Canis devem poder marcar animais como adoptados após levantamento ### 2.1.5 Painel de Administração - O administrador deve poder visualizar estatísticas gerais (adopções, doações, utilizadores activos) - O administrador deve poder moderar canis e utilizadores - O administrador deve ter acesso a logs de actividade relevantes --- ## 2.2 Requisitos Não-Funcionais | Categoria | Requisito | Critério de Aceitação | |---|---|---| | Desempenho | Tempo de carregamento da página inicial | < 2 segundos em ligação 4G | | Segurança | Autenticação e protecção de dados | HTTPS obrigatório, hash bcrypt (custo 12), tokens JWT assinados | | Acessibilidade | Conformidade com directrizes de acessibilidade | WCAG 2.1 Nível AA mínimo | | Responsividade | Compatibilidade mobile e desktop | Funcional em viewports a partir de 320px de largura | | Disponibilidade | Uptime da plataforma | ≥ 99,5% mensal (acordo de nível de serviço) | | RGPD | Protecção de dados pessoais | Consentimento explícito, direito ao apagamento, exportação de dados | | Escalabilidade | Crescimento de utilizadores | Suporte a 10.000 utilizadores activos simultâneos sem degradação | | Email | Entrega de emails transaccionais | Taxa de entrega superior a 98% | | Internacionalização | Idioma da interface | Português de Portugal (pt-PT) como idioma principal | | SEO | Indexação por motores de busca | Páginas públicas com SSR e metadados correctos | --- ## 2.3 Restrições - A plataforma deve estar em conformidade com o **RGPD** (Regulamento Geral sobre a Protecção de Dados) e legislação portuguesa - Os pagamentos devem ser processados por um fornecedor certificado **PCI DSS** (Stripe) - O registo é **exclusivo para maiores de 18 anos** — validação obrigatória no servidor - Apenas canis registados e verificados pela equipa PetLink podem listar animais para adopção