FOSSredder 0.5.0
Loading...
Searching...
No Matches
AnalysisService.h
Go to the documentation of this file.
1
5
6#pragma once
7
14
15#include <memory>
16#include <optional>
17#include <string>
18#include <vector>
19
21class IAnalysisRenderer;
22} // namespace core::ports::analysis_rendering
23
25
31public:
32 AnalysisService() = default;
33 explicit AnalysisService(
34 std::shared_ptr<
36 imageRenderer);
37 ~AnalysisService() = default;
38
41 AnalysisService(AnalysisService &&) noexcept = default;
42 AnalysisService &operator=(AnalysisService &&) noexcept = default;
43
53 core::ports::analysis::AnalysisResult
54 runAnalysis(const core::domain::catalog::WorkspaceCatalog &state,
55 const core::ports::analysis::AnalysisRequest &request) const;
56
61 core::ports::analysis::AnalysisResult runAnalysis(
62 const core::ports::workspace::WorkspaceSnapshot &workspace,
63 const core::ports::analysis::AnalysisRequest &request) const override;
64
74 core::ports::analysis::AnalysisResult
75 runAnalysisById(const core::domain::catalog::WorkspaceCatalog &state,
76 const std::string &analysisId,
77 const std::string &filterSpec = {}) const;
78
90 const std::string &filterSpec = {}) const;
91
99 std::vector<std::shared_ptr<core::domain::Transaction>>
101 const std::string &filterSpec = {}) const;
102
110 const core::ports::analysis::AnalysisFilterSelection &filter) const override;
111
113 const std::string &dateField, const std::string &dateMode,
114 const std::string &year, const std::string &dateFrom,
115 const std::string &dateTo, const std::vector<std::string> &propertyIds,
116 const std::vector<std::string> &contractTypes,
117 const std::string &allocatableMode) const override;
118
125 parseFilterSpec(const std::string &filterSpec) const override;
126
132 std::string buildFilterSpec(
134 const override;
135
136 std::string buildAnalysisConfigJson(
137 const core::ports::analysis::AnalysisConfigInput &input) const override;
138
140 const std::vector<
142 &transactions,
143 const std::vector<std::string> &selectedTransactionIds,
144 double taxPercent) const override;
145
146 std::optional<double>
147 parseAnalysisPercentText(const std::string &text) const override;
148
151 const std::string &analysisId, bool includeCalculationAdjustments,
153 const override;
154
158 bool includeCalculationAdjustments,
159 const std::string &unassignedLabel) const override;
160
161 std::vector<std::string> contractTypes(
163 const override;
164
165private:
167 withRenderedArtifacts(const core::ports::analysis::AnalysisRequest &request,
169
170 std::shared_ptr<core::ports::analysis_rendering::IAnalysisRenderer>
171 imageRenderer_;
172};
173
174} // namespace core::application::analysis
175
176namespace core::application {
178}
Domain model for persisted analysis definitions.
Declares analysis use-case request DTOs and filter-spec helpers.
Declares the analysis execution result port contract.
Analysis use-case port consumed by UI workflows.
Domain model for transactions.
Domain aggregate that stores catalog entities for one workspace.
Coordinates analysis lookup, execution, and transaction preview filtering.
std::string buildFilterSpec(const core::ports::analysis::AnalysisFilterSelection &selection) const override
Serializes a filter selection through the analysis use case.
core::ports::analysis::AnalysisFilterSelection filterSelectionFromFields(const std::string &dateField, const std::string &dateMode, const std::string &year, const std::string &dateFrom, const std::string &dateTo, const std::vector< std::string > &propertyIds, const std::vector< std::string > &contractTypes, const std::string &allocatableMode) const override
Builds a normalized filter selection from raw field values.
AnalysisService & operator=(const AnalysisService &)=delete
core::ports::analysis::AnalysisResult runAnalysisById(const core::domain::catalog::WorkspaceCatalog &state, const std::string &analysisId, const std::string &filterSpec={}) const
Resolves an analysis by identifier and executes it.
AnalysisService(AnalysisService &&) noexcept=default
core::ports::analysis::AnalysisAdjustmentAmounts buildAnalysisAdjustments(const std::vector< core::ports::analysis::AnalysisAdjustmentTransactionInput > &transactions, const std::vector< std::string > &selectedTransactionIds, double taxPercent) const override
std::optional< double > parseAnalysisPercentText(const std::string &text) const override
Parses user-entered analysis percentage text.
std::vector< std::shared_ptr< core::domain::Transaction > > filterTransactions(const core::domain::catalog::WorkspaceCatalog &state, const std::string &filterSpec={}) const
Returns the transactions matched by one analysis filter specification.
core::ports::analysis::AnalysisResult runAnalysis(const core::domain::catalog::WorkspaceCatalog &state, const core::ports::analysis::AnalysisRequest &request) const
Runs one analysis request against the supplied workspace state.
std::vector< std::string > contractTypes(const core::ports::workspace::WorkspaceSnapshot &workspace) const override
Returns available contract types for analysis filters.
core::ports::analysis::AnalysisResult computeAnalysis(const core::domain::Analysis &analysis, const core::domain::catalog::WorkspaceCatalog &state, const std::string &filterSpec={}) const
Computes a concrete analysis definition against the supplied workspace state.
core::ports::analysis::AnalysisTableState projectTableState(const core::ports::analysis::AnalysisResult &result, const core::ports::analysis::AnalysisAdjustmentAmounts &adjustments, bool includeCalculationAdjustments, const std::string &unassignedLabel) const override
Projects analysis result table state for UI consumption.
core::ports::analysis::AnalysisPreviewResult previewTransactions(const core::ports::workspace::WorkspaceSnapshot &workspace, const core::ports::analysis::AnalysisFilterSelection &filter) const override
Returns port-native transaction preview rows for one filter specification.
void applyAnalysisPreviewOverrides(core::ports::workspace::WorkspaceSnapshot &workspace, const std::string &analysisId, bool includeCalculationAdjustments, const core::ports::analysis::AnalysisAdjustmentAmounts &adjustments) const override
Applies preview-only analysis fields to a workspace snapshot.
AnalysisService(const AnalysisService &)=delete
core::ports::analysis::AnalysisFilterSelection parseFilterSpec(const std::string &filterSpec) const override
Parses a serialized filter spec through the analysis use case.
std::string buildAnalysisConfigJson(const core::ports::analysis::AnalysisConfigInput &input) const override
Builds serialized analysis configuration from typed input.
Renders analysis results to image artifacts.
analysis::AnalysisService AnalysisService
std::vector< std::pair< std::string, double > > AnalysisAdjustmentAmounts
Adjustment amount pairs keyed by transaction id.