2026-09-02 · 原文发布日
多门店巡检笔记自动分级与风险汇总
面向多门店餐饮的巡检合规模板:每天早上处理一批巡店笔记,用 OpenAI 信息提取器把每家店的记录分类为违规类别、严重度和整改建议,按严重度算出整改期限写入 Google Sheets 日志;汇总算出区域风险分,超阈值先发 Gmail 升级告警再发当日汇总邮件,单个门店接口出错不会阻塞整批处理。
原文要点
原模板是免费n8n工作流:每天07:00定时触发,拉取一批多门店巡店笔记并逐店拆分;用OpenAI信息提取器把每条笔记分类为违规类别、严重度、法规条款和整改建议;按严重度算整改期限(严重=10天、重大=30天、轻微=90天)写入Google Sheets“Compliance Log”;汇总成区域风险分写入“Compliance Summary”;超阈值先发Gmail升级告警再发当日汇总;Sheets与Gmail节点均设onError=continueRegularOutput加重试3次间隔2000毫秒,单店出错不阻塞整批。
这次做成什么
搭建一个每天清晨自动运行的多门店巡检流水线:批量巡店笔记→逐店AI分类分级→按规则算整改期限→写两张Sheets表→算区域风险分→超阈值先告警再发日报。本站独立设计一个3门店合成数据的练习方案,复刻原模板的分级规则与分支逻辑。
准备什么
- 一个可用的OpenAI API Key,能调用聊天模型输出结构化JSON
- 一个Google账号,已建含Compliance Log与Compliance Summary两个标签页的表格
- 一个完成OAuth2授权的Gmail账号,用于发告警和日报邮件
- n8n实例(云端或自托管),能使用Schedule Trigger、OpenAI、Google Sheets、Gmail节点
- 练习用巡店笔记来源,本指南用合成的三门店JSON代替真实巡检系统
具体怎么做
建表与定时触发
在Google Sheets新建表格,建两个标签页:Compliance Log列依次为date、location_id、location_name、violation_category、severity、code_section、corrective_action、deadline;Compliance Summary列依次为date、locations_processed、critical_count、major_count、minor_count、risk_score、escalated。n8n里放Schedule Trigger,设为每天07:00并选对本地时区。
接入批量笔记并逐店拆分
原模板此处是演示数据节点,练习时直接粘贴下文artifacts里的三门店合成JSON;接Split Out节点按数组拆成每店一条记录。正式使用时把这一步换成数据库、API或Sheets读取节点,输出字段保持location_id、location_name、note三项。
AI提取违规信息
挂OpenAI信息提取器(Information Extractor),连接OpenAI凭据,系统提示词用下方artifacts中的完整提示词,输入为当前门店的note文本,要求输出violation_category、severity(critical/major/minor)、code_section、corrective_action四个字段的结构化JSON。
计算整改期限并写日志
用Code节点按severity映射期限天数:critical加10天、major加30天、minor加90天,以当天日期为基准算出deadline;然后Append Row写入Compliance Log,按第一步的列序做字段映射。
汇总风险分并分支发信
把本批所有门店记录聚合进Code节点(代码见artifacts),算出critical_count、major_count、minor_count和risk_score,追加一行到Compliance Summary。接IF节点判断risk_score是否超过阈值(示例设10)或critical_count≥2:是则先发Gmail升级告警邮件,无论是否升级都继续发当日汇总邮件,正文逐店列出严重度和整改期限。
配置容错
在所有Google Sheets与Gmail节点上开启retryOnFail(重试3次、间隔2000毫秒)并把onError设为continueRegularOutput,保证单个门店的接口抖动不会中断整批处理和日报发送。
可直接复制的材料
违规信息提取系统提示词
本站独立撰写,对应原模板Extract Violation Severity节点的作用,可按自己企业的条款手册改写类别与编号规则。
你是连锁餐饮门店卫生巡检的合规分析员。用户会给你一条某门店的巡店笔记原文。请只依据笔记内容,输出严格JSON,不要输出任何其他文字。字段要求:
violation_category:违规类别,从以下选一:食品温度控制、交叉污染、员工卫生、设备清洁、害虫防治、储存与标识、其他。
severity:严重度,只能是 critical(可能造成即时食品安全危害)、major(明显违规但非即时危害)、minor(轻微不规范)三者之一。
code_section:对应的内部合规条款编号,格式如 FS-3.2,若无法判断填 FS-0.0。
corrective_action:一句话整改建议,说明做什么、达到什么状态。
若笔记中没有发现任何违规,severity填minor,violation_category填其他,corrective_action填“未发现违规,保持现有操作”。区域风险分计算代码(n8n Code节点)
本站按原模板描述复刻的示例实现,阈值常量可按需调整;原模板提到CRITICAL_COUNT_THRESHOLD与RISK_SCORE_THRESHOLD可调但未给出具体权重公式。
// 输入:本批所有门店的提取结果数组 items
// 权重:critical=5分,major=2分,minor=1分
const CRITICAL_COUNT_THRESHOLD = 2;
const RISK_SCORE_THRESHOLD = 10;
let critical=0, major=0, minor=0;
for (const item of $input.all()) {
const s = item.json.severity;
if (s === 'critical') critical++;
else if (s === 'major') major++;
else minor++;
}
const riskScore = critical*5 + major*2 + minor*1;
const escalated = critical >= CRITICAL_COUNT_THRESHOLD || riskScore >= RISK_SCORE_THRESHOLD;
return [{ json: {
date: new Date().toISOString().slice(0,10),
locations_processed: $input.all().length,
critical_count: critical, major_count: major, minor_count: minor,
risk_score: riskScore, escalated: escalated
} }];合成巡店笔记批次(三门店JSON)
本站虚构的练习数据,替换Fetch Inspection Batch节点中的演示内容;正式使用请接真实巡检系统。
[
{"location_id":"SH-101","location_name":"上海静安店","note":"冷库温度计显示8度,高于规定的4度上限;生鸡肉与即食沙拉放在同一层货架。员工洗手液用完未补充。"},
{"location_id":"SH-102","location_name":"上海徐汇店","note":"炸炉油温正常,地面有少量油渍已当场清理;一名员工未戴发网操作。"},
{"location_id":"HZ-201","location_name":"杭州西湖店","note":"灭蝇灯损坏两周未更换,后厨发现一处蟑螂痕迹;食材进货标签齐全,冷藏温度正常。"}
]输入与输出示例
本站虚构演示输出,未实际调用OpenAI,真实分类结果以模型返回为准。
输入
门店SH-101的巡店笔记:冷库温度计显示8度,高于规定的4度上限;生鸡肉与即食沙拉放在同一层货架;员工洗手液用完未补充。对应输出
{"violation_category":"食品温度控制","severity":"critical","code_section":"FS-3.2","corrective_action":"立即检修冷库制冷设备并将温度降至4度以下,生熟食材分层隔离存放,当日补充洗手液。"} 假设运行日为2026-09-15,deadline=2026-09-25(critical加10天)。该批次三店合计critical=1、major=1、minor=1时risk_score=8,低于阈值10,只发日报不发升级告警。做完检查这些
- Schedule Trigger改为手动执行一次,Compliance Log应新增3行,每行severity与deadline齐全且期限天数与严重度对应
- Compliance Summary新增一行,risk_score等于本批critical×5+major×2+minor×1,escalated布尔值与阈值判断一致
- 把合成数据中critical门店改为2家后再跑一次,应收到升级告警邮件且日报邮件照常送达
- 人为断开一个Sheets节点的凭据再运行,其余门店记录仍写入,工作流不整体报错中断
容易卡住的地方
- 原模板自带的是演示批次数据,不接真实巡检来源则每天只会重复处理同样的示例记录
- AI判定的严重度是辅助判断,边界案例需要人工抽查,期限和升级分支才是确定性规则
- 两张Sheets标签页的列名与顺序必须与Append节点的字段映射一致,否则写入错位或失败
- Gmail与Sheets节点要逐一开启重试和continueRegularOutput,漏配一个节点就可能阻塞整批
- 每天每店一次OpenAI调用,门店量大时仍需自行估算API额度
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Score QSR health inspections and send Gmail compliance digests with OpenAI
- 原作者
- Swapnil Mandloi
- 原始发布日期
- 2026-09-02T03:25:44.337Z
- 来源
- https://n8n.io/workflows/19037