000 — Custos mensais da casa (registrar, listar, buscar, reajustar)
A gente registra, lista, busca e reajusta os custos recorrentes mensais da casa (internet, aluguel, energia, streaming…).
Scenario: Registrar os custos do mês
Section titled “Scenario: Registrar os custos do mês”- Given um orçamento da casa em BRL
- When a gente cadastra três custos recorrentes:
- Internet Vivo — R$ 120, categoria
internet, vence dia 10, ativa desde jun/2026, no cartão - Aluguel — R$ 2.500, categoria
moradia, vence dia 5, ativo desde jan/2026, no pix - Energia CPFL — R$ 200, categoria
energia, vence dia 15, ativa desde jan/2026, no débito
- Internet Vivo — R$ 120, categoria
- Then o orçamento lista as três contas
- And o total mensal é R$ 2.820
Scenario: Buscar e filtrar os custos da casa
Section titled “Scenario: Buscar e filtrar os custos da casa”- Given o orçamento da casa com as três contas registradas
- When a gente busca textualmente por “Internet Vivo”, “vivo” ou “VIVO”
- Then acha a Internet Vivo em qualquer caso (busca exata, parcial e case-insensitive)
- And filtrar por categoria
energiaretorna a Energia CPFL - And filtrar por categoria
moradiaretorna o Aluguel - And filtrar por vencimento dia 10 retorna a Internet Vivo
- And filtrar por vencimento dia 5 retorna o Aluguel
Scenario: Reajustar uma conta sem perder a identidade
Section titled “Scenario: Reajustar uma conta sem perder a identidade”- Given o orçamento da casa com a Internet Vivo em R$ 120
- When a gente reajusta o valor para R$ 150
- Then continua sendo a mesma conta (mesmo
id) - And o valor passa a ser R$ 150
- And o total mensal sobe para R$ 2.850
Modelo
Section titled “Modelo”- Aggregate Root —
Budget(nome,currency, coleção deRecurringExpense; toda operação entra por ele). - Entity —
RecurringExpense(idpróprio; compõe os VOs abaixo). - Value Objects —
Money,ExpenseName,CategoryName,BillingDay,Recurrence,ActivePeriod,PaymentMethodName,Notes.
Fora de escopo
Section titled “Fora de escopo”Repositório/persistência, eventos, API, encerramento de recorrência, semantic search, casos de erro (happy path only).
Próximo passo
Section titled “Próximo passo”Implementar Aggregate + Entity + VOs até os três scenarios do spec passarem.