Requisitos¶
Versão: 1.0 Escopo: Documento único contendo todos os Requisitos Funcionais (RFs) e Requisitos Não Funcionais (RNFs) do projeto, gerados a partir da consolidação das metas (KAOS).
Sistema de Tarefas¶
RF-001 - Caderno como Unidade Raiz Obrigatória¶
- Descrição: O sistema deve estruturar o conteúdo utilizando o Caderno como a unidade raiz obrigatória.
<Backward: G-001.1.>Forward: EPIC-001.- Tipo: Funcional.
- Subtipo: Estrutura.
- Prioridade: Must.
- Critério de aceitação:
- Todo conteúdo do sistema deve pertencer, eventualmente, a um caderno.
RF-002 - Vínculo Único de Item a Caderno¶
- Descrição: O sistema deve garantir que todo Item pertença a exatamente um Caderno.
<Backward: G-001.2.>Forward: EPIC-001.- Tipo: Funcional.
- Subtipo: Estrutura.
- Prioridade: Must.
- Critério de aceitação:
- O sistema deve permitir que o item resida temporariamente na Inbox antes de ser classificado.
RF-003 - Hierarquia 1:N de Sub-itens¶
- Descrição: O sistema deve garantir que Sub-itens pertençam exclusivamente a um Item do tipo TODO, operando sob uma hierarquia estritamente 1:N (Pai-Filho simples).
<Backward: G-001.3.>Forward: EPIC-002.- Tipo: Funcional.
- Subtipo: Estrutura.
- Prioridade: Must.
- Critério de aceitação:
- Sub-itens não podem ser reaproveitados em outros itens.
RF-004 - Captura Rápida na Inbox¶
- Descrição: O sistema deve permitir o registro rápido de itens na Inbox sem exigir a classificação imediata.
<Backward: G-002.>Forward: EPIC-001.- Tipo: Funcional.
- Subtipo: Captura.
- Prioridade: Must.
- Critério de aceitação:
- O item deve deixar a Inbox automaticamente no momento em que é associado a um caderno.
RF-005 - Tipo de Item SCHEDULE¶
- Descrição: O sistema deve implementar o tipo de item SCHEDULE com campos obrigatórios de data/hora de início e de término.
<Backward: G-003.1.>Forward: EPIC-002.- Tipo: Funcional.
- Subtipo: Entidades.
- Prioridade: Must.
- Critério de aceitação:
- Itens do tipo SCHEDULE devem ser exibidos exclusivamente no calendário, sem aparecer no planner diário ou nas listas de tarefas.
RF-006 - Tipo de Item TODO¶
- Descrição: O sistema deve implementar o tipo de item TODO com horário opcional e possibilidade de data limite (due date) opcional.
<Backward: G-003.2, G-003.3.>Forward: EPIC-002.- Tipo: Funcional.
- Subtipo: Entidades.
- Prioridade: Must.
- Critério de aceitação:
- O TODO deve possuir um estado de conclusão (is_completed).
- O TODO deve suportar a associação de sub-itens.
- O TODO pode ser associado a, no máximo, um item SCHEDULE, sendo que a relação inversa não deve ocorrer (G-003.3).
RF-007 - Recorrência Básica de Itens¶
- Descrição: O sistema deve suportar regras de recorrência básica (diária, semanal ou mensal) com a opção de definir uma data de término, aplicáveis tanto a itens SCHEDULE quanto a TODOs.
<Backward: G-004.>Forward: EPIC-003.- Tipo: Funcional.
- Subtipo: Recorrência.
- Prioridade: Must.
- Critério de aceitação:
- A recorrência deve funcionar de forma padronizada para os dois tipos de itens.
RF-008 - Atribuição de Prioridade¶
- Descrição: O sistema deve permitir a atribuição de uma prioridade baseada em uma escala numérica de 4 níveis (1 = Crítica a 4 = Baixa) ou ausência de prioridade (nulo) a cada item.
<Backward: G-005.>Forward: EPIC-002.- Tipo: Funcional.
- Subtipo: Gestão de Itens.
- Prioridade: Must.
- Critério de aceitação:
- A prioridade atribuída deve ser o primeiro critério para a ordenação padrão.
RF-009 - Adiamento de Item (Snooze)¶
- Descrição: O sistema deve permitir adiar (Snooze) o reaparecimento de um item ativo.
<Backward: G-006, G-006.1, G-006.2, G-006.3, G-006.4.>Forward: EPIC-003.- Tipo: Funcional.
- Subtipo: Adiamento.
- Prioridade: Should.
- Critério de aceitação:
- Deve ser possível adiar para o dia seguinte, às 08:00 (“Amanhã”).
- Deve ser possível adiar para 3 dias à frente.
- Deve ser possível adiar para a próxima segunda-feira (“Próxima semana”).
- Deve ser possível permitir a seleção manual de uma data específica pelo usuário.
RF-010 - Gerenciamento do Ciclo de Vida do Item¶
- Descrição: O sistema deve gerenciar o ciclo de vida do item através dos estados: Inbox, Ativo, Concluído, Arquivado e Deletado, executando transições automáticas para as etapas padrão.
<Backward: G-007, G-007.1, G-007.2, G-007.3.>Forward: EPIC-002.- Tipo: Funcional.
- Subtipo: Ciclo de Vida.
- Prioridade: Must.
- Critério de aceitação:
- O estado de arquivamento deve ser alcançado estritamente por ação manual do usuário, após a conclusão do item (não há arquivamento automático nesta versão).
- O sistema deve permitir a deleção (remoção manual) a partir de qualquer estado.
RF-011 - Deleção Hierárquica de Dados¶
- Descrição: O sistema deve tratar a deleção de dados para garantir a segurança hierárquica.
<Backward: G-008, G-008.1, G-008.2.>Forward: EPIC-002.- Tipo: Funcional.
- Subtipo: Deleção.
- Prioridade: Must.
- Critério de aceitação:
- Ao deletar um Caderno, todos os seus itens devem ser retornados para o estado de Inbox temporariamente.
- Ao deletar um Item do tipo TODO que possui sub-itens, o sistema deve exibir confirmação prévia e deletar todos os sub-itens vinculados; se o item não possuir sub-itens, a exclusão não exige confirmação.
RF-012 - Ordenação de Listagens¶
- Descrição: O sistema deve oferecer ordenações de listagem por critérios de ordenação manual (drag & drop), prioridade, data limite (due date), criação e caderno.
<Backward: G-009.>Forward: EPIC-004.- Tipo: Funcional.
- Subtipo: Ordenação.
- Prioridade: Must.
- Critério de aceitação:
- Quando nenhuma ordenação for selecionada, o sistema aplicará a combinação padrão: prioridade > data limite > data de criação.
RF-013 - Busca Textual Restrita a TODOs¶
- Descrição: O sistema deve disponibilizar funcionalidade de busca textual simples (por título) que atue unicamente sobre itens do tipo TODO, garantindo que Cadernos e itens SCHEDULE não sejam retornados.
<Backward: G-010.>Forward: EPIC-004.- Tipo: Funcional.
- Subtipo: Busca.
- Prioridade: Must.
- Critério de aceitação:
- Os resultados da busca devem permitir o refinamento utilizando filtros em tela de status, caderno, prioridade e período.
RF-014 - Modos de Visualização (Calendário e Planner Diário)¶
- Descrição: O sistema deve apresentar múltiplos modos de visualização baseados na mesma base unificada de dados (Cadernos), incluindo um Planner Diário e visões de Calendário.
<Backward: G-011, G-011.1, G-011.2, G-011.3.>Forward: EPIC-004.- Tipo: Funcional.
- Subtipo: Visualizações de Calendário.
- Prioridade: Must.
- Critério de aceitação:
- Devem existir quatro visões de calendário: Diária, Semanal, Mensal e Agenda.
- O Planner Diário deve exibir exclusivamente os itens do tipo TODO de um dia específico, incluindo os que não possuem qualquer data associada. Itens SCHEDULE nunca aparecem nesta visão.
- O Calendário exibirá sempre SCHEDULEs, mas exibirá TODOs apenas se possuírem horário definido ou data limite (due date); TODOs sem qualquer data são invisíveis no calendário.
RF-015 - Duplicação Seletiva de Item¶
- Descrição: O sistema deve permitir ao usuário duplicar um item preservando o título (com opção do prefixo “Cópia de”), o caderno de origem e a prioridade.
<Backward: G-012.>Forward: EPIC-002.- Tipo: Funcional.
- Subtipo: Gestão de Itens.
- Prioridade: Should.
- Critério de aceitação:
- A duplicação deve gerar um item no estado de ciclo de vida ATIVO, sem datas definidas.
- A cópia gerada não deve reter o status de conclusão do item original, seus vínculos de sub-itens nem o vínculo com um SCHEDULE associado.
RNF-001 - Restrição de Escopo da Recorrência (Sem Exceções/Overrides)¶
- Descrição: O sistema não deve oferecer suporte a exceções, cancelamento ou sobrescrita (override) de instâncias individuais da recorrência.
<Backward: G-004 (OBS-001).>Forward: EPIC-003.- Tipo: Não Funcional.
- Subtipo: Restrição de Escopo.
- Prioridade: Must.
Sistema de Autenticação¶
RF-016 - Módulo de Configurações de Conta¶
- Descrição: O sistema deve possuir um módulo de Configurações para centralizar a visualização, a atualização dos dados de cadastro e o acesso à funcionalidade de Alteração de Senha (RF-024).
<Backward: G-013, G-013.1, G-013.2.>Forward: EPIC-006.- Tipo: Funcional.
- Subtipo: Configurações.
- Prioridade: Must.
- Critério de aceitação:
- O usuário deve poder visualizar e atualizar informações pessoais vinculadas à conta em uma área dedicada.
- As modificações de cadastro devem ser salvas persistentemente e refletidas globalmente na identificação do usuário na plataforma.
- Nesta versão, o módulo não deve incluir preferências específicas do Sistema de Tarefas - seu foco é exclusivamente o gerenciamento da conta.
RF-017 - Cadastro (Sign Up)¶
- Descrição: O sistema deve permitir a criação de uma nova conta de usuário a partir de nome, e-mail e senha, validando o e-mail quanto ao formato e à unicidade e armazenando a senha exclusivamente como hash.
<Backward: G-014.1.>Forward: EPIC-006.- Tipo: Funcional.
- Subtipo: Cadastro.
- Prioridade: Must.
- Critério de aceitação:
- A senha deve respeitar a política mínima de 8 caracteres, com pelo menos uma letra e um número.
- O hash da senha deve ser gerado com algoritmo adequado a senhas (ex.: bcrypt ou Argon2), com salt individual por usuário; a senha nunca é armazenada em texto puro.
- Ao concluir o cadastro com sucesso, a conta deve ser criada diretamente com status
Ativa, permitindo login imediato.
RF-018 - Login¶
- Descrição: O sistema deve autenticar o usuário através do par e-mail + senha, comparando o hash da senha informada com o hash armazenado, sem nunca comparar a senha original diretamente.
<Backward: G-014.2, G-014.2.1.>Forward: EPIC-005.- Tipo: Funcional.
- Subtipo: Login.
- Prioridade: Must.
- Critério de aceitação:
- Em caso de sucesso, o sistema deve gerar uma sessão (ver RF-021).
- Em caso de falha, o sistema deve retornar mensagem genérica de “credenciais inválidas”, sem indicar qual campo (e-mail ou senha) está incorreto, evitando enumeração de contas cadastradas.
RF-019 - Proteção contra Força Bruta¶
- Descrição: O sistema deve contar tentativas de login malsucedidas consecutivas por conta e, após 5 tentativas falhas, bloquear temporariamente a conta (status
Bloqueada Temporariamente) por um período pré-definido (ex.: 15 minutos). <Backward: G-014.2.2 (OBS-002).>Forward: EPIC-005.- Tipo: Funcional.
- Subtipo: Segurança de Conta.
- Prioridade: Must.
- Critério de aceitação:
- O contador de tentativas falhas deve ser zerado após um login bem-sucedido.
- Durante o período de bloqueio, novas tentativas de autenticação devem ser impedidas.
RF-020 - Reativação de Conta Desativada¶
- Descrição: O sistema deve, ao receber credenciais válidas (e-mail + senha) para uma conta com status
Desativada, não tratar a tentativa como falha de autenticação, informando a desativação e solicitando confirmação explícita do usuário para reverter o status paraAtiva. <Backward: G-014.2.3 (OBS-003).>Forward: EPIC-005.- Tipo: Funcional.
- Subtipo: Segurança de Conta.
- Prioridade: Must.
- Critério de aceitação:
- Mediante confirmação explícita do usuário, o sistema deve alterar o status da conta para
Ativae prosseguir com o login normalmente, gerando sessão. - Sem confirmação, o login não deve ser concluído e a conta deve permanecer
Desativada. - Este fluxo não deve depender de e-mail ou qualquer canal externo - a senha correta é prova suficiente de identidade.
- Mediante confirmação explícita do usuário, o sistema deve alterar o status da conta para
RF-021 - Gerenciamento de Sessão¶
- Descrição: O sistema deve manter o usuário autenticado entre requisições utilizando um modelo híbrido de dois tokens: Access Token (JWT stateless, curta duração, não persistido) e Refresh Token (opaco, longa duração, persistido como hash), transportados via cookie
httpOnly,SecureeSameSite. <Backward: G-014.3, G-014.3.1, G-014.3.2.>Forward: EPIC-005.- Tipo: Funcional.
- Subtipo: Sessão.
- Prioridade: Must.
- Critério de aceitação:
- O sistema deve suportar múltiplas sessões simultâneas por usuário (uma por dispositivo/login), individualmente identificáveis e revogáveis.
- O logout deve revogar apenas a sessão (refresh token) correspondente; o access token em memória perde validade naturalmente ao expirar (até 15 min).
- Eventos de troca de senha (RF-024) ou desativação de conta (RF-022) devem revogar em massa todas as sessões ativas do usuário; no caso de troca de senha, a sessão corrente deve ser preservada.
RF-022 - Desativação de Conta¶
- Descrição: O sistema deve permitir que o usuário autenticado desative a própria conta a partir do módulo de Configurações.
<Backward: G-014.4.1.>Forward: EPIC-006.- Tipo: Funcional.
- Subtipo: Segurança de Conta.
- Prioridade: Must.
- Critério de aceitação:
- Ao desativar, todas as sessões ativas devem ser encerradas imediatamente (ver RF-021).
- Um novo login em conta desativada deve disparar o fluxo de reativação (RF-020).
- Os dados da conta devem ser preservados durante a desativação (ação reversível).
RF-023 - Exclusão de Conta¶
- Descrição: O sistema deve permitir que o usuário solicite a exclusão permanente da própria conta.
<Backward: G-014.4.2.>Forward: EPIC-006.- Tipo: Funcional.
- Subtipo: Segurança de Conta.
- Prioridade: Must.
- Critério de aceitação:
- A exclusão de conta deve remover em cascata todos os Cadernos e Itens do usuário - diferente da deleção isolada de um Caderno, que preserva os itens movendo-os para a Inbox (ver RF-011).
RF-024 - Alteração de Senha¶
- Descrição: O sistema deve permitir que o usuário autenticado altere a própria senha a partir do módulo de Configurações, exigindo a senha atual como reautenticação.
<Backward: G-014.6.>Forward: EPIC-006.- Tipo: Funcional.
- Subtipo: Configurações.
- Prioridade: Must.
- Critério de aceitação:
- A nova senha deve estar sujeita à mesma política mínima de senha do cadastro (RF-017).
- A troca bem-sucedida deve invalidar as demais sessões ativas, mantendo apenas a sessão corrente (ver RF-021).
RNF-002 - Exigência de Sessão Válida¶
- Descrição: O sistema deve exigir uma sessão autenticada válida para toda operação de leitura/escrita sobre Cadernos, Itens e Sub-itens; não há acesso anônimo aos dados do usuário.
<Backward: G-014.7.>Forward: EPIC-005.- Tipo: Não Funcional.
- Subtipo: Segurança.
- Prioridade: Must.
RNF-003 - Restrição de Escopo de Autenticação¶
- Descrição: O sistema não deve oferecer, nesta versão, verificação de e-mail, recuperação de senha (“esqueci minha senha”), múltiplos métodos de login (ex.: login social) ou autenticação multifator (2FA).
<Backward: G-014 (OBS-004).>Forward: EPIC-005.- Tipo: Não Funcional.
- Subtipo: Restrição de Escopo.
- Prioridade: Won’t (nesta versão).