namespace Admin.NET.Plugin.AiDOP.Entity.S8.Demo;
///
/// ORDER-FLOW-BE-DEMO-DATASET-RESET-1 演示基线聚合快照:chain 默认全选展示用。
/// 注意:本快照不是当前明细 20 单的实时聚合结果,而是冻结的 105 单基线展示快照,
/// 由 SeedData 一次性写入。前端 chain 默认全选独立读取此快照,与 /orders 不同源。
///
[SugarTable("ado_demo_order_flow_snapshot", "演示基线聚合快照(baseline,独立于 20 单明细)")]
[SugarIndex("uk_demo_order_flow_snapshot_code", nameof(SnapshotCode), OrderByType.Asc, true)]
public class AdoDemoOrderFlowSnapshot
{
[SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = false, ColumnDataType = "bigint")]
public long Id { get; set; }
/// 固定为 'CHAIN_AGGREGATE_BASELINE'。
[SugarColumn(ColumnName = "snapshot_code", Length = 64)]
public string SnapshotCode { get; set; } = "CHAIN_AGGREGATE_BASELINE";
/// UI 直接展示的标签文本,例如 "基线聚合 · 样本 105"。
[SugarColumn(ColumnName = "snapshot_label", Length = 64)]
public string SnapshotLabel { get; set; } = "基线聚合 · 样本 105";
[SugarColumn(ColumnName = "total_orders")]
public int TotalOrders { get; set; }
[SugarColumn(ColumnName = "total_customers")]
public int TotalCustomers { get; set; }
[SugarColumn(ColumnName = "avg_response_minutes", DecimalDigits = 2, Length = 8)]
public decimal AvgResponseMinutes { get; set; }
[SugarColumn(ColumnName = "avg_processing_minutes", DecimalDigits = 2, Length = 8)]
public decimal AvgProcessingMinutes { get; set; }
[SugarColumn(ColumnName = "avg_loss_minutes", DecimalDigits = 2, Length = 8)]
public decimal AvgLossMinutes { get; set; }
/// 5 阶段聚合 JSON 数组:stageKey/stageName/ownerDept/kpiAvgDays/actualAvgDays/onTimeRate/green/yellow/red/pending。
[SugarColumn(ColumnName = "stage_snapshots_json", ColumnDataType = "longtext", IsJson = false)]
public string StageSnapshotsJson { get; set; } = "[]";
[SugarColumn(ColumnName = "remark", Length = 256, IsNullable = true)]
public string? Remark { get; set; }
[SugarColumn(ColumnName = "tenant_id", ColumnDataType = "bigint")]
public long TenantId { get; set; }
[SugarColumn(ColumnName = "factory_id", ColumnDataType = "bigint")]
public long FactoryId { get; set; }
[SugarColumn(ColumnName = "created_at")]
public DateTime CreatedAt { get; set; } = DateTime.Now;
[SugarColumn(ColumnName = "updated_at", IsNullable = true)]
public DateTime? UpdatedAt { get; set; }
[SugarColumn(ColumnName = "is_deleted", ColumnDataType = "boolean")]
public bool IsDeleted { get; set; }
}