namespace Admin.NET.Plugin.AiDOP.Entity.S8;
///
/// S8 监控对象字典(订单交付/订单变更/供应商交付/IQC 检验/生产工单/库存等)。
/// 全局基线 + 工厂覆盖:tenant_id=0/factory_id=0 表示 baseline,可按 (tenant_id,factory_id) 覆盖。
/// CONFIG-MONITOR-DICT-READONLY-SEED-1:本轮只读字典,前端 wizard 替代 BUSINESS_MONITOR_OPTIONS。
///
[SugarTable("ado_s8_monitor_object", "S8 监控对象字典")]
[SugarIndex("uk_s8_monitor_object_tenant_factory_code", nameof(TenantId), OrderByType.Asc, nameof(FactoryId), OrderByType.Asc, nameof(ObjectCode), OrderByType.Asc, IsUnique = true)]
[SugarIndex("idx_s8_monitor_object_tfe", nameof(TenantId), OrderByType.Asc, nameof(FactoryId), OrderByType.Asc, nameof(Enabled), OrderByType.Asc)]
public class AdoS8MonitorObject
{
[SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true, ColumnDataType = "bigint")]
public long Id { get; set; }
[SugarColumn(ColumnName = "tenant_id", ColumnDataType = "bigint")]
public long TenantId { get; set; }
[SugarColumn(ColumnName = "factory_id", ColumnDataType = "bigint")]
public long FactoryId { get; set; }
/// 对象编码(业务唯一),如 ORDER_DELIVERY / ORDER_CHANGE / PURCHASE_DELIVERY。
[SugarColumn(ColumnName = "object_code", Length = 64)]
public string ObjectCode { get; set; } = string.Empty;
/// 对象类型分组:ORDER / PURCHASE_ORDER / WORK_ORDER / IQC / INVENTORY 等。
[SugarColumn(ColumnName = "object_type", Length = 64)]
public string ObjectType { get; set; } = string.Empty;
/// 对象中文名(订单交付/订单变更/供应商交付/...)。
[SugarColumn(ColumnName = "object_name", Length = 128)]
public string ObjectName { get; set; } = string.Empty;
/// 规则执行时的物理源表名(demo_test_order 等);为空时表达式生成器走 WHERE 1=0 占位。
[SugarColumn(ColumnName = "source_table", Length = 128, IsNullable = true)]
public string? SourceTable { get; set; }
[SugarColumn(ColumnName = "enabled", ColumnDataType = "boolean")]
public bool Enabled { get; set; } = true;
[SugarColumn(ColumnName = "sort_no")]
public int SortNo { get; set; }
[SugarColumn(ColumnName = "remark", Length = 512, IsNullable = true)]
public string? Remark { get; set; }
[SugarColumn(ColumnName = "created_at")]
public DateTime CreatedAt { get; set; } = DateTime.Now;
[SugarColumn(ColumnName = "updated_at", IsNullable = true)]
public DateTime? UpdatedAt { get; set; }
}