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; } } }