外观
5. 维护管理
5.0 快速上手:10 分钟建立第一条预防性维护计划
你有一台「空压机 GA-55」,需要为其建立每月 1 号自动触发的润滑油更换计划。
Step 1:进入维护计划页面
点击左侧菜单「维护管理」→「维护计划」,进入维护计划列表页面。 → 详见 §5.3.1
Step 2:从模板创建
点击「从模板创建」按钮 → 在弹出的模板库中选择「空压机月度保养」模板 → 点击模板卡片。 → 详见 §5.3.5
Step 3:绑定设备
在创建弹窗中,选择关联设备为「空压机 GA-55」,确认触发类型为「周期触发」、周期为「每月」、日期为「1 号」、时间为「09:00」。 → 详见 §5.3.3
Step 4:配置工单模板
在工单模板区域填写工单标题「空压机 GA-55 月度润滑保养」,选择工单类型「预防性维护」、优先级「中」,填写预估工时 2 小时。 → 详见 §5.3.3
Step 5:保存并启用
点击「保存」→ 计划创建成功并默认启用。在计划列表中找到新创建的计划,确认状态为「已启用」,下次触发时间显示为下月 1 号 09:00。 → 详见 §5.3.2
Step 6:提前验证
点击计划行操作列的「触发」按钮 → 输入工单标题 → 点击「确认生成」→ 系统立即生成一张工单。切换到「工单管理」页面查看新生成的工单。 → 详见 §5.3.3
💡 完成以上步骤后,你已完成「模板建计划 → 绑定设备 → 手动触发验证」的完整链路。系统将在每月 1 号 09:00 自动触发生成润滑油更换工单。
Step 7(进阶):训练预测模型
进入「维护管理」→「预测性维护」→ 选择「空压机 GA-55」→ 点击「🤖 训练模型」→ 使用默认参数点击「确定」开始训练 → 等待 1-3 分钟 → 训练完成后点击「⚡ 立即预测」查看预测结果。 → 详见 §5.4.10
5.1 功能概述
本章介绍「维护管理」菜单下的三大核心模块:
| 模块 | 定位 | 核心功能 |
|---|---|---|
| 维护计划 | 预防性维护计划管理 | 计划列表与筛选、创建/编辑/删除、三种触发类型(周期/计数/条件)、日历视图(月/周/列表)与拖拽调整、模板库、批量创建、组合维护、数据模拟器 |
| 预测性维护 | AI 驱动的故障预测 | 基于随机森林算法的设备故障概率预测、RUL估算、风险等级判定、维护建议生成、模型训练与评估、特征重要性分析 |
| 执行历史 | 计划执行记录追溯 | 独立子菜单,按时间查看所有计划的执行记录、关联工单跳转、执行状态筛选 |
三者构成从「计划驱动(预防性)→ AI 预测(预测性)→ 执行追溯」的完整维护管理体系。
5.2 页面入口
- PC端:左侧菜单「维护管理」→ 三个子菜单:
- 维护计划 — 预防性维护计划管理(列表 + 日历视图 + 模板库 + 组合维护)
- 执行历史 — 查看所有维护计划的触发执行记录与关联工单
- 预测性维护 — AI 故障预测与维护建议
进入维护计划、执行历史页面需
maintenance:plan:view权限;预测性维护页面由前端菜单权限控制可见性。
- 移动端:移动端不提供独立的维护计划/预测性维护管理模块;维护计划自动生成的工单会出现在移动端「📋 任务」Tab 中
5.3 PC端 - 维护计划管理
5.3.1 页面布局
维护计划列表页面从上到下分为三个区域:
- 标题与描述行 — 页面标题 + 功能描述
- 工具栏 — 操作按钮(新增、从模板创建、日历视图、执行到期计划)+ 筛选条件(设备、状态、触发类型、范围类型)
- 计划列表表格 — 维护计划数据表格

