Files
Finlytic/FinlyticEngine/Services/Ai/IAiReasoningGateService.cs

35 lines
1.6 KiB
C#

using System.Threading;
using System.Threading.Tasks;
using FinlyticCore.Dtos.Fundamentals;
using FinlyticCore.Dtos.Sentiment;
using FinlyticCore.Dtos.Simulation;
using FinlyticCore.Dtos.TechnicalAnalysis;
using FinlyticCore.Dtos.Trading;
using FinlyticEngine.Services.Scoring;
namespace FinlyticEngine.Services.Ai;
public interface IAiReasoningGateService
{
/// <summary>
/// Validiert ein technisches Setup entweder über den konfigurierten KI-Webhook oder, falls das
/// Gate deaktiviert ist bzw. der Webhook nicht verfügbar ist, über eine regelbasierte
/// Ersatzentscheidung. Das Ergebnis kennzeichnet über <see cref="AiValidationResultDto.Source"/>
/// eindeutig, welcher der beiden Fälle vorliegt.
/// </summary>
/// <param name="reliability">
/// FinlyticSimulation's backtest-reliability verdict for this exact (Isin, StrategyKey) combination, if
/// one has ever been computed (see <c>QuantSimulationEngine</c>) - forwarded onto the AI payload so the
/// model sees the same win-rate/profit-factor evidence <see cref="ICompositeOpportunityScorer"/> already
/// used for its bonus/veto. <see langword="null"/> when nobody has ever run a backtest for this
/// combination yet (never fabricated, Rules.md §4).
/// </param>
Task<AiValidationResultDto> ValidateOpportunityAsync(
StrategyResultDto setup,
IsinSentimentSummaryDto? sentiment,
AssetFundamentalsDto? fundamentals,
ScoringResult score,
StrategyAssetReliabilityDto? reliability = null,
CancellationToken cancellationToken = default);
}