Pular para conteúdo

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 para Ativa.
  • < 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 Ativa e 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.

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, Secure e SameSite.
  • < 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).