namespace IvfTl.AutoFocus.Layout
{
///
/// 两级原始配置值(可空),喂给 做就近优先解析(§2.5)。
/// 调用方(M2-03/M2-04/M2-07)从 DB 读 house_well_setting / tl_setting 填好后传入,取数与解析解耦。
///
/// 字段对齐 sql/migrations/2026-06-17-autofocus-data-layer.sql:
/// well 级(house_well_setting):focus_layer_spacing_pulse / focus_layer_count / move_down_layer(复用)
/// 设备级(tl_setting):focus_layer_spacing_pulse / focus_layer_count / focus_layer_down
///
/// ⚠ EEPROM 值不在此入参中(§2.5:EEPROM 仅参考,不进解析链),故天然不会被纳入解析。
///
public sealed class FocusLayerRawConfig
{
// ---- well 级覆盖(house_well_setting,可空;空=继承设备级)----
/// house_well_setting.focus_layer_spacing_pulse(well 级层间距覆盖)。
public int? WellSpacingPulse { get; init; }
/// house_well_setting.focus_layer_count(well 级层数覆盖)。
public int? WellLayerCount { get; init; }
/// house_well_setting.move_down_layer(well 级下移层数覆盖,复用既有列)。
public int? WellMoveDownLayer { get; init; }
// ---- 设备级(tl_setting)----
/// tl_setting.focus_layer_spacing_pulse(工艺值,无 SQL 默认;缺失须报错)。
public int? DeviceSpacingPulse { get; init; }
/// tl_setting.focus_layer_count(SQL DEFAULT 5)。
public int? DeviceLayerCount { get; init; }
/// tl_setting.focus_layer_down(SQL DEFAULT 2)。
public int? DeviceLayerDown { get; init; }
// ---- 报错信息用(不参与计算)----
/// 设备 tl_sn,用于缺配置异常消息。
public string TlSn { get; init; }
/// 仓室编号,用于异常定位。
public int HouseSn { get; init; }
/// well 编号,用于异常定位。
public int WellSn { get; init; }
}
}