2026-09-14 · 原文发布日
AOG航材放行决策包自动生成
面向航空维修的n8n流程:Webhook接收含飞机语境和序列化部件的AOG请求,逐个调用OEM与MRO/局方接口核查资格、寿命史与适航指令,用确定性规则标记放行阻断项,再由OpenAI生成严格JSON格式的决策理由、缺失证据和后续问题;合格件建预留记录、不合格件建隔离记录,决策包存Google Drive并发Telegram。注意需自备真实行业API,模板自定义说明有从其他模板复制的痕迹。
原文要点
模板由Swapnil Mandloi发布于n8n(2026-09),免费。工作流经POST /aog-parts-release Webhook接收含飞机语境与序列化部件数组的AOG请求,逐件调用外部OEM与MRO/局方HTTP接口核查OEM资格、序列号寿命史和适航指令状态,用确定性规则标记放行阻断项(缺放行证、寿命过期、OEM不合格、存在未关闭指令),再由OpenAI(经LangChain调用,默认gpt-5-mini)生成严格JSON格式的决策理由、缺失证据与后续维修问题;合格件在MRO系统建预留记录,不合格件建隔离记录,决策包以JSON存Google Drive并发Telegram。需注意:真实行业API需自备并替换占位端点;其Requirements与Customization段落混入Gmail、音乐版权分成、ISRC等明显从其他模板复制的内容,配置时应忽略这些无关说明。
这次做成什么
在自备n8n实例上搭出AOG放行决策链路:Webhook收请求→逐件核查→规则判定→AI仅写理由不决策→预留/隔离分支→归档与通知。因真实OEM/局方接口一般无法获得,本站设计用n8n内置的模拟响应节点(或自建的HTTP测试端点)替代外部API,先跑通全流程再接真源。
准备什么
- n8n 1.0以上自托管(npm/Docker)或n8n Cloud实例,可建Webhook与凭证
- OpenAI API Key且账号可用所选聊天模型(模板默认gpt-5-mini,需在自己账号确认可用性)
- Google Drive OAuth2凭证及一个用于归档的文件夹ID
- Telegram Bot凭证及接收通知的chat ID
- 练习阶段无需真实行业API,用模拟数据端点替代;上线前必须换成真实OEM/MRO/局方接口
具体怎么做
导入模板并接Webhook
在n8n导入该模板后,打开Webhook节点确认路径为POST /aog-parts-release,复制生产URL。用下方合成测试负载以curl或Postman发送,确认后续规范化节点能把parts数组拆成逐件条目(每个item含partNumber、serialNumber、aircraftTail、ataChapter)。
用模拟端点替代行业API
原模板对每个部件依次发三个HTTP请求(OEM资格、寿命史、适航指令),端点是占位符。练习时把三个HTTP Request节点改为指向你自己用n8n另一个Webhook或jsonbin类服务搭的模拟接口,按serialNumber返回固定结果;保留HTTP Header Auth凭证位,等拿到真实API再填密钥和真实base URL。
核对确定性规则节点
在规则判断节点(IF/Switch)确认四条阻断条件均为代码判断而非AI判断:缺放行证书、剩余寿命≤0、OEM资格为否、存在open状态适航指令,任一命中即releaseState=blocked。用一条寿命过期数据和一条全合格数据分别测试两个分支。
配置OpenAI只生成解释
在LangChain/OpenAI节点粘贴下方提示词,把上一步合并的证据JSON作为输入变量传入,要求模型输出严格JSON(rationale、missingEvidence、followUpQuestions)。关键是AI只写解释,放行与否已由规则节点定好,提示词中明确禁止模型改变决策。
接分支、归档与通知
合格分支调MRO预留接口(练习时可用模拟POST端点),不合格分支调隔离接口;随后聚合节点把各部件结果合并成一个release packet JSON,Google Drive节点选择你的文件夹ID上传该JSON,Telegram节点填入chat ID发送摘要。端到端跑一次并检查三处产物。
可直接复制的材料
AI决策理由生成提示词(可直接粘贴)
本站独立编写。{{ $json.partEvidence }}是n8n表达式占位,需按你实际的字段路径调整;模型名请在节点内按账号可用性确认。
你是航空维修AOG放行文档助手。放行决策已经由确定性规则完成,你不得改变、推翻或重新做出放行决定。
输入是一个部件的核查证据JSON,字段包括:partNumber、serialNumber、releaseState(eligible或blocked)、blockers(阻断项数组)、evidence(OEM资格、寿命史、适航指令的核查结果)。
请只输出一个严格JSON对象,不要输出任何其他文字或markdown代码块,结构如下:
{"rationale":"用中文2至4句解释为什么是该releaseState,引用blockers中的具体项","missingEvidence":["仍缺失的证据名称,没有则为空数组"],"followUpQuestions":["需要向维修计划或库房确认的后续问题,没有则为空数组"]}
规则:releaseState为eligible时missingEvidence应为空数组;blockers非空时rationale必须逐条提及;不得编造输入中不存在的证书编号或日期。
部件证据JSON:{{ $json.partEvidence }}Webhook合成测试负载
全部为合成数据,件号与序列号均为虚构,仅用于打通流程;真实使用时字段名需与上游发请求的系统对齐。
{
"aircraftTail": "B-30X1",
"airport": "ZBAA",
"requestedBy": "练习账号-勿用于真实放行",
"parts": [
{
"partNumber": "PN-774100-3",
"serialNumber": "SN-000842",
"ataChapter": "32",
"description": "主起落架作动筒(合成件号)"
},
{
"partNumber": "PN-5520-A",
"serialNumber": "SN-991177",
"ataChapter": "29",
"description": "液压泵(合成件号)"
}
]
}确定性放行规则示例配置
本站按模板描述归纳的规则方案,非模板原始节点导出;具体表达式语法需在n8n的IF/Code节点里按实际字段实现。
{
"blockerRules": [
{"id": "missing_release_cert", "condition": "evidence.releaseCertificate.present == false", "releaseState": "blocked"},
{"id": "expired_life", "condition": "evidence.lifeHistory.remainingHours <= 0 或 remainingCycles <= 0", "releaseState": "blocked"},
{"id": "oem_ineligible", "condition": "evidence.oemEligibility.eligible == false", "releaseState": "blocked"},
{"id": "open_directive", "condition": "evidence.airworthinessDirectives 中存在 status == open 的记录", "releaseState": "blocked"}
],
"defaultWhenNoBlocker": "eligible",
"onApiFailure": "标记为evidenceIncomplete并按blocked处理,不允许默认放行"
}输入与输出示例
本站虚构演示,模拟端点返回值为练习设定,非真实运行结果,不构成任何真实放行依据。
输入
用上方合成负载POST到 /aog-parts-release,其中SN-000842模拟返回全合格证据,SN-991177模拟返回remainingHours=0且有一条open适航指令。对应输出
决策包JSON关键行示意:{"tail":"B-30X1","decisions":[{"serialNumber":"SN-000842","releaseState":"eligible","action":"reservation_created"},{"serialNumber":"SN-991177","releaseState":"blocked","blockers":["expired_life","open_directive"],"action":"quarantine_created","aiExplanation":{"rationale":"该件剩余寿命为0小时,且存在一条未关闭的适航指令,按规则不得放行。","missingEvidence":[],"followUpQuestions":["请确认该泵的翻修件是否已有在途件可替换?"]}}]}做完检查这些
- Webhook收到测试负载后,两个部件被拆成两条独立item分别进入核查链路
- 规则节点输出与模拟证据一致:寿命为0或指令open的件必须blocked,且该判定与AI输出无关
- Google Drive目标文件夹出现一份包含全部decisions的JSON决策包,Telegram收到对应摘要
- OpenAI节点输出能被JSON解析器直接解析,不含markdown代码块或多余文字
容易卡住的地方
- 模板说明文字混入了音乐版权模板的段落(Gmail审批、版权分成、ISRC等),照抄配置会走错方向,应以AOG正文流程为准
- 外部OEM/MRO/局方接口为占位符,没有真实API则三个核查节点必然失败,练习时必须先用模拟端点替代
- 放行/阻断必须由确定性规则决定,若改成让AI直接判定放行状态,属于适航合规风险
- gpt-5-mini等具体模型名需在自有OpenAI账号确认可用,不可假设默认可用
- AOG属于安全关键场景,本流程输出只能作为辅助文档,真实放行必须由持牌人员按规章完成
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Build AOG parts release packets with OpenAI, Google Drive and Telegram
- 原作者
- Swapnil Mandloi
- 原始发布日期
- 2026-09-14T15:44:03.177Z
- 来源
- https://n8n.io/workflows/19580