Refactor pagination sorting parameters across multiple controllers and services to use the new SortDirection enum; update related API models and TypeScript definitions for consistency. Fix minor documentation and naming inconsistencies in the Bot and Data controllers.

This commit is contained in:
2025-12-14 20:23:26 +07:00
parent cb6b52ef4a
commit bcb00b9a86
30 changed files with 251 additions and 202 deletions

View File

@@ -47,7 +47,7 @@ public interface IBotService
/// <param name="ticker">Filter by ticker (partial match, case-insensitive)</param>
/// <param name="agentName">Filter by agent name (partial match, case-insensitive)</param>
/// <param name="sortBy">Sort field</param>
/// <param name="sortDirection">Sort direction ("Asc" or "Desc")</param>
/// <param name="sortDirection">Sort direction</param>
/// <param name="showOnlyProfitable">Whether to show only profitable bots (ROI > 0)</param>
/// <returns>Tuple containing the bots for the current page and total count</returns>
Task<(IEnumerable<Bot> Bots, int TotalCount)> GetBotsPaginatedAsync(
@@ -58,7 +58,7 @@ public interface IBotService
string? ticker = null,
string? agentName = null,
BotSortableColumn sortBy = BotSortableColumn.CreateDate,
string sortDirection = "Desc",
SortDirection sortDirection = SortDirection.Desc,
bool showOnlyProfitable = false);
/// <summary>

View File

@@ -7,7 +7,7 @@ namespace Managing.Application.Abstractions
{
public interface IScenarioService
{
Task<Scenario> CreateScenario(string name, List<string> strategies, int? loopbackPeriod = 1);
Task<Scenario> CreateScenario(string name, List<string> strategies, int loopbackPeriod = 1);
Task<IEnumerable<IndicatorBase>> GetIndicatorsAsync();
Task<bool> UpdateScenario(string name, List<string> strategies, int? loopbackPeriod);

View File

@@ -151,7 +151,7 @@ public class JobService
if (backtestRequest.Config.Scenario != null)
{
var sReq = backtestRequest.Config.Scenario;
scenario = new LightScenario(sReq.Name, sReq.LoopbackPeriod)
scenario = new LightScenario(sReq.Name, sReq.LookbackPeriod)
{
Indicators = sReq.Indicators?.Select(ind => new LightIndicator(ind.Name, ind.Type)
{

View File

@@ -176,7 +176,7 @@ public class BacktestFuturesBot : TradingBotBase, ITradingBot
throw new ArgumentNullException(nameof(Config.Scenario), "Config.Scenario cannot be null");
// Use TradingBox.GetSignal for backtest with pre-calculated indicators
var backtestSignal = TradingBox.GetSignal(candles, Config.Scenario, Signals, Config.Scenario.LoopbackPeriod,
var backtestSignal = TradingBox.GetSignal(candles, Config.Scenario, Signals, Config.Scenario.LookbackPeriod,
preCalculatedIndicatorValues);
if (backtestSignal == null) return;

View File

@@ -180,7 +180,7 @@ public class BacktestSpotBot : TradingBotBase, ITradingBot
throw new ArgumentNullException(nameof(Config.Scenario), "Config.Scenario cannot be null");
// Use TradingBox.GetSignal for backtest with pre-calculated indicators
var backtestSignal = TradingBox.GetSignal(candles, Config.Scenario, Signals, Config.Scenario.LoopbackPeriod,
var backtestSignal = TradingBox.GetSignal(candles, Config.Scenario, Signals, Config.Scenario.LookbackPeriod,
preCalculatedIndicatorValues);
if (backtestSignal == null) return;

View File

@@ -487,7 +487,7 @@ namespace Managing.Application.ManageBot
string? ticker = null,
string? agentName = null,
BotSortableColumn sortBy = BotSortableColumn.CreateDate,
string sortDirection = "Desc",
SortDirection sortDirection = SortDirection.Desc,
bool showOnlyProfitable = false)
{
return await ServiceScopeHelpers.WithScopedService<IBotRepository, (IEnumerable<Bot> Bots, int TotalCount)>(

View File

@@ -68,7 +68,7 @@ public class ScenarioRunnerGrain : Grain, IScenarioRunnerGrain
// Get candles as ordered List (already ordered by date from CandleStoreGrain)
var candlesList = await GetCandlesAsync(tradingExchanges, config);
if (candlesList.Count == 0)
{
_logger.LogWarning($"No candles available for {config.Ticker} for {config.Name}");
@@ -88,7 +88,7 @@ public class ScenarioRunnerGrain : Grain, IScenarioRunnerGrain
candlesList,
config.Scenario,
previousSignals,
config.Scenario?.LoopbackPeriod ?? 1);
config.Scenario?.LookbackPeriod ?? 1);
if (signal != null && signal.Date > candle.Date)
{

View File

@@ -20,7 +20,7 @@ namespace Managing.Application.Scenarios
_tradingService = tradingService;
}
public async Task<Scenario> CreateScenario(string name, List<string> strategies, int? loopbackPeriod = 1)
public async Task<Scenario> CreateScenario(string name, List<string> strategies, int loopbackPeriod = 1)
{
var scenario = new Scenario(name, loopbackPeriod);
@@ -77,7 +77,7 @@ namespace Managing.Application.Scenarios
scenario.AddIndicator(await _tradingService.GetIndicatorByNameAsync(strategy));
}
scenario.LoopbackPeriod = loopbackPeriod ?? 1;
scenario.LookbackPeriod = loopbackPeriod ?? 1;
await _tradingService.UpdateScenarioAsync(scenario);
return true;
}
@@ -262,7 +262,7 @@ namespace Managing.Application.Scenarios
}
scenario.Indicators.Clear();
scenario.LoopbackPeriod = loopbackPeriod ?? 1;
scenario.LookbackPeriod = loopbackPeriod ?? 1;
foreach (var strategyName in strategies)
{

View File

@@ -225,7 +225,7 @@ public class BundleBacktestWorker : BaseWorker<BundleBacktestWorker>
if (runBacktestRequest.Config.Scenario != null)
{
var sReq = runBacktestRequest.Config.Scenario;
scenario = new LightScenario(sReq.Name, sReq.LoopbackPeriod)
scenario = new LightScenario(sReq.Name, sReq.LookbackPeriod)
{
Indicators = sReq.Indicators?.Select(i => new LightIndicator(i.Name, i.Type)
{