工具栏按钮(受权限控制):
| 按钮 | 权限 | 说明 |
|---|---|---|
| 新增维护计划 | maintenance:plan:create | 打开创建弹窗 |
| 从模板创建 | maintenance:plan:create | 打开模板库弹窗,选择模板后自动填充表单 |
| 日历视图 | maintenance:plan:view | 切换为日历视图 |
| 执行到期计划 | maintenance:plan:update | 立即执行所有到期的维护计划 |
| 刷新列表 | maintenance:plan:view | 重新加载维护计划列表数据 |
筛选条件:
| 筛选字段 | 类型 | 说明 |
|---|---|---|
| 设备 | 下拉搜索框 | 按设备名称或编码筛选 |
| 状态 | 下拉框 | 已启用 / 已停用 |
| 触发类型 | 下拉框 | 周期触发 / 计数触发 / 条件触发 |
| 范围类型 | 下拉框 | 单设备 / 组合维护 |
5.3.2 计划列表与行操作
表格列:
| 列名 | 说明 |
|---|---|
| 计划编码 | 系统自动生成的唯一标识(如 PLAN-XXXXXXXX) |
| 计划名称 | 用户定义的维护计划名称 |
| 设备 | 关联的设备名称;组合维护显示「组合」标签 + 设备数量 |
| 部门 | 所属部门名称 |
| 触发类型 | 周期触发 / 计数触发 / 条件触发 |
| 触发配置 | 根据触发类型展示不同格式的触发规则(见 §5.3.3) |
| 上次触发 | 上一次触发执行的时间 |
| 下次触发 | 下一次计划触发的时间 |
| 状态 | 启用开关(受 maintenance:plan:enable 权限控制) |
行操作按钮:
| 操作 | 权限 | 说明 |
|---|---|---|
| ✏️ 编辑 | maintenance:plan:update | 打开编辑弹窗 |
| ⚡ 触发 | maintenance:plan:update | 弹出标题确认框后立即生成工单 |
| 🗑️ 删除 | maintenance:plan:delete | 删除维护计划(二次确认) |
| 🔧 模拟 | maintenance:plan:update | 仅计数/条件触发类型显示,打开数据模拟器(见 §5.3.7) |

5.3.3 创建/编辑维护计划
点击「新增维护计划」或行操作「编辑」按钮,打开创建/编辑弹窗。弹窗包含以下分区:

创建模式
弹窗顶部可切换两种模式:
| 模式 | 说明 |
|---|---|
| 🔧 单设备 | 为一个设备创建维护计划 |
| 📦 批量 | 一次为多个设备创建相同的维护计划 |
批量模式下,设备选择区变为多选模式,支持批量选择设备,计划名称支持占位符 {equipment_name} 自动替换为各设备名称。
基本信息
| 字段 | 必填 | 说明 |
|---|---|---|
| 计划名称 | ✅ | 维护计划的名称,如「空压机月度润滑保养」 |
| 计划描述 | 否 | 计划的详细说明 |
| 范围类型 | ✅ | 单设备 / 组合维护(见 §5.3.6) |
关联设备(单设备模式)
- 下拉搜索框选择要关联的设备
- 设备列表按设备类型树过滤(可选)
触发配置
支持三种触发类型,通过标签页切换:
1. 周期触发(periodic)
按固定时间间隔自动触发:
| 配置项 | 选项 | 说明 |
|---|---|---|
| 周期 | 每日 / 每周 / 每月 / 每季度 / 每年 | 触发间隔 |
| 星期 | 周一 ~ 周日(仅「每周」模式) | 每周哪一天触发 |
| 日期 | 1-31(仅「每月」/「每季度」/「每年」模式) | 每月哪一天触发 |
| 季度月份 | 第 1/2/3 个月(仅「每季度」模式) | 季度内第几个月 |
| 年度月份 | 1-12 月(仅「每年」模式) | 每年哪个月 |
| 时间 | HH:mm | 触发的具体时间 |

