- Extract node: Use Set node with proper field mappings
- Parse node: Use Set node with try-catch error handling for JSON parsing
- Set nodes are more stable and better supported in n8n
- Both nodes now handle data transformation without code execution issues
- Change typeVersion from 2 to 1 for Code nodes
- Rename 'jsCode' parameter to 'functionCode' for compatibility
- Both Extract and Parse nodes use proper format now
- Replace Set nodes with Code nodes for JavaScript-based data transformation
- Code node in Extract: maps data array to individual items for iteration
- Code node in Parse: handles JSON parsing with error fallback
- Replace If node with Switch node for more reliable conditional logic
- Remove Split Results node entirely - handled in Code nodes
- Proper error handling for malformed LLM responses
- Should resolve all undefined/toLowerCase errors
- Add optional chaining (?.) for safe navigation of response properties
- Add fallback values if response fields are missing
- Extract vertrauen field directly in Parse node for easier reference
- Update Check Confidence node to reference $json.vertrauen instead of nested path
- Handles cases where LLM response format is unexpected
- Revert to splitInBatches node type for compatibility
- Add basePath option set to 'data' to extract items from data array
- This tells n8n to iterate over the data array specifically
- Replace splitInBatches with itemLists node for better data handling
- Configure splitField to 'data' to extract individual items from API response
- Adjust node positions and connections accordingly
- Fixes issue where only first item was being processed
- Replace unavailable gpt-3.5-turbo with available gpt-oss_120b_128k-gpu model
- Model is confirmed available on LiteLLM API endpoint
- Maintains all prompt structure and JSON response requirements
- Use LEFT JOIN with IS NULL condition instead of NOT IN subquery
- Change GROUP_CONCAT separator from '\n' to ',' (MariaDB syntax)
- Query now successfully returns unprocessed conversations from Freescout DB
- Verified: returns 20 conversations with proper data structure
- Replace mysql-connector-python with PyMySQL driver for better MariaDB compatibility
- PyMySQL handles utf8mb4_0900_ai_ci collation properly without errors
- Update Dockerfile.sql-executor to install PyMySQL and psycopg2-binary
- Refactor sql-query-executor.py to use PyMySQL API (pymysql.connect, DictCursor)
- Verified sql-executor service with SELECT, INSERT, UPDATE operations on Freescout DB
- Add n8n workflow definitions: workflow-a-http.json and workflow-b-http.json
* Workflow A: Polls unprocessed conversations, analyzes with LiteLLM, saves suggestions
* Workflow B: Polls approved suggestions, executes Baramundi jobs or email replies
- Update compose.yaml with sql-executor service configuration and dependencies
All SQL operations now execute successfully against MariaDB 11.3.2