FOSSredder 0.5.0
Loading...
Searching...
No Matches
IAnalysisRunner.h
Go to the documentation of this file.
1
5
6#pragma once
7
11
12#include <optional>
13#include <string>
14#include <vector>
15
16namespace core::ports::analysis {
17
19public:
23 virtual ~IAnalysisRunner() = default;
24
31 [[nodiscard]] virtual AnalysisResult
33 const AnalysisRequest& request) const = 0;
34
41 [[nodiscard]] virtual AnalysisPreviewResult
43 const AnalysisFilterSelection& filter) const = 0;
44
58 const std::string& dateField,
59 const std::string& dateMode,
60 const std::string& year,
61 const std::string& dateFrom,
62 const std::string& dateTo,
63 const std::vector<std::string>& propertyIds,
64 const std::vector<std::string>& contractTypes,
65 const std::string& allocatableMode) const = 0;
66
72 [[nodiscard]] virtual AnalysisFilterSelection
73 parseFilterSpec(const std::string& filterSpec) const = 0;
74
80 [[nodiscard]] virtual std::string
81 buildFilterSpec(const AnalysisFilterSelection& selection) const = 0;
82
88 [[nodiscard]] virtual std::string
90
99 const std::vector<AnalysisAdjustmentTransactionInput>& transactions,
100 const std::vector<std::string>& selectedTransactionIds,
101 double taxPercent) const = 0;
102
108 [[nodiscard]] virtual std::optional<double>
109 parseAnalysisPercentText(const std::string& text) const = 0;
110
120 const std::string& analysisId,
121 bool includeCalculationAdjustments,
122 const AnalysisAdjustmentAmounts& adjustments) const = 0;
123
133 const AnalysisResult& result,
134 const AnalysisAdjustmentAmounts& adjustments,
135 bool includeCalculationAdjustments,
136 const std::string& unassignedLabel) const = 0;
137
143 [[nodiscard]] virtual std::vector<std::string> contractTypes(
145};
146
147} // namespace core::ports::analysis
Declares analysis use-case request DTOs and filter-spec helpers.
Declares the analysis execution result port contract.
Immutable workspace read-model snapshot exposed through workspace ports.
virtual AnalysisResult runAnalysis(const core::ports::workspace::WorkspaceSnapshot &workspace, const AnalysisRequest &request) const =0
Computes an analysis result from a workspace snapshot and request.
virtual AnalysisPreviewResult previewTransactions(const core::ports::workspace::WorkspaceSnapshot &workspace, const AnalysisFilterSelection &filter) const =0
Builds the transactions that would participate in an analysis.
virtual 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 =0
Builds a normalized filter selection from raw field values.
virtual AnalysisTableState projectTableState(const AnalysisResult &result, const AnalysisAdjustmentAmounts &adjustments, bool includeCalculationAdjustments, const std::string &unassignedLabel) const =0
Projects analysis result table state for UI consumption.
virtual AnalysisFilterSelection parseFilterSpec(const std::string &filterSpec) const =0
Parses a serialized analysis filter specification.
virtual std::string buildAnalysisConfigJson(const AnalysisConfigInput &input) const =0
Builds serialized analysis configuration from typed input.
virtual ~IAnalysisRunner()=default
Destroys the analysis runner port.
virtual AnalysisAdjustmentAmounts buildAnalysisAdjustments(const std::vector< AnalysisAdjustmentTransactionInput > &transactions, const std::vector< std::string > &selectedTransactionIds, double taxPercent) const =0
Builds adjustment amounts for selected transactions.
virtual void applyAnalysisPreviewOverrides(core::ports::workspace::WorkspaceSnapshot &workspace, const std::string &analysisId, bool includeCalculationAdjustments, const AnalysisAdjustmentAmounts &adjustments) const =0
Applies preview-only analysis fields to a workspace snapshot.
virtual std::string buildFilterSpec(const AnalysisFilterSelection &selection) const =0
Serializes a normalized analysis filter selection.
virtual std::optional< double > parseAnalysisPercentText(const std::string &text) const =0
Parses user-entered analysis percentage text.
virtual std::vector< std::string > contractTypes(const core::ports::workspace::WorkspaceSnapshot &workspace) const =0
Returns available contract types for analysis filters.
std::vector< std::pair< std::string, double > > AnalysisAdjustmentAmounts
Adjustment amount pairs keyed by transaction id.