KpiDimensionConfigDtos.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. namespace Admin.NET.Plugin.AiDOP.Dto.SmartOps;
  2. /// <summary>维度配置读出 DTO。</summary>
  3. public sealed class KpiDimensionConfigDto
  4. {
  5. public long Id { get; set; }
  6. public long? TenantId { get; set; }
  7. public string MetricCode { get; set; } = string.Empty;
  8. public string ModuleCode { get; set; } = string.Empty;
  9. public long SummaryConfigId { get; set; }
  10. public int SummaryConfigVersion { get; set; }
  11. public int DimensionConfigVersion { get; set; }
  12. public string? DataSourceCode { get; set; }
  13. public string? SqlScript { get; set; }
  14. public string AggregationType { get; set; } = "SUMMARY_ONLY";
  15. public string? SupportedDimensionsJson { get; set; }
  16. public string? OutputContractJson { get; set; }
  17. public string? ParameterContractJson { get; set; }
  18. public int TimeoutSeconds { get; set; }
  19. public string PublishStatus { get; set; } = "DRAFT";
  20. public bool IsCurrent { get; set; }
  21. public string? BusinessSqlSource { get; set; }
  22. public string? ChangeRemark { get; set; }
  23. public string? Remark { get; set; }
  24. public string? CreatedBy { get; set; }
  25. public DateTime CreatedAt { get; set; }
  26. public string? PublishedBy { get; set; }
  27. public DateTime? PublishedAt { get; set; }
  28. }
  29. /// <summary>维度配置新增/编辑草稿 DTO。</summary>
  30. public sealed class KpiDimensionConfigUpsertDto
  31. {
  32. public string MetricCode { get; set; } = string.Empty;
  33. public string ModuleCode { get; set; } = string.Empty;
  34. public string? DataSourceCode { get; set; }
  35. public string? SqlScript { get; set; }
  36. public string AggregationType { get; set; } = "SUMMARY_ONLY";
  37. public string? SupportedDimensionsJson { get; set; }
  38. public string? OutputContractJson { get; set; }
  39. public string? ParameterContractJson { get; set; }
  40. public int TimeoutSeconds { get; set; }
  41. public string? BusinessSqlSource { get; set; }
  42. public string? ChangeRemark { get; set; }
  43. public string? Remark { get; set; }
  44. }
  45. /// <summary>维度试算入参。</summary>
  46. public sealed class KpiDimensionPreviewDto
  47. {
  48. public string MetricCode { get; set; } = string.Empty;
  49. public string ModuleCode { get; set; } = string.Empty;
  50. public string? DataSourceCode { get; set; }
  51. public string? SqlScript { get; set; }
  52. public string AggregationType { get; set; } = "SUMMARY_ONLY";
  53. public int TimeoutSeconds { get; set; }
  54. public DateTime? BizDate { get; set; }
  55. }
  56. /// <summary>维度试算结果(含前 N 行样本 + 契约校验)。</summary>
  57. public sealed class KpiDimensionPreviewResultDto
  58. {
  59. public bool Ok { get; set; }
  60. public string MetricCode { get; set; } = string.Empty;
  61. public string? DataSourceCode { get; set; }
  62. public string BizDate { get; set; } = string.Empty;
  63. public string ValidationStatus { get; set; } = string.Empty;
  64. public string ResultStatus { get; set; } = string.Empty;
  65. public long DurationMs { get; set; }
  66. public int RowCount { get; set; }
  67. public List<string> OutputColumns { get; set; } = new();
  68. public List<string> SupportedDimensions { get; set; } = new();
  69. public List<Dictionary<string, object?>> SampleRows { get; set; } = new();
  70. public string? ErrorCode { get; set; }
  71. public string? ErrorMessage { get; set; }
  72. public string ExecutedParameters { get; set; } = string.Empty;
  73. }
  74. /// <summary>KPI 维度能力(驱动前端筛选/下钻可用性)。</summary>
  75. public sealed class KpiDimensionCapabilityDto
  76. {
  77. public string MetricCode { get; set; } = string.Empty;
  78. public string ModuleCode { get; set; } = string.Empty;
  79. /// <summary>是否已配置并激活维度(PENDING_DIMENSION_SQL 时 false)。</summary>
  80. public bool Supported { get; set; }
  81. /// <summary>能力状态 PENDING_DIMENSION_SQL / CONFIGURED / SUMMARY_ONLY。</summary>
  82. public string CapabilityStatus { get; set; } = "PENDING_DIMENSION_SQL";
  83. public int? SummaryConfigVersion { get; set; }
  84. public int? DimensionConfigVersion { get; set; }
  85. public List<string> SupportedDimensions { get; set; } = new();
  86. public string? AggregationType { get; set; }
  87. public string? LastRunStatus { get; set; }
  88. public DateTime? LastRunAt { get; set; }
  89. }
  90. /// <summary>维度明细单行(只读查询)。</summary>
  91. public sealed class KpiDimensionDetailRowDto
  92. {
  93. public string ValueDate { get; set; } = string.Empty;
  94. public string DimensionType { get; set; } = string.Empty;
  95. public string DimensionCode { get; set; } = string.Empty;
  96. public string? DimensionName { get; set; }
  97. public decimal? MetricValue { get; set; }
  98. public decimal? Numerator { get; set; }
  99. public decimal? Denominator { get; set; }
  100. public decimal? SumValue { get; set; }
  101. public int? SampleCount { get; set; }
  102. public string? SourceKey { get; set; }
  103. public string? BatchId { get; set; }
  104. }
  105. /// <summary>维度明细只读查询结果(含按 AggregationType 复算的聚合值 + 分页明细)。</summary>
  106. public sealed class KpiDimensionDetailResultDto
  107. {
  108. public string MetricCode { get; set; } = string.Empty;
  109. /// <summary>OK / NOT_CONFIGURED。</summary>
  110. public string Status { get; set; } = "OK";
  111. public int? SummaryConfigVersion { get; set; }
  112. public int? DimensionConfigVersion { get; set; }
  113. public string? AggregationType { get; set; }
  114. /// <summary>当前筛选范围按 AggregationType 复算的聚合值(后端算,前端只展示)。</summary>
  115. public decimal? AggregateValue { get; set; }
  116. public int Total { get; set; }
  117. public List<KpiDimensionDetailRowDto> List { get; set; } = new();
  118. }