fix(16): resolve 3 UAT issues — update flow, batch cancel, text commands
- Fix update sub-workflow: remove unsupported GraphQL filter arg, fix node reference (Format Pull Error → Format Update Error), fix field case (data.image → data.Image) - Fix batch cancel: connect Route Callback output 20 (batchcancel) to Prepare Batch UI Input (was empty connection array) - Fix text commands: change .item.json to .first().json for paired item breakage after GraphQL chain expansion; convert Send Batch Confirmation from Telegram node to HTTP Request to fix double-serialized reply_markup Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
---
|
||||
status: verifying
|
||||
trigger: "Single container update via inline keyboard fails with execution errors on both main workflow and container update sub-workflow"
|
||||
created: 2026-02-09T00:00:00Z
|
||||
updated: 2026-02-09T00:30:00Z
|
||||
---
|
||||
|
||||
## Current Focus
|
||||
|
||||
hypothesis: CONFIRMED - Three bugs in n8n-update.json causing update flow failure
|
||||
test: Push fixed workflow and trigger update via inline keyboard
|
||||
expecting: Update should complete without execution errors
|
||||
next_action: User triggers update to verify fix
|
||||
|
||||
## Symptoms
|
||||
|
||||
expected: Tapping "Update" on inline keyboard confirmation should trigger container update via GraphQL API
|
||||
actual: Execution errors on both main workflow and update sub-workflow after confirmation dialog
|
||||
errors: (1) "Unknown argument 'filter' on field 'Docker.containers'" (2) "missing data.docker.containers" (3) Wrong node reference in Return Error
|
||||
reproduction: Tap Update on container submenu, confirm, observe error
|
||||
started: After Phase 16 migration (Docker socket proxy -> Unraid GraphQL API)
|
||||
|
||||
## Eliminated
|
||||
|
||||
- hypothesis: Credential ID issue (placeholder "unraid-api-key-credential-id")
|
||||
evidence: n8n resolves credentials by name on push; actual n8n has correct ID "6DB4RZZoeF5Raf7V"
|
||||
timestamp: 2026-02-09
|
||||
|
||||
- hypothesis: ContainerId format is wrong (PrefixedID with colon)
|
||||
evidence: The PrefixedID format is correct and used by the mutation; the issue is the query using a nonexistent filter arg
|
||||
timestamp: 2026-02-09
|
||||
|
||||
- hypothesis: Main workflow "Prepare Text Action Input" error is related
|
||||
evidence: Execution 1516 was triggered by text command "Start dup", not an update callback - separate bug
|
||||
timestamp: 2026-02-09
|
||||
|
||||
## Evidence
|
||||
|
||||
- timestamp: 2026-02-09
|
||||
checked: n8n execution 1498 (main workflow, callback update flow)
|
||||
found: Flow reaches "Execute Callback Update" which calls update sub-workflow; sub-workflow fails with "missing data.docker.containers" error
|
||||
implication: Error originates in update sub-workflow, propagates back to main workflow
|
||||
|
||||
- timestamp: 2026-02-09
|
||||
checked: n8n execution 1500 (update sub-workflow)
|
||||
found: "Query Single Container" node sends GraphQL query with `filter: { id: "..." }` argument. Unraid API responds HTTP 400: "Unknown argument 'filter' on field 'Docker.containers'"
|
||||
implication: The `filter` argument does not exist in Unraid GraphQL API schema. All working queries use `query { docker { containers { ... } } }` without filter
|
||||
|
||||
- timestamp: 2026-02-09
|
||||
checked: Working queries in n8n-actions.json, n8n-status.json
|
||||
found: All working nodes query ALL containers without filter, then filter client-side
|
||||
implication: Unraid GraphQL API only supports listing all containers, no server-side filtering
|
||||
|
||||
- timestamp: 2026-02-09
|
||||
checked: Update sub-workflow flow routing
|
||||
found: Main workflow passes containerId (resolved by name). Sub-workflow's "Has Container ID?" = true, routes to "Query Single Container" (broken filter). The "no container ID" path through "Query All Containers" works correctly
|
||||
implication: Direct ID path is always taken and always fails
|
||||
|
||||
- timestamp: 2026-02-09
|
||||
checked: "Return Error" node code
|
||||
found: References `$('Format Pull Error')` but node is actually named "Format Update Error"
|
||||
implication: Error path would also fail with "node not found" if reached
|
||||
|
||||
- timestamp: 2026-02-09
|
||||
checked: "Capture Pre-Update State" node
|
||||
found: Reads `data.image` (lowercase) from normalizer but normalizer outputs `Image` (capitalized)
|
||||
implication: currentImage would always be empty string even if normalizer worked
|
||||
|
||||
## Resolution
|
||||
|
||||
root_cause: Three bugs in n8n-update.json:
|
||||
1. PRIMARY: "Query Single Container" uses nonexistent GraphQL `filter` argument on `Docker.containers`. Unraid API does not support server-side filtering - returns HTTP 400.
|
||||
2. SECONDARY: "Return Error" node references `$('Format Pull Error')` but node is named "Format Update Error" (leftover from pre-migration naming).
|
||||
3. MINOR: "Capture Pre-Update State" reads `data.image` but normalizer outputs `data.Image` (case mismatch).
|
||||
|
||||
fix: |
|
||||
1. Changed "Query Single Container" jsonBody from filter-based query to same all-containers query used by working nodes
|
||||
2. Rewrote "Normalize Single Container" to fetch all containers, then filter client-side by containerId from trigger data
|
||||
3. Fixed "Return Error" node reference from `$('Format Pull Error')` to `$('Format Update Error')`
|
||||
4. Fixed "Capture Pre-Update State" property access from `data.image` to `data.Image`
|
||||
|
||||
verification: Pushed to n8n (HTTP 200). Awaiting user test of inline keyboard update flow.
|
||||
|
||||
files_changed:
|
||||
- /home/luc/Projects/unraid-docker-manager/n8n-update.json
|
||||
Reference in New Issue
Block a user