namespace Admin.NET.Plugin.AiDOP.Entity.S8.OrderFlow;
///
/// S8-ORDER-CHAIN-BODY-PRODUCTION-ORDER-LEVEL-SEED-FIX-1:
/// S8 订单执行链路本体生产「操作员表现」表(baseline + 订单级 SEED)。
///
/// operator_code 取值:OP_ZHANG / OP_LI / OP_WANG(演示固定 3 个操作员)。
/// - avg_hours:baseline 20.00/10.00/8.00;订单级 round(baseline*ratio,2)。
/// - status:baseline red/yellow/green(按 fixture 颜色固化);订单级保持每个操作员的 status(按用户规则结构保留)。
///
[SugarTable("ado_s8_order_flow_manufacturing_operator", "S8 订单执行链路本体生产操作员表现")]
[SugarIndex("idx_order_flow_mfg_operator_baseline", nameof(TenantId), OrderByType.Asc, nameof(FactoryId), OrderByType.Asc, nameof(OperatorCode), OrderByType.Asc)]
[SugarIndex("idx_order_flow_mfg_operator_order", nameof(TenantId), OrderByType.Asc, nameof(FactoryId), OrderByType.Asc, nameof(OrderCode), OrderByType.Asc)]
[SugarIndex("idx_order_flow_mfg_operator_scenario", nameof(TenantId), OrderByType.Asc, nameof(FactoryId), OrderByType.Asc, nameof(ScenarioCode), OrderByType.Asc, nameof(IsDeleted), OrderByType.Asc)]
public class AdoS8OrderFlowManufacturingOperator
{
[SugarColumn(ColumnName = "id", IsPrimaryKey = true, ColumnDataType = "bigint")]
public long Id { get; set; }
/// NULL = baseline 行;非 NULL = 订单级行。
[SugarColumn(ColumnName = "order_id", ColumnDataType = "bigint", IsNullable = true)]
public long? OrderId { get; set; }
/// NULL = baseline 行;非 NULL = 订单业务键。
[SugarColumn(ColumnName = "order_code", Length = 64, IsNullable = true)]
public string? OrderCode { get; set; }
/// 操作员编码:OP_ZHANG / OP_LI / OP_WANG。
[SugarColumn(ColumnName = "operator_code", Length = 32)]
public string OperatorCode { get; set; } = string.Empty;
/// 操作员姓名:张师傅 / 李师傅 / 王师傅。
[SugarColumn(ColumnName = "operator_name", Length = 64)]
public string OperatorName { get; set; } = string.Empty;
/// 平均工时(小时)。baseline 20.00/10.00/8.00;订单级 round(baseline*ratio,2)。decimal(6,2)。
[SugarColumn(ColumnName = "avg_hours", DecimalDigits = 2, Length = 6)]
public decimal AvgHours { get; set; }
/// 状态:green / yellow / red(按操作员固化;订单级复用 baseline 同色)。
[SugarColumn(ColumnName = "status", Length = 16)]
public string Status { get; set; } = "green";
/// 排序号 1..3。
[SugarColumn(ColumnName = "sort_no", ColumnDataType = "int")]
public int SortNo { get; set; }
/// BASELINE_PPT / ORDER_LEVEL。
[SugarColumn(ColumnName = "scenario_code", Length = 16)]
public string ScenarioCode { get; set; } = "BASELINE_PPT";
/// SEED / IMPORT / AGG。
[SugarColumn(ColumnName = "data_source", Length = 16)]
public string DataSource { get; set; } = "SEED";
[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; }
}