AI PLAY玩法更新持续收录
← 回到更新流

2026-10-05 · 原文发布日

加油站油罐库存差异自动核算与调查提醒

这个免费n8n流程在换班时接收POST webhook(station_id和shift_id),从Google Sheets读取该站油罐、读数、加油机销售、配送和历史审计数据,逐罐计算预期与实际库存差异、容差、盈亏方向、漂移模式和风险分;需要复核时把上下文发给Gemini生成不带指责语气的调查摘要和建议措施,完整记录写回Audit_Log表,并把警报、严重差异或数据缺口通知发到Slack。

原文要点

n8n免费模板20431。流程在换班时接收POST webhook(字段station_id、shift_id,可选shift_end):从Google Sheets读取该站在营油罐、当班油罐读数、加油机累计销售、配送记录与历史审计→逐罐计算预期与实际关班库存、差异、容差、盈亏方向(损耗/盈余)、基线z分数、漂移模式与风险分,并标记数据缺口或油枪/配送异常→差异达到复核条件时把计算上下文发给Gemini,生成不带指责语气的JSON调查摘要(可能原因与建议措施)→完整记录(含AI结论)写入Audit_Log表→对需通知的油罐发Slack(警报、严重差异、配送短缺、数据缺口)→向webhook调用方返回JSON汇总。

这次做成什么

搭一条「换班信号→湿库存核算→AI生成中性调查摘要→归档与分级提醒」的加油站内控流程。本站设计先用合成Sheets数据与手动webhook触发跑通计算与分支,再接真实POS换班系统,避免在未验证前动用真实站点数据。

准备什么

  • n8n实例(webhook需可被换班系统访问)
  • Google Sheets服务账号凭据,表格含Tanks、Tank_Readings、Nozzle_Sales、Deliveries、Audit_Log五个页
  • Google Gemini(Google PaLM)API凭据
  • Slack凭据与目标频道
  • 能POST JSON的测试工具(如curl或Postman)用于模拟换班调用

具体怎么做

  1. 搭建五张Google Sheets数据页

    按模板读取的列建Tanks(station_id、tank_id、油品、容量、容差)、Tank_Readings(shift_id、tank_id、开班/关班读数)、Nozzle_Sales(shift_id、tank_id、累计升数)、Deliveries(shift_id、tank_id、配送升数)、Audit_Log(追加核算结果)。把表格共享给服务账号,n8n里填入文档ID并核对页名与列名完全一致。

  2. 配置webhook触发

    复制Shift Close端点的POST webhook地址。先用测试工具手动发下方合成JSON,确认能按station_id与shift_id查到对应油罐与读数。真实环境中由POS/换班系统在关班时自动POST。

  3. 核对核算逻辑

    逐罐预期库存=开班读数+配送量-加油机销量;差异=实际关班读数-预期库存。流程再算容差判定、损耗/盈余方向、相对历史基线的z分数、漂移模式与风险分。用合成数据手算一遍IM样例,对照流程输出确认公式一致。

  4. 接入Gemini调查摘要

    添加Gemini凭据。当差异超容差或触发复核条件时,流程把该罐的计算上下文发给Gemini,用下方中性语气提示词要求返回JSON:likely_causes与recommended_actions。强调不带指责,因为摘要是给调查组而非定性结论。

  5. 接Slack并分级通知

    添加Slack凭据选频道。通知条件按模板分级:严重差异、配送短缺、数据缺口、风险分超标各自触发不同消息。确认webhook最终向调用方返回JSON汇总,便于POS侧记录处理结果。

可直接复制的材料

换班webhook测试数据

本站虚构站点与班次ID;对应下方Sheets合成数据,替换为真实值前先跑通

{"station_id":"ST-07","shift_id":"SH-2026-1005-N","shift_end":"2026-10-05T22:00:00+08:00"}

Sheets合成数据(三行核心记录)

本站虚构;预期库存=18400+0-8100=10300,实际9900,差异-400升(约-3.9%)超容差,用于触发复核分支

Tanks: ST-07,T1,95号汽油,30000,容差±0.5%
Tank_Readings: SH-2026-1005-N,T1,开班18400,关班9900
Nozzle_Sales: SH-2026-1005-N,T1,8100
Deliveries: SH-2026-1005-N,T1,0

Gemini中性调查摘要提示词

本站独立编写,呼应原模板non-accusatory要求;字段名以导入模板为准

你是加油站湿库存核算的内控分析助手。给定某油罐的核算上下文(预期库存、实际库存、差异、容差、历史基线z分数、漂移模式、数据缺口标记),生成一份调查摘要,只返回JSON:{"summary":"150字内中性描述差异事实","likely_causes":["可能的技术性原因,如油枪计量漂移、配送短缺、读数录入错误、温度体积变化,不超过3条"],"recommended_actions":["建议核查动作,不超过3条"]}。严禁使用指责性语言,不得暗示任何员工违规,只陈述数据事实与待核查项。上下文:{{ $json }}

输入与输出示例

本站虚构演示,数值由合成数据手算推出,非作者运行结果

输入

webhook收到{"station_id":"ST-07","shift_id":"SH-2026-1005-N"};T1罐开班18400升、关班9900升、销量8100升、无配送,容差±0.5%。

对应输出

核算:预期10300升,实际9900升,差异-400升(损耗方向,-3.9%),超容差,触发复核。Gemini摘要(示意):{"summary":"T1罐本班损耗400升,超出容差0.5%,需核查计量与读数环节","likely_causes":["油枪计量漂移","关班读数录入偏差","温度导致的体积变化"],"recommended_actions":["校准3号油枪","复核关班读数照片记录","连续三班跟踪漂移"]}。Audit_Log追加一行完整记录,Slack收到严重差异提醒,webhook返回JSON汇总。

做完检查这些

  • 预期库存=开班+配送-销量的手算结果与流程输出逐罐一致
  • 差异-400升、损耗方向、超容差判定与本站合成样例完全吻合
  • 只有达到复核条件的油罐才调用Gemini,且返回严格JSON含likely_causes与recommended_actions
  • 每个处理过的班次在Audit_Log追加一行,含AI结论字段(无AI时为空)
  • 数据缺口(如读数缺失)走专门通知分支,不会误算成差异

容易卡住的地方

  • 五张Sheets页的页名与列名必须和模板读取的完全一致,改名会直接报错
  • webhook要能被换班系统访问,内网n8n需配反向代理或隧道
  • 温度、油罐倾斜等物理因素会造成正常体积波动,容差设太紧会警报泛滥
  • Gemini摘要只是调查起点,不能作为定性或处分依据
  • 真实接入前用合成站点跑通,避免把真实站点数据发进未验证流程
  • 重复收到同一shift_id的webhook时要确认Audit_Log不会重复记账

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Investigate fuel tank variances with Google Sheets, Gemini, and Slack
原作者
iamvaar
原始发布日期
2026-10-05T09:05:22.663Z
来源
https://n8n.io/workflows/20431