namespace Admin.NET.Plugin.AiDOP.DataPlatform.S0Dim;
///
/// dim 单列的声明式映射。
///
/// 🔴 **没有默认值、不可省略**(TenantIdColumn 除外):
/// staging 的 raw_data 键是源表的**物理列名**(MdpDbPullExecutor 走 SELECT *
/// 后按 DataTable 列名序列化),而实体属性名与物理列名并不总是一致。
/// 典型反例:AdoS0LocationMaster.DomainCode 的物理列名是 Domain,
/// 同表另有一个 132 行全为空串的影子列 domain_code;
/// 任何 “属性名 → snake_case” 的自动推导都会静默取到空值且不报错。
///
/// dim 表列名。
/// 取值方式。
/// 源表**物理列名**(即 raw_data 的键)。 时必须为 null。
/// true 时生成 IS NOT NULL 过滤:取不到值的整行不进 dim(随后被行数对账捕获)。业务键列必须为 true。
/// 仅 使用。
/// 仅 使用。
public sealed record S0DimColumn(
string TargetColumn,
S0DimValueKind Kind,
string? JsonPath = null,
bool Required = false,
int Precision = 18,
int Scale = 6);