2. 计数触发(counter)
当设备运行计数达到阈值时触发:
| 配置项 | 选项 | 说明 |
|---|---|---|
| 计数器类型 | 运行时长 / 生产数量 / 循环次数 | 监控的指标类型 |
| 阈值 | 数值 | 达到此值时触发 |
| 当前值 | 数值(只读) | 当前计数器的值 |
| 触发后自动重置 | 是/否 | 触发后将计数器归零 |
3. 条件触发(condition)
当设备某个字段满足条件时触发:
| 配置项 | 说明 |
|---|---|
| 条件类型 | 状态 / 传感器值 等 |
| 监控字段 | 要监控的设备字段名 |
| 运算符 | == / != / > / < / >= / <= |
| 阈值 | 触发条件的比较值 |
| 检查间隔 | 多久检查一次条件(分钟) |
工单模板
定义自动生成工单的默认内容:
| 字段 | 说明 |
|---|---|
| 工单类型 | 预防性维护(PREVENTIVE)/ 定期检查(INSPECTION)/ 校准(CALIBRATION)/ 大修(OVERHAUL) |
| 优先级 | 低 / 中 / 高 / 紧急 |
| 工单标题 | 自动生成工单的默认标题。手动触发时弹出输入框可修改(默认 {计划名}(YYYY-MM-DD)),自动触发直接使用模板标题 |
| 描述 | 工单的详细描述 |
| 预估工时 | 预计需要的工时(小时) |
| 指派人 | 工单指派给谁(可选) |
| 关联点检模板 | 选择维护分类下的点检模板(可选),工单执行时将按模板进行点检。注意:只能选择已发布状态的点检模板;保存计划或生成工单时系统会校验,引用草稿/冻结模板会报错中断(提示「计划引用的检查模板未发布或不存在,请先发布模板」) |

触发流程
保存计划后,系统自动计算「下次触发时间」。触发流程如下:
- 定时调度器每 5 分钟检查一次所有启用的维护计划
- 发现
next_trigger_at≤ 当前时间的计划 → 自动触发 - 根据工单模板生成工单,登记执行历史
- 重新计算下次触发时间
- 如果租户配置了审批流程(组合维护对应
work_order_group,单设备对应work_order_create),自动提交审批
用户也可以使用「触发」按钮手动提前触发,不受 next_trigger_at 限制。
5.3.4 日历视图
点击工具栏「日历视图」按钮,打开日历弹窗,以月/周/列表三种视图直观展示维护计划的时间分布。

功能特性:
| 功能 | 说明 |
|---|---|
| 月/周/列表切换 | 左上角切换月视图、周视图或列表视图 |
| 上月/下月 | 左右箭头切换时间范围 |
| 回到今天 | 一键跳转到当前日期 |
| 事件颜色 | 蓝色=周期触发、绿色=计数触发、橙色=条件触发 |
| 点击事件 | 弹出事件详情,显示计划名称、设备、触发时间,可「立即触发」或「编辑计划」 |
| 拖拽调整 | 切换「拖拽模式」后,可拖拽周期计划事件到新日期(仅月视图支持),系统会更新 next_trigger_at |

拖拽调整说明:
- 仅周期触发类型支持拖拽
- 仅在月视图下可拖拽(周视图、列表视图不支持)
- 拖拽后保持原时间,只修改日期
- 拖拽使用
allow_override_time=true参数,不触发自动重新计算 - 确认后会弹出二次确认对话框
5.3.5 模板库
模板库提供预设的维护计划配置,加快计划创建速度。
点击「从模板创建」按钮,打开模板库弹窗:

模板库功能:
| 功能 | 说明 |
|---|---|
| 分类筛选 | 按全部模板 / 内置模板 / 自定义模板 三个 Tab 过滤 |
| 模板卡片 | 显示模板名称、描述、触发类型、使用次数,内置模板带「内置」标签 |
| 应用模板 | 点击模板卡片,自动填充创建表单的各个字段 |
| 使用统计 | 每次从模板成功创建计划,模板使用次数 +1 |
5.3.6 组合维护
组合维护(scope_type: hierarchy)允许以一台根设备为锚点,对其子树中所有设备分别绑定检查模板,一次触发生成多张工单。

