fix: 添加缺失的 StrategySignalResponse DTO

- 新增 StrategySignalResponse 类(策略信号响应)
- 新增 SignalAction 类(信号行动建议)
- 修正 PortfolioFacade 属性名为 PascalCase
This commit is contained in:
OpenClaw Agent 2026-03-15 13:14:22 +00:00
parent 625bfa1624
commit 61e3023837
2 changed files with 44 additions and 2 deletions

View File

@ -130,3 +130,45 @@ public class StrategyListItemDto
public DateTime CreatedAt { get; set; } public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; } public DateTime UpdatedAt { get; set; }
} }
/// <summary>
/// 策略信号响应
/// </summary>
public class StrategySignalResponse
{
/// <summary>
/// 信号类型buy / sell / hold / rebalance
/// </summary>
public string? Signal { get; set; }
/// <summary>
/// 信号原因说明
/// </summary>
public string? Reason { get; set; }
/// <summary>
/// 建议操作(可选)
/// </summary>
public List<SignalAction>? Actions { get; set; }
}
/// <summary>
/// 信号行动建议
/// </summary>
public class SignalAction
{
/// <summary>
/// 股票代码
/// </summary>
public string? Symbol { get; set; }
/// <summary>
/// 行动类型buy / sell
/// </summary>
public string? Action { get; set; }
/// <summary>
/// 目标权重或数量
/// </summary>
public double? Target { get; set; }
}

View File

@ -98,14 +98,14 @@ public class PortfolioFacade : IPortfolioFacade
var portfolio = _databaseService.GetPortfolioById(portfolioId, userId); var portfolio = _databaseService.GetPortfolioById(portfolioId, userId);
if (portfolio == null || string.IsNullOrEmpty(portfolio.StrategyId)) if (portfolio == null || string.IsNullOrEmpty(portfolio.StrategyId))
{ {
return new StrategySignalResponse { signal = "hold", reason = "未绑定策略" }; return new StrategySignalResponse { Signal = "hold", Reason = "未绑定策略" };
} }
// 获取策略 // 获取策略
var strategy = await _strategyService.GetStrategyByIdAsync(portfolio.StrategyId, userId); var strategy = await _strategyService.GetStrategyByIdAsync(portfolio.StrategyId, userId);
if (strategy == null) if (strategy == null)
{ {
return new StrategySignalResponse { signal = "hold", reason = "策略不存在" }; return new StrategySignalResponse { Signal = "hold", Reason = "策略不存在" };
} }
// 计算信号 // 计算信号