关于 n8n-pto-pipeline
面向建筑团队的 n8n 工作流,通过 Telegram 将 Google Sheets 中的任务分发给工长,并收集状态回复。工作流可定时发送任务,并将更新写回任务表。
主要功能
- 01定时分发任务
- 02从 Google Sheets 读取任务
- 03通过 Telegram 发送任务
- 04收集工长状态回复
- 05在 Sheets 中更新任务状态
适用场景
- 01向工长发送每日任务
- 02收集现场完成情况
- 03在 Google Sheets 跟踪任务状态
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ datadrivenconstruction/ ddc_skills_for_ai_agents_in_construction --skill n8n-pto-pipeline安装后在 Claude Code 中输入/n8n-pto-pipeline确认已加载。
附带文件claw.jsoninstructions.md
详细介绍
n8n PTO-Foreman 工作流
商业案例
问题陈述
建筑行业的日常工作规划涉及:
- 手动将 PTO(工程部门)的任务分配给现场施工队
- 通过纸质方式或电话分配任务
- 缺乏系统化的任务完成情况跟踪
- 报告和状态更新延迟
解决方案
通过自动化 n8n 工作流,将 Google Sheets 任务列表与 Telegram 机器人连接起来,实现任务实时分配和状态收集。
业务价值
- 实时分配 - 每天上午 8:00 自动发送任务
- 数字化跟踪 - 所有分配和状态都集中在一个表格中
- 移动优先 - 工头使用熟悉的 Telegram 界面
- 无需安装应用 - 任何装有 Telegram 的手机都能使用
技术实现
架构
┌─────────────────┐ ┌─────────────┐ ┌─────────────────┐
│ Google Sheets │───>│ n8n │───>│ Telegram Bot │
│ (Task List) │ │ Pipeline │ │ (To Foreman) │
└─────────────────┘ └─────────────┘ └─────────────────┘
▲ │ │
│ │ ▼
│ ┌──────┴──────┐ ┌───────────┐
└──────────────│ Status │<─────│ Foreman │
│ Update │ │ Response │
└─────────────┘ └───────────┘
n8n 工作流组件
1. 早间触发器(上午 8:00)
{
"nodes": [
{
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"parameters": {
"rule": {
"interval": [
{"field": "hours", "hoursInterval": 24}
]
},
"triggerTimes": {"item": [{"hour": 8, "minute": 0}]}
}
}
]
}
2. 从 Google Sheets 获取任务
{
"name": "Get Today Tasks",
"type": "n8n-nodes-base.googleSheets",
"parameters": {
"operation": "read",
"sheetId": "YOUR_SHEET_ID",
"range": "Tasks!A:F",
"options": {}
}
}
3. 按工头筛选任务
// Filter tasks for specific foreman based on chat_id
const chatId = $node["Telegram Trigger"].json["message"]["chat"]["id"];
const tasks = $input.all();
return tasks.filter(task =>
task.json.foreman_chat_id === chatId.toString()
);
4. 格式化并通过 Telegram 发送
// Format task message
const tasks = $input.all();
let message = "📋 *Задачи на сегодня:*\n\n";
tasks.forEach((task, index) => {
message += `*${index + 1}. ${task.json.task_name}*\n`;
message += ` 📍 Участок: ${task.json.location}\n`;
message += ` ⏰ Срок: ${task.json.deadline}\n`;
message += ` 📝 ${task.json.description}\n\n`;
});
message += "\n_Ответьте на это сообщение статусом:_\n";
message += "✅ выполнил\n❌ не выполнил + причина";
return [{json: {message}}];
5. 状态更新处理器
// Parse foreman response and update status
const message = $node["Telegram Trigger"].json["message"]["text"];
const replyTo = $node["Telegram Trigger"].json["message"]["reply_to_message"];
let status = "в работе";
let comment = "";
if (message.toLowerCase().includes("выполнил")) {
status = "выполнено";
} else if (message.toLowerCase().includes("не выполнил")) {
status = "не выполнено";
comment = message.replace(/не выполнил/i, "").trim();
}
return [{
json: {
task_id: replyTo.message_id,
status: status,
comment: comment,
updated_at: new Date().toISOString()
}
}];
Google Sheets 结构
任务工作表:
| 列 | 说明 |
|---|---|
| task_id | 唯一任务标识符 |
| task_name | 任务标题 |
| description | 详细说明 |
| location | 工作地点 |
| deadline | 截止日期/时间 |
| foreman_chat_id | 已分配工头的 Telegram 聊天 ID |
| status | 当前状态 |
| comment | 工头备注 |
工头工作表:
| 列 | 说明 |
|---|---|
| name | 工头姓名 |
| chat_id | Telegram 聊天 ID |
| registered_at | 注册时间戳 |
Telegram 机器人设置
- 通过 @BotFather 创建机器人
- 获取机器人令牌
- 在 n8n 中配置 webhook
- 如需本地测试,使用 n8n 隧道:
npx n8n --tunnel
使用流程
PTO 工程师:
- 打开 Google Sheets 任务列表
- 添加任务并分配工头
- 系统会在上午 8:00 自动发送任务
工头:
- 通过 Telegram 机器人接收任务
- 回复任务消息并附上状态
- 系统会自动更新 Google Sheets
经理:
- 在 Google Sheets 中查看实时状态
- 根据历史数据生成报告
- 按工头/地点分析完成率
部署选项
本地(测试)
npx n8n --tunnel
云 VPS(生产环境)
- Hostinger n8n:约 $5/月
- Amvera Cloud:约 170 RUB/月
- timeweb:约 590 RUB/月
扩展
- 为已完成的工作添加照片附件
- 集成 PostgreSQL 以支持复杂查询
- 添加提醒通知
- 生成每日报告/每周报告
- 连接到项目管理系统
资源
- 来源:DDC Telegram 社区讨论
- 模板:可在 DDC GitHub 代码库中获取
评论
支持 Markdown