配置流程:
- 选择范围类型 → 「组合维护」
- 选择设备类型(可选)→ 筛选可选的根设备
- 选择根设备 → 系统自动加载设备子树列表,显示组内设备数量
- 预览设备树 → 点击「预览设备树」查看树形结构,确认参与维护的设备
- 设备-模板映射 → 点击「添加设备映射」,选择子设备和对应的检查模板
- 至少添加一条映射后才能保存
触发行为:
- 触发时生成一组工单(
hierarchy_group_id相同) - 每个映射生成一张独立工单
- 组合工单走统一的审批流程

5.3.7 数据模拟器
对于计数触发和条件触发的维护计划,提供数据模拟器用于测试验证——无需等待实际计数达到阈值,即可手动模拟触发。

计数触发模拟器:
| 操作 | 说明 |
|---|---|
| 累加 | 增加指定值到计数器,若达到阈值则提示「将在下次调度时触发」 |
| 设定值 | 直接设置计数器的当前值 |
| 设到阈值 | 一键将计数器设为阈值,立即触发 |
| 重置 | 将计数器归零 |
条件触发模拟器:
| 操作 | 说明 |
|---|---|
| 输入值 | 输入要模拟的条件值 |
| 设置 | 模拟该值写入监控字段,若满足条件则触发 |
5.4 PC端 - 预测性维护
预测性维护使用**随机森林(Random Forest)**机器学习算法,基于设备历史传感器数据、维护记录和运行统计,预测设备未来 7-60 天内发生故障的概率和风险等级。
5.4.1 页面布局
点击左侧菜单「维护管理」→「预测性维护」,进入预测性维护页面。页面从上到下分为几个区域:
- 标题与描述行 — 页面标题 + 功能说明
- 设备选择器 — 设备类型树筛选(可选)+ 设备下拉搜索框 + 操作按钮
- 风险概览卡片 — 4 张统计卡片
- 预测详情 — 设备 ID、预测日期、预测故障日期、模型版本、预测问题
- 维护建议 — 按优先级排列的维护行动建议列表
- 故障风险趋势图 — ECharts 折线图,带中/高风险线
- 模型特征重要性 — 进度条展示 Top 15 特征
- 模型性能指标 — 准确率、精确率、召回率、F1 分数
- 预测历史表格 — 最近 180 天的预测记录

5.4.2 设备选择器

| 控件 | 说明 |
|---|---|
| 设备类型 | 树形下拉框,按设备类型筛选设备列表(可选) |
| 设备选择 | 下拉搜索框,选择要预测的目标设备 |
| ⚡ 立即预测 | 触发一次新的故障预测计算(POST 请求) |
| 🔄 刷新 | 重新加载该设备的预测报告和历史数据 |
| 🤖 训练模型 | 打开模型训练弹窗 |
选择设备后,系统自动加载该设备的最新预测报告和最近 180 天的预测历史,与默认模型训练回溯窗口保持一致。
5.4.3 风险概览
页面顶部一行 4 张统计卡片,展示当前设备的核心预测指标:
| 指标 | 说明 | 颜色分段 |
|---|---|---|
| 故障概率 | 未来故障发生的概率(%) | 绿 0-20% / 蓝 20-40% / 橙 40-60% / 红 60-100% |
| 预测稳定运行期间 | 剩余可用天数(RUL) | 按风险等级着色 |
| 风险等级 | critical(极高)/ high(高)/ medium(中)/ low(低) | 红/橙/蓝/绿 |
| 预测置信度 | 模型对本次预测的置信度(%) | 独立色 |

