Dashboard
Visão Geral
O Dashboard atua como a central nervosa diária do usuário (FinanceDashboardService). Ele foca no tempo presente, fornecendo uma visão instantânea da liquidez e do que está prestes a acontecer nos próximos dias. Ele centraliza informações complexas utilizando consultas otimizadas e lógica de projeção.
Fluxo de Processamento (Motor)
O serviço do Dashboard utiliza uma estratégia de agregação que coleta dados de diversas origens (Tabelas) para fornecer uma resposta rápida à interface:
flowchart TD
A[Dashboard Controller] -->|Solicita Dados| B(FinanceDashboardService)
B --> C{Cache Inteligente}
C -->|Coleta Contas| D[(FinancialAccounts)]
C -->|Coleta Cartões| E[(FinancialCreditCards)]
C -->|Coleta Faturas| F[(FinancialInvoices)]
C -->|Coleta Transações| G[(FinancialTransactions)]
C --> H[Cálculo de Projeção]
H --> I[Indicadores de KPI]
H --> J["Projeção de Saldo (Mês Atual e Próximo)"]
H --> K[James Radar]
Regras de Negócio e Componentes
Indicadores KPI (Liquidez e Saldos)
O serviço consolida quatro indicadores principais baseados no “aqui e agora”:
- Saldo Líquido (Net Balance):
Saldo de Contas - Dívidas Abertas (Faturas Cartão) - Despesas Pendentes de outras fontes. - Saldo Bruto: Simples soma do patrimônio nas contas correntes/investimentos configurados.
- Receitas: Total efetivado no mês.
- Despesas: Total efetivado no mês.
Nota: O usuário possui a opção (includeInvestments) de somar ou remover contas do tipo “Investimento” deste cálculo, para isolar a liquidez do dia-a-dia do dinheiro imobilizado.
Projeção de Fluxo de Caixa (Mês Vigente e Seguinte)
Esta funcionalidade consolida transações reais postadas, transações reais pendentes e transações virtuais geradas a partir de recorrências ativas.
O algoritmo de extrapolação (getCashFlowProjections):
- Captura o saldo em conta corrente atual.
- Soma as
incomespendentes eincomesoriundos de recorrências do mês atual. - Subtrai as
expensespendentes, o montante devido em Faturas de Cartão eexpensesoriundos de recorrências do mês atual. - Retorna a previsão de Saldo Final para o Mês Atual.
- Usa essa previsão como base e repete o processo 2-3 para o Mês Seguinte, retornando a Previsão do Próximo Mês.
James Radar (O que vem a seguir)
O James Radar é o assistente inteligente que lista as próximas obrigações e receitas em ordem cronológica a partir de “Hoje” até os próximos 30 dias. Para fazer isso, ele constrói uma coleção híbrida, instanciando classes em memória:
- Transações Pendentes reais (exclui transferências).
- Recorrências Ativas cujo
next_processing_dateestá no intervalo. - Faturas de Cartão Abertas cujos dias de vencimento estão no intervalo.
Todas essas entidades assumem um “formato de pato” (duck typing), atuando perante a UI como se fossem Transações normais pendentes, facilitando a renderização na tabela sem código duplicado na View.
Controles Otimizados de Fatura
O cálculo de qual fatura o usuário deve ver no Dashboard (resolveReferenceMonth) não bate no banco de dados para buscar a melhor data; ele usa lógica pura computando dias de fechamento (closing_day) em relação a hoje e injeta dinamicamente o status e total diretamente no model retornado (card->current_invoice_total).