# 非固定预处理任务:整机切换与稳定窗口 `measurements.batch.data_preparation=fixed_code`的本地批次直接采用`prepared_data.agent_data_path`中的切换和风量结果,不执行本文流程;见[批次工作流](batch.md)。以下仅适用于需要自行处理原始时序的其他任务。 原始时序往往同时包含运行段、停机零值和过渡段。**整条 operating_series 的平均值不是稳定运行风量**;也不能仅筛 value>0 后平均就替代按规则选择的窗口。将这些平均值用于风量差会误判。 ## 根据实际数据实现事件定位 - 按矿井与 fan_id 分组、按 observed_at 排序。使用完整整机状态;保留未知和冲突。 - 从连续有效记录定位 running→stopped、stopped→running;相邻状态的采样间隔超过规则允许缺口时,不跨缺口推断动作。相同时间有冲突也不能强行挑一条。 - 配对原机停机和另一台启动,保存 from_fan_id、to_fan_id、from_stopped_at、to_started_at。只有 switched_at 不够。 - 等待间隔为 max(启动时刻−停机时刻, 0),用分钟表示;先启动后停机时另存重叠时长。 - 不用一号、二号编号直接猜当前主用/备用;由实际动作确定方向。 ## 按冻结规则建立两个运行窗口 令 stop 为原机停机,start 为另一台启动;transition_minutes 和 window_minutes 来自 rules.json。 - before_end = min(stop, start) − transition_minutes。 - before_start = before_end − window_minutes。 - after_start = max(stop, start) + transition_minutes。 - after_end = after_start + window_minutes。 在原机上取 before_start≤t