# 实时联合诊断改造方案(压力,先记录,暂不实现) > 注意:本文件是“**模型辅助确认**”方向的后续方案记录,尚未实现。 > 规则侧(压力/振动算法)的**实时扫描与告警落库已经实现**,见 > `全量与实时运行及告警落库.md`(`models/realtime_service.py`,每 5 分钟写入 > `compressor_alarm`)。两者不要混淆。 本文件记录把泛化模型接入 `backend/scan_pks_fault_evolution.py` 实时检测的改造方案。当前只做方案记录,代码实现和阈值标定后续再讨论。 ## 1. 目标与职责边界 - 扫描器继续负责:小时聚合、运行状态与覆盖率、周期/基线更新、小时等级、异常阶段合并,并**实时输出 `cache/pks_scanner/evolution/润滑油压力小时阶段段.csv`(结构不变)**。 - 模型只负责:对“最近 3 个有效运行小时”的窗口给出异常概率和历史相似度,作为**二次确认动作**。 - 模型不撤销规则异常,也不提前修改规则阶段起点。 ## 2. 实时流程(每 15 分钟 tick) ```text 1. 读取最新原始采样数据(沿用扫描器的读取口径) 2. 聚合当前自然小时(YSJ_41>0 判运行,运行覆盖率≥0.80) 3. 更新该机组有效运行小时序列、周期与周期基线 4. 执行现有压力小时规则,更新/合并异常阶段 5. 若该运行周期已有 ≥3 个有效小时: 取最近 3 个有效小时生成窗口(窗口结束小时 = 当前最新有效小时) 用与训练完全相同的特征函数计算特征 调用 XGBoost 压力模型 + KNN 压力相似度 6. 按 设备 + 批次 + 窗口结束小时 关联规则小时/阶段 7. 输出规则结果 + 模型确认动作 ``` - 不足 3 个有效小时:不生成窗口,只输出规则结果并标记“数据不足”,不人为补齐。 - 重启后首个有效小时:不作为模型样本。 - 模型窗口只在出现**新的完整有效小时**时更新;15 分钟内重复 tick 不产生新窗口。 ## 3. 特征一致性(必须) - 把 `build_datasets.py` 的压力特征函数(周期基线、近期 24h 基线、回撤、连续下降小时数等)抽成**共享模块**,训练与实时共用,避免口径漂移。 - 机组基准(`*_z` 的 median/MAD)从 `models/datas/artifacts/pressure/pressure_unit_baselines.json` 加载。 - 周期基线按扫描器口径:周期前 3 个自然日每日油压中位数,再取其中位数。 ## 4. 输出 - 规则输出不变:`cache/pks_scanner/evolution/润滑油压力小时阶段段.csv`。 - 模型确认动作:当前阶段先**写 CSV**(后续再讨论改为数据库字段/通知等形式),建议: - 文件:`models/results/pressure/压力实时确认.csv` - 唯一键:`机组 + 批次 + 窗口结束小时`;15 分钟 tick 内更新同一行,不重复追加。 - 字段:机组、批次、窗口开始/结束小时、规则小时等级、阶段编号(若已形成)、模型异常概率、最相似历史异常样本、相似度、联合判断、原因。 - 原因 = 规则触发依据 + 相对周期基线变化/回撤/连续下降小时数 + 模型概率 + 最相似异常样本。 ## 5. 联合状态与阈值 联合判断沿用 `PKS润滑油压力与振动算法说明.md` 10.5 的状态: ```text 数据不足 / 规则正常 / 模型疑似异常 / 模型辅助确认 / 规则与模型不一致 ``` 优先级: 1. 数据不足 → 输出“数据不足”,不输出正常。 2. 规则严重异常 → 保留,模型仅辅助。 3. 规则异常且模型概率/相似度至少一项达确认条件 → “模型辅助确认”。 4. 规则正常但模型支持较高 → “模型疑似异常”,不写入规则阶段。 5. 规则异常但模型支持较低 → 保留规则,标记“规则与模型不一致,人工复核”。 6. 规则正常且模型支持较低 → “正常”。 阈值(概率、相似度)必须在独立验证集上确定,不能凭经验固定;当前离线 3h 压力模型验证阈值约为 `0.8626`,仅作参考。 ## 6. 阶段增量写入(暂缓实现,仅记录) - 以 `机组 + 批次 + 阶段开始小时` 作稳定主键,每次 tick 对受影响的周期重算阶段后**原地 upsert**;未结束阶段标“进行中”。 - 不因半小时数据把阶段切断,不重复写同一阶段。 - 允许**幂等重写整表**(对下游最简单);若下游要求 append/update,再改为原地更新。 - 保持 `润滑油压力小时阶段段.csv` 现有列结构。 ## 7. 待办 1. 抽取共享特征模块,验证实时特征与训练特征逐字段一致。 2. 明确模型确认动作的最终形式(CSV / 数据库 / 通知)。 3. 在独立验证集上标定概率与相似度阈值。 4. 设计阶段增量 upsert 与“进行中”状态。 5. 压力跑通后再复用到振动。