From 7fa8c1273676f861ea34c25c453d819b2f48e474 Mon Sep 17 00:00:00 2001 From: Janno Stern Date: Wed, 8 Oct 2025 12:02:42 +0300 Subject: [PATCH 1/3] Fix intent update --- .../training/GET/rasa/intents/mark-for-service.yml | 1 + DSL/Ruuter.private/training/POST/rasa/responses/add.yml | 1 + DSL/Ruuter.private/training/POST/rasa/responses/update.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/DSL/Ruuter.private/training/GET/rasa/intents/mark-for-service.yml b/DSL/Ruuter.private/training/GET/rasa/intents/mark-for-service.yml index 1e77fca0b..9e897f652 100644 --- a/DSL/Ruuter.private/training/GET/rasa/intents/mark-for-service.yml +++ b/DSL/Ruuter.private/training/GET/rasa/intents/mark-for-service.yml @@ -53,6 +53,7 @@ updateInDatabase: body: intent: ${intent} isForService: ${isForService} + status: null result: addIntentResult returnSuccess: diff --git a/DSL/Ruuter.private/training/POST/rasa/responses/add.yml b/DSL/Ruuter.private/training/POST/rasa/responses/add.yml index dfcacb094..1c28bddcf 100644 --- a/DSL/Ruuter.private/training/POST/rasa/responses/add.yml +++ b/DSL/Ruuter.private/training/POST/rasa/responses/add.yml @@ -105,6 +105,7 @@ updateIntentStatus: url: "[#TRAINING_RESQL]/update-intent" body: intent: ${intent} + isForService: null status: "NOT_TRAINED" result: updateIntentStatusResult next: returnSuccess diff --git a/DSL/Ruuter.private/training/POST/rasa/responses/update.yml b/DSL/Ruuter.private/training/POST/rasa/responses/update.yml index 7039c07e1..b25091de0 100644 --- a/DSL/Ruuter.private/training/POST/rasa/responses/update.yml +++ b/DSL/Ruuter.private/training/POST/rasa/responses/update.yml @@ -105,6 +105,7 @@ updateIntentStatus: url: "[#TRAINING_RESQL]/update-intent" body: intent: ${intent} + isForService: null status: "NOT_TRAINED" result: updateIntentStatusResult next: returnSuccess From 836b478c33335768d54c5b169c431cc1816fad32 Mon Sep 17 00:00:00 2001 From: Janno Stern Date: Wed, 8 Oct 2025 15:04:29 +0300 Subject: [PATCH 2/3] Fix intent update --- DSL/Resql/training/POST/update-intent.sql | 10 ++++++++-- .../training/GET/rasa/intents/mark-for-service.yml | 2 +- .../training/POST/rasa/responses/add.yml | 2 +- .../training/POST/rasa/responses/update.yml | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/DSL/Resql/training/POST/update-intent.sql b/DSL/Resql/training/POST/update-intent.sql index 5ba25ebbd..5851d8b25 100644 --- a/DSL/Resql/training/POST/update-intent.sql +++ b/DSL/Resql/training/POST/update-intent.sql @@ -6,8 +6,14 @@ INSERT INTO intent (intent, created, status, isForService) SELECT :intent, CURRENT_TIMESTAMP, - COALESCE(:status, latest_intent.status), - COALESCE(:isForService, latest_intent.isForService) + COALESCE(NULLIF(:status, ''), latest_intent.status), + COALESCE( + CASE + WHEN CAST(:isForService AS TEXT) = '' THEN NULL + ELSE CAST(:isForService AS BOOLEAN) + END, + latest_intent.isForService + ) FROM ( -- Find the latest version of the specific intent SELECT DISTINCT ON (intent) diff --git a/DSL/Ruuter.private/training/GET/rasa/intents/mark-for-service.yml b/DSL/Ruuter.private/training/GET/rasa/intents/mark-for-service.yml index 9e897f652..4a66fdfeb 100644 --- a/DSL/Ruuter.private/training/GET/rasa/intents/mark-for-service.yml +++ b/DSL/Ruuter.private/training/GET/rasa/intents/mark-for-service.yml @@ -53,7 +53,7 @@ updateInDatabase: body: intent: ${intent} isForService: ${isForService} - status: null + status: "" result: addIntentResult returnSuccess: diff --git a/DSL/Ruuter.private/training/POST/rasa/responses/add.yml b/DSL/Ruuter.private/training/POST/rasa/responses/add.yml index 1c28bddcf..63087041a 100644 --- a/DSL/Ruuter.private/training/POST/rasa/responses/add.yml +++ b/DSL/Ruuter.private/training/POST/rasa/responses/add.yml @@ -105,7 +105,7 @@ updateIntentStatus: url: "[#TRAINING_RESQL]/update-intent" body: intent: ${intent} - isForService: null + isForService: "" status: "NOT_TRAINED" result: updateIntentStatusResult next: returnSuccess diff --git a/DSL/Ruuter.private/training/POST/rasa/responses/update.yml b/DSL/Ruuter.private/training/POST/rasa/responses/update.yml index b25091de0..7552ce652 100644 --- a/DSL/Ruuter.private/training/POST/rasa/responses/update.yml +++ b/DSL/Ruuter.private/training/POST/rasa/responses/update.yml @@ -105,7 +105,7 @@ updateIntentStatus: url: "[#TRAINING_RESQL]/update-intent" body: intent: ${intent} - isForService: null + isForService: "" status: "NOT_TRAINED" result: updateIntentStatusResult next: returnSuccess From 9ccbc71a04c96d08f79de0753208a874ade3a76c Mon Sep 17 00:00:00 2001 From: Janno Stern Date: Fri, 10 Oct 2025 15:08:39 +0300 Subject: [PATCH 3/3] Fix intent update --- DSL/Resql/training/POST/add-intent.sql | 18 +----------------- DSL/Resql/training/POST/update-intent-name.sql | 12 ++++++++++++ .../training/POST/rasa/intents/update.yml | 5 +++-- 3 files changed, 16 insertions(+), 19 deletions(-) create mode 100644 DSL/Resql/training/POST/update-intent-name.sql diff --git a/DSL/Resql/training/POST/add-intent.sql b/DSL/Resql/training/POST/add-intent.sql index 8740f93c5..cf9493d60 100644 --- a/DSL/Resql/training/POST/add-intent.sql +++ b/DSL/Resql/training/POST/add-intent.sql @@ -1,18 +1,2 @@ --- Insert new row for intent preserving existing status --- This finds the latest version of the intent and creates a new row with preserved status INSERT INTO intent (intent, created, status, isForService) -SELECT - :intent, - CURRENT_TIMESTAMP, - COALESCE(latest_intent.status, :status), - false -FROM ( - -- Find the latest version of the specific intent - SELECT DISTINCT ON (intent) - intent, - status, - created - FROM intent - WHERE intent = :intent - ORDER BY intent, created DESC -) AS latest_intent; +VALUES (:intent, CURRENT_TIMESTAMP, :status, false); diff --git a/DSL/Resql/training/POST/update-intent-name.sql b/DSL/Resql/training/POST/update-intent-name.sql new file mode 100644 index 000000000..d14fd6bf5 --- /dev/null +++ b/DSL/Resql/training/POST/update-intent-name.sql @@ -0,0 +1,12 @@ +-- Update intent name by inserting a new record with the new name and copying over status and isForService from the old record. +-- Expects :oldIntent and :newIntent parameters. +INSERT INTO intent (intent, status, isForService, created) +SELECT + :newIntent, + status, + isForService, + CURRENT_TIMESTAMP +FROM intent +WHERE intent = :oldIntent +ORDER BY created DESC +LIMIT 1; diff --git a/DSL/Ruuter.private/training/POST/rasa/intents/update.yml b/DSL/Ruuter.private/training/POST/rasa/intents/update.yml index 90fe62003..e17b22299 100644 --- a/DSL/Ruuter.private/training/POST/rasa/intents/update.yml +++ b/DSL/Ruuter.private/training/POST/rasa/intents/update.yml @@ -291,9 +291,10 @@ addNewIntentInPipeline: addInDatabase: call: http.post args: - url: "[#TRAINING_RESQL]/add-intent" + url: "[#TRAINING_RESQL]/update-intent-name" body: - intent: ${incoming.body.newName} + oldIntent: ${incoming.body.oldName} + newIntent: ${incoming.body.newName} result: addInDatabaseResult deleteOldIntentFile: