2026-10-14 · 原文发布日
铁路巡检缺陷自动分级与封停审批流
每天清晨定时拉取到期巡检区段,用 OpenAI 把检查员的缺陷记录按 FRA 等级分成无缺陷到立即停运四类,自动算限速、整改时限和建议动作;最严重的立即停运类会发 Slack 审批卡给主管批准或驳回,其余直接归档。结果 JSON 存 Google Drive,最终摘要发 Slack 频道。
原文要点
原工作流每天05:00定时触发,从轨道巡检系统API拉取当日到期区段,每条返回segment_id、track_class、inspector_defect_notes。OpenAI把检查员缺陷记录按FRA严重度分成无缺陷、1-2级轻微、3-4级严重、5级立即停运四类,再按轨道等级算限速、整改时限和建议动作。5级区段会发Slack审批卡,主管可批准、修改后批准或驳回封停,其余类别标记无需审批。每区段结果JSON上传Google Drive归档,最终类别、动作和限速摘要发到Slack频道。作者提到需按自家铁路政策调整限速表和整改天数默认值。
这次做成什么
用n8n免费模板搭一条"定时拉取巡检区段→AI分级→限速计算→严重缺陷人工审批→归档+摘要"的每日自动化流程,并用合成数据演练一遍完整分支。
准备什么
- n8n实例(自托管或云端),已导入工作流20921模板
- OpenAI API凭据、Slack工作区(开通send and wait for approval)、Google Drive凭据
- 一个能返回当日到期区段的巡检系统API(练习时可用Mock数据代替)
- Slack频道ID、Google Drive的drive ID与folder ID
具体怎么做
配置定时触发与API拉取
导入模板后确认Schedule Trigger设为每天05:00。打开HTTP Request节点,把URL替换为你的巡检系统接口,凭据选HTTP Header Auth。练习阶段可先用n8n的Mock数据:在节点后加一个Set节点,粘贴下方测试数据,确认每项含segment_id、track_class、inspector_defect_notes三个字段,每项作为一个独立item输出。
配置OpenAI分级节点
在OpenAI节点绑定你的OpenAI凭据,系统消息粘贴下方分类提示词全文,用户消息传入{{$json.inspector_defect_notes}}和{{$json.track_class}}。要求模型只返回JSON,字段为category、reasoning。把响应格式设为JSON以便后续节点解析。
设置限速与整改时限计算
打开限速计算Code节点,核对内置的轨道等级-正常最高速对照表和各缺陷类别的限速折扣、整改天数默认值。按下方配置示例改成你单位的政策数值,输出字段统一为normal_max_speed、speed_restriction、remedial_days、recommended_action。
配置5级审批分支
在IF节点判断category是否等于Class 5 Immediate Halt。真分支连到Slack审批节点(send and wait for approval),消息里嵌入区段ID、缺陷描述、建议限速,审批选项保留批准/修改后批准/驳回三种;假分支用Set节点把approval_status置为not_required。
归档与摘要输出
Google Drive节点选Upload操作,填入drive ID和folder ID,文件内容用各区段结果拼成的JSON(可用Code节点JSON.stringify)。最后Slack消息节点发到指定频道,内容包含segment_id、category、speed_restriction、recommended_action和审批结果,先手动Execute Workflow跑一次再启用调度。
可直接复制的材料
缺陷分级系统提示词(本站编写,可直接粘贴)
本站独立编写的示例提示词,替代原模板内部提示词;类别命名沿用原工作流的四类英文原名以保证下游判断兼容。
你是铁路轨道安全分级助手。根据检查员的缺陷记录和轨道等级,把该区段归入以下四类之一,并只返回JSON:
- No Defect:无缺陷或仅外观性瑕疵
- Class 1-2 Minor:轻微缺陷,不影响正常通行,需列入例行维修
- Class 3-4 Serious:严重缺陷,需要限速运行并限期整改
- Class 5 Immediate Halt:危及行车安全的缺陷,必须立即停运封区段
输出格式(不要输出任何其他文字):
{"category":"四类之一的英文原名","reasoning":"不超过80字的中文判断依据,引用记录中的关键缺陷描述"}
判断时注意:钢轨断裂、轨距严重超限、路基塌陷倾向归为Class 5;扣件松动、轻微磨耗归为Class 1-2;介于两者之间的结构性损伤归为Class 3-4。限速与整改时限配置示例(Code节点参考值)
本站设定的示例数值(km/h与天数),原文明说需按自家铁路政策调整,实际部署前请替换为贵单位标准。
{
"trackClassSpeed": {"1": 16, "2": 40, "3": 64, "4": 96, "5": 128},
"categoryPolicy": {
"No Defect": {"speedFactor": 1.0, "remedialDays": 0, "action": "无需处理,正常通行"},
"Class 1-2 Minor": {"speedFactor": 1.0, "remedialDays": 30, "action": "列入例行维修计划"},
"Class 3-4 Serious": {"speedFactor": 0.5, "remedialDays": 7, "action": "限速运行并限期整改"},
"Class 5 Immediate Halt": {"speedFactor": 0, "remedialDays": 1, "action": "立即停运封区段,待主管审批"}
}
}巡检API合成测试数据
本站虚构的三条练习数据,覆盖严重、轻微、无缺陷三类分支;不包含任何真实区段信息。
[
{"segment_id":"SEG-2026-041","track_class":4,"inspector_defect_notes":"K12+300处钢轨发现横向裂纹约35mm,轨枕两处破损,建议立即处理"},
{"segment_id":"SEG-2026-042","track_class":3,"inspector_defect_notes":"扣件松动三处,轨面轻微磨耗,不影响通行"},
{"segment_id":"SEG-2026-043","track_class":5,"inspector_defect_notes":"道砟局部脏污,排水沟轻微堵塞,无结构性问题"}
]输入与输出示例
本站虚构演示输出,字段与数值对应上方配置示例(4级轨道96km/h、5级缺陷限速为0),并非真实运行结果。
输入
{"segment_id":"SEG-2026-041","track_class":4,"inspector_defect_notes":"K12+300处钢轨发现横向裂纹约35mm,轨枕两处破损,建议立即处理"}对应输出
{"segment_id":"SEG-2026-041","category":"Class 5 Immediate Halt","reasoning":"钢轨横向裂纹35mm属危及行车安全的结构性损伤","normal_max_speed":96,"speed_restriction":0,"remedial_days":1,"recommended_action":"立即停运封区段,待主管审批","approval_status":"pending_supervisor"}做完检查这些
- Schedule Trigger显示每天05:00触发,手动执行能产出与测试数据条数相同的item
- OpenAI节点返回的category只出现在四类枚举中,且能被IF节点正确识别
- Class 5分支在Slack收到带批准/修改/驳回按钮的审批卡,其余分支直接标记not_required
- Google Drive目标文件夹出现每区段一个JSON文件,Slack频道收到含限速与动作的摘要
容易卡住的地方
- Slack工作区未开通send and wait for approval时,5级分支会报错中断,需先在Slack侧开启
- 巡检API若把多个区段合并在一条响应里,需要先拆分item,否则分级结果会串区段
- 限速表默认值是作者按示例政策写的,直接用于真实铁路可能造成限速不当,务必先改配置
- OpenAI未强制JSON输出时,下游Code节点解析会失败,要在节点里开启JSON响应格式
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Classify FRA track defects, route tag-out approvals, and archive records with OpenAI, Slack, and Google Drive
- 原作者
- Swapnil Mandloi
- 原始发布日期
- 2026-10-14T03:54:22.386Z
- 来源
- https://n8n.io/workflows/20921