- GetNavHistoryAsync现在会自动检查是否有历史数据 - 无历史数据时自动调用BackfillNavHistoryInternalAsync - 拆分内部回填方法,避免重复验证权限
71 lines
1.8 KiB
C#
Executable File
71 lines
1.8 KiB
C#
Executable File
using SqlSugar;
|
|
|
|
namespace AssetManager.Data;
|
|
|
|
/// <summary>
|
|
/// 用户策略实例表
|
|
/// </summary>
|
|
[SugarTable("strategies")]
|
|
public class Strategy
|
|
{
|
|
/// <summary>
|
|
/// 主键
|
|
/// </summary>
|
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = false)]
|
|
public string? Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// 所属用户ID
|
|
/// </summary>
|
|
[SugarColumn(ColumnName = "user_id", Length = 100, IndexGroupNameList = new string[] { "idx_user_id" })]
|
|
public string? UserId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 策略别名/名称
|
|
/// </summary>
|
|
[SugarColumn(ColumnName = "alias", Length = 200)]
|
|
public string? Alias { get; set; }
|
|
|
|
/// <summary>
|
|
/// 策略类型 (如: ma_trend, chandelier_exit, risk_parity)
|
|
/// </summary>
|
|
[SugarColumn(ColumnName = "type", Length = 50)]
|
|
public string? Type { get; set; }
|
|
|
|
/// <summary>
|
|
/// 策略描述
|
|
/// </summary>
|
|
[SugarColumn(ColumnName = "description", Length = 500)]
|
|
public string? Description { get; set; }
|
|
|
|
/// <summary>
|
|
/// 策略标签 (逗号分隔的字符串)
|
|
/// </summary>
|
|
[SugarColumn(ColumnName = "tags")]
|
|
public string? Tags { get; set; }
|
|
|
|
/// <summary>
|
|
/// 风险等级
|
|
/// </summary>
|
|
[SugarColumn(ColumnName = "risk_level", Length = 20)]
|
|
public string? RiskLevel { get; set; }
|
|
|
|
/// <summary>
|
|
/// 策略配置项(周期,阈值,资产配比)
|
|
/// </summary>
|
|
[SugarColumn(ColumnName = "config", IsJson = true)]
|
|
public string? Config { get; set; }
|
|
|
|
/// <summary>
|
|
/// 创建时间
|
|
/// </summary>
|
|
[SugarColumn(ColumnName = "created_at")]
|
|
public DateTime CreatedAt { get; set; }
|
|
|
|
/// <summary>
|
|
/// 更新时间
|
|
/// </summary>
|
|
[SugarColumn(ColumnName = "updated_at")]
|
|
public DateTime UpdatedAt { get; set; }
|
|
}
|