Class FundamentalAnalysisService
java.lang.Object
com.raphaelsalles.backend.domain.service.financial.FundamentalAnalysisService
Serviço responsável pela geração de Análises Fundamentalistas a partir de dados contábeis brutos.
Papel na Arquitetura: Atua como um motor de cálculo e inteligência de negócio. Transforma dados frios (Balanço Patrimonial, DRE) em indicadores de decisão (Margem Líquida, ROE, Status de Saúde).
Responsabilidades Principais:- Cálculo de indicadores financeiros (ROE, Margem Líquida).
- Classificação automática de saúde financeira ("EXCELENTE", "EM ALERTA").
- Self-Healing: Capacidade de corrigir dados faltantes no demonstrativo principal buscando nas linhas detalhadas.
- Persistência e atualização da entidade
StockAnalysis.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AssetRepositoryprivate final StockAnalysisRepository -
Constructor Summary
ConstructorsConstructorDescriptionFundamentalAnalysisService(StockAnalysisRepository repository, AssetRepository assetRepository) -
Method Summary
Modifier and TypeMethodDescriptionanalyze(FinancialStatement statement) Realiza a análise fundamentalista de um demonstrativo financeiro.private booleanisZero(BigDecimal val) private BigDecimalresolveValue(FinancialStatement stmt, BigDecimal mainValue, String... targetCodes)
-
Field Details
-
repository
-
assetRepository
-
-
Constructor Details
-
FundamentalAnalysisService
public FundamentalAnalysisService(StockAnalysisRepository repository, AssetRepository assetRepository)
-
-
Method Details
-
analyze
Realiza a análise fundamentalista de um demonstrativo financeiro.Este método é idempotente e resiliente: se faltarem dados sumarizados (ex: Lucro Líquido zerado no cabeçalho), ele varre as linhas detalhadas (AccountLines) para tentar encontrar o valor correto antes de calcular.
- Parameters:
statement- O demonstrativo financeiro (DFP/ITR) a ser analisado.- Returns:
- A entidade
StockAnalysisatualizada e persistida.
-
resolveValue
private BigDecimal resolveValue(FinancialStatement stmt, BigDecimal mainValue, String... targetCodes) -
isZero
-