5.4.4 预测详情
展示预测结果的详细信息:
| 字段 | 说明 |
|---|---|
| 设备 ID | 预测目标设备的 ID |
| 预测日期 | 本次预测的执行日期 |
| 预测故障日期 | 预估的故障发生日期(高风险设备以红色粗体显示) |
| 模型版本 | 使用的预测模型名称和版本号 |
| 预测问题 | 模型生成的故障类型描述(如「轴承磨损」「润滑不足」等) |
5.4.5 维护建议
系统根据预测结果自动生成按优先级排序的维护建议列表,每条建议包含:
| 字段 | 说明 |
|---|---|
| 优先级标签 | 紧急(红)/ 高(橙)/ 中(蓝)/ 低(灰) |
| 行动 | 建议执行的维护操作 |
| 原因 | 提出该建议的依据 |
| 预计工时 | 预估完成该操作需要的工时(小时) |
示例建议:「🔴 紧急:更换轴承 — 轴承振动值持续上升超过 3 个标准差,预计 15 天内达到故障阈值」
5.4.6 故障风险趋势图
ECharts 折线图展示该设备近期的故障风险变化趋势:
- 横轴为日期,纵轴为故障概率(0-100%)
- 40% 中风险参考线(橙色虚线)
- 60% 高风险参考线(红色虚线)
- 折线颜色根据风险值分段着色(绿→蓝→橙→红)
- 支持鼠标悬停查看具体数值

5.4.7 模型特征重要性
以横向进度条形式展示预测模型中最关键的特征及其权重。展示 Top 15 特征,支持的 18 个特征维度包括:
| 特征 | 说明 |
|---|---|
| 温度均值 / 波动 / 峰值 | 设备运行温度统计 |
| 振动均值 / 波动 / 峰值 | 设备振动统计 |
| 压力均值 / 波动 | 设备压力统计 |
| 电流均值 / 波动 | 设备电流统计 |
| 电压均值 | 设备电压统计 |
| 7 日运行时长 | 最近 7 天累计运行时间 |
| 距上次维护天数 | 距离最近一次维护的天数 |
| 90 日故障次数 | 过去 90 天发生故障的次数 |
| 30 日报警次数 | 过去 30 天传感器报警次数 |
| 设备年龄 | 设备从安装到现在的天数 |
| 健康评分 | 综合传感器数据的健康评分 |
| 传感器在线率 | 传感器数据采集的完整性 |

5.4.8 模型性能指标
展示当前使用的预测模型的评估指标:
| 指标 | 说明 |
|---|---|
| 准确率 | 预测正确的比例 |
| 精确率 | 预测为故障中实际故障的比例 |
| 召回率 | 实际故障中被正确预测的比例 |
| F1 分数 | 精确率与召回率的调和平均 |
同时显示模型的训练时间、训练样本数和正样本数。
5.4.9 预测历史
表格展示该设备最近 180 天的所有预测记录:
| 列名 | 说明 |
|---|---|
| 预测日期 | 预测执行的日期 |
| 故障概率 | 以进度条形式展示,高风险时为红色 |
| 预测问题 | 预测的故障类型描述 |
| 模型版本 | 该次预测使用的模型版本 |
5.4.10 模型训练
点击「🤖 训练模型」按钮,打开训练弹窗:

基础参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
| 设备范围 | 全部设备 / 当前选中设备 | 全部设备 |
| 回溯天数 | 使用多少天内的历史数据 | 180 天 |
| 模型版本 | 训练后的模型版本号 | v1.0 |
高级参数(展开后可见):
| 参数 | 说明 | 默认值 |
|---|---|---|
| 决策树数量 | 随机森林的树数量 | 100 |
| 最大深度 | 单棵树的最大深度 | 10 |
| 最小分裂样本 | 节点分裂的最小样本数 | 5 |
| 最小叶样本 | 叶子节点的最小样本数 | 2 |
| 测试集比例 | 训练/测试的分割比例 | 0.2 |
| 随机种子 | 训练随机种子,保证结果可复现 | 42 |
| 特征窗口天数 | 特征提取的时间窗口 | 7 天 |
| 采样间隔天数 | 训练样本的采样间隔 | 7 天 |
| 故障判定窗口 | 正样本判定的故障前后天数 | 故障前 7 天 ~ 故障后 30 天 |
训练说明:
- 训练至少需要一定数量的历史样本
- 训练时间通常为 1-5 分钟(取决于数据量)
- 训练完成后自动更新模型,新预测将使用新模型
5.5 PC端 - 执行历史
5.5.1 页面布局
点击左侧菜单「维护管理」→「执行历史」,进入执行历史页面。

