fix(12-02): Update All flow — 9 bug fixes from UAT

Fixes discovered during BATCH-04/BATCH-05 UAT testing:

- Convert confirmation to HTTP Request (editMessageText for inline kb,
  sendMessage for text command) with dynamic endpoint selection
- Fix data chain breaks: use named node refs ($('Parse Callback Data'),
  $('Get Update All Data')) instead of $json after API calls
- Add infrastructure container exclusion (n8n, socket-proxy) by image
  and container name to prevent bot self-destruction during updates
- Add batch responseMode to update sub-workflow (skip Telegram messages)
- Reorder infra check before :latest filter so sha256-digest images
  appear in skipped list
- Add onError:continueRegularOutput to Answer Update All Start for
  expired callback queries
- Show "Back to List" button in batch summary for update-all flow
- Add Prepare Update All Batch fallback in Prepare Batch Loop

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lucas Berger
2026-02-08 18:04:20 -05:00
parent b3909f00e5
commit c2c2ce7092
2 changed files with 196 additions and 82 deletions
+174 -54
View File
@@ -370,31 +370,64 @@
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
"rules": {
"values": [
{
"id": "is-inline",
"leftValue": "={{ $json.responseMode }}",
"rightValue": "inline",
"operator": {
"type": "string",
"operation": "equals"
}
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "inline-check",
"leftValue": "={{ $json.responseMode }}",
"rightValue": "inline",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"outputKey": "inline"
},
{
"id": "is-batch",
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "batch-check",
"leftValue": "={{ $json.responseMode }}",
"rightValue": "batch",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"outputKey": "batch"
}
],
"combinator": "and"
]
},
"options": {}
"options": {
"fallbackOutput": "extra"
}
},
"id": "if-response-mode-success",
"name": "Check Response Mode (Success)",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"type": "n8n-nodes-base.switch",
"typeVersion": 3.2,
"position": [
3760,
100
@@ -489,31 +522,64 @@
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
"rules": {
"values": [
{
"id": "is-inline-no-update",
"leftValue": "={{ $json.responseMode }}",
"rightValue": "inline",
"operator": {
"type": "string",
"operation": "equals"
}
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "inline-check",
"leftValue": "={{ $json.responseMode }}",
"rightValue": "inline",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"outputKey": "inline"
},
{
"id": "is-batch-no-update",
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "batch-check",
"leftValue": "={{ $json.responseMode }}",
"rightValue": "batch",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"outputKey": "batch"
}
],
"combinator": "and"
]
},
"options": {}
"options": {
"fallbackOutput": "extra"
}
},
"id": "if-response-mode-no-update",
"name": "Check Response Mode (No Update)",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"type": "n8n-nodes-base.switch",
"typeVersion": 3.2,
"position": [
2440,
300
@@ -590,31 +656,64 @@
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
"rules": {
"values": [
{
"id": "is-inline-error",
"leftValue": "={{ $json.responseMode }}",
"rightValue": "inline",
"operator": {
"type": "string",
"operation": "equals"
}
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "inline-check",
"leftValue": "={{ $json.responseMode }}",
"rightValue": "inline",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"outputKey": "inline"
},
{
"id": "is-batch-error",
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "batch-check",
"leftValue": "={{ $json.responseMode }}",
"rightValue": "batch",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"outputKey": "batch"
}
],
"combinator": "and"
]
},
"options": {}
"options": {
"fallbackOutput": "extra"
}
},
"id": "if-response-mode-error",
"name": "Check Response Mode (Error)",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"type": "n8n-nodes-base.switch",
"typeVersion": 3.2,
"position": [
1780,
400
@@ -917,6 +1016,13 @@
"index": 0
}
],
[
{
"node": "Remove Old Image (Success)",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Text Success",
@@ -979,6 +1085,13 @@
"index": 0
}
],
[
{
"node": "Return No Update",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Text No Update",
@@ -1030,6 +1143,13 @@
"index": 0
}
],
[
{
"node": "Return Error",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Text Error",