表格列:
| 列名 | 说明 |
|---|---|
| 计划名称 | 关联的维护计划名称 |
| 触发时间 | 计划触发执行的时间 |
| 执行状态 | 成功 / 失败(带颜色标签) |
| 生成工单 | 此次触发生成的工单编号,可点击跳转到工单详情 |
| 错误信息 | 失败时显示的错误原因 |
筛选条件:
- 执行状态:成功 / 失败
5.6 定时调度
维护计划的自动触发依赖系统的定时任务调度器。
| 属性 | 值 |
|---|---|
| 任务名称 | 维护计划定时触发 |
| 任务 ID | maintenance_plan_trigger |
| 作用域 | 每个租户独立执行(per_tenant) |
| 执行频率 | 每 5 分钟 |
| 执行逻辑 | 遍历所有启用的维护计划 → 比较 next_trigger_at 与当前时间 → 到期则生成工单 → 更新 next_trigger_at |
定时任务可在「系统管理」→「定时任务管理」中查看状态和手动触发(需 scheduler:view / scheduler:execute 权限)。
5.7 常见问题
Q1:为什么到了时间计划没有触发?
- 确认计划状态为「已启用」
- 确认当前时间确实超过了
next_trigger_at - 定时任务每 5 分钟检查一次,稍有延迟属正常
- 可以在「系统管理」→「定时任务管理」中查看
maintenance_plan_trigger任务是否正常运行
Q2:计数触发的「当前值」如何更新?
- 通过 API
PUT /api/v1/maintenance-plans/{plan_id}/counter接口更新(需maintenance:plan:counter权限,默认仅超级管理员/租户管理员/设备主管具备) - 可通过数据模拟器手动更新
- 后续可通过对接 IoT/PLC 系统自动推送运行数据
Q3:组合维护和单设备计划有什么区别?
- 单设备计划:一次触发生成一张工单
- 组合维护:一次触发为子树中每个映射设备各生成一张工单,共享
hierarchy_group_id,统一走审批
Q4:如何批量建立维护计划?
- 在创建弹窗顶部切换到「📦 批量」模式
- 多选设备后填写计划模板,支持
{equipment_name}占位符自动替换
Q5:日历拖拽调整后下次触发时间不准确?
- 拖拽模式使用
allow_override_time=true,只修改日期不重新计算。拖拽后如需基于新日期重新计算后续触发时间,请在编辑弹窗中保存一次(不勾选拖拽模式)。
Q6:预测性维护需要什么前置条件?
- 设备需要有足够的历史传感器数据和维护记录
- 需要先训练预测模型(进入预测性维护页面 → 点击「🤖 训练模型」)
- 模型训练前可使用
scripts/generate_predictive_test_data.py脚本生成测试数据
Q7:预测结果不准怎么办?
- 尝试用更多历史数据重新训练模型(增加回溯天数)
- 调整高级参数(如增加决策树数量、调整特征窗口)
- 确认传感器数据质量(传感器在线率是否偏低)
- 查看模型性能指标(准确率/F1 分数),若偏低说明需要更多正样本数据
5.8 相关权限
维护管理模块涉及的权限列表:
| 权限 | 中文名称 | 说明 |
|---|---|---|
maintenance:plan:view | 查看维护计划 | 查看维护计划列表、日历视图、预测性维护页面 |
maintenance:plan:create | 创建维护计划 | 新建维护计划、从模板创建、批量创建 |
maintenance:plan:update | 更新维护计划 | 编辑计划、手动触发、执行到期计划 |
maintenance:plan:delete | 删除维护计划 | 删除维护计划 |
maintenance:plan:enable | 启用/停用维护计划 | 切换计划的启用状态 |
maintenance:plan:counter | 更新维护计划计数器 | 更新计数触发计划的计数器值 |
角色默认权限分配:
| 角色 | 维护管理相关权限 |
|---|---|
| 超级管理员 | 全部权限 |
| 租户管理员 | 全部权限 |
| 设备主管 | 全部权限 |
| 技术员 | — |
| 操作员 | — |
| 仓库管理员 | — |
| 只读用户 | — |
