Feat: Architecture redesign for Assessments, Commands, Modalities, Training Techniques, Reinforcement Schedules, Distractions, and Assessment Responses.

This commit is contained in:
2025-09-06 12:13:16 +01:00
parent 12f5fc994f
commit 2da465935d
158 changed files with 14781 additions and 3477 deletions

View File

@@ -31,6 +31,10 @@ CREATE PROCEDURE fetchmetrics.p_dog_calc_assessment_response (
, IN a_notes_assessment TEXT
, IN a_min_temperature_assessment DECIMAL(5, 2)
, IN a_max_temperature_assessment DECIMAL(5, 2)
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_get_all_weather BIT
, IN a_get_inactive_weather BIT
, IN a_ids_weather TEXT
@@ -59,14 +63,10 @@ CREATE PROCEDURE fetchmetrics.p_dog_calc_assessment_response (
, IN a_names_command TEXT
, IN a_hand_signal_default_descriptions_command TEXT
, IN a_notes_command TEXT
, IN a_get_all_command_modality BIT
, IN a_get_inactive_command_modality BIT
, IN a_ids_command_modality TEXT
, IN a_names_command_modality TEXT
, IN a_get_all_bribe BIT
, IN a_get_inactive_bribe BIT
, IN a_ids_bribe TEXT
, IN a_names_bribe TEXT
, IN a_get_all_reinforcement_schedule BIT
, IN a_get_inactive_reinforcement_schedule BIT
, IN a_ids_reinforcement_schedule TEXT
, IN a_names_reinforcement_schedule TEXT
, IN a_get_all_response_quality_metric BIT
, IN a_get_inactive_response_quality_metric BIT
@@ -203,6 +203,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -221,6 +225,7 @@ BEGIN
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
@@ -231,14 +236,11 @@ BEGIN
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_get_all_bribe
, a_get_inactive_bribe
, a_ids_bribe
, a_names_bribe
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_response_quality_metric
, a_get_inactive_response_quality_metric
@@ -272,20 +274,10 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Response_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Obedience_Level_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Response_Quality_Metric_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Link_Calc_Assessment_Response;
CREATE TEMPORARY TABLE tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response (
CREATE TEMPORARY TABLE tmp_Assessment_Command_Link_Calc_Assessment_Response (
id_link INT NOT NULL
, id_assessment INT
, id_command INT
, id_command_modality INT
, id_bribe INT
, distance_from_handler_metres FLOAT
, is_in_sight_of_handler BIT
, is_in_scent_range_of_handler BIT
, is_in_hearing_range_of_handler BIT
, is_on_lead BIT
, trial_count INT
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
@@ -314,7 +306,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Assessment_Response_Calc_Assessment_Response (
id_response INT NOT NULL
, id_assessment_command_modality_link INT
, id_assessment_command_link INT
, id_response_quality_metric INT
, id_obedience_level INT
, value_measured DOUBLE
@@ -348,7 +340,7 @@ BEGIN
SET v_has_filter_assessment_response_value_measured_min := NOT ISNULL(a_min_value_measured_assessment_response);
SET v_has_filter_assessment_response_value_measured_max := NOT ISNULL(a_max_value_measured_assessment_response);
-- Call Calc Assessment Command Modality Link
-- Call Calc Assessment Command Link
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Assessment_Response t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
@@ -372,6 +364,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -402,15 +398,10 @@ BEGIN
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_get_all_bribe
, a_get_inactive_bribe
, a_ids_bribe
, a_names_bribe
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
@@ -421,7 +412,7 @@ BEGIN
;
END IF;
CALL fetchmetrics.p_dog_calc_assessment_command_modality_link (
CALL fetchmetrics.p_dog_calc_assessment_command_link (
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_ACM_link
@@ -442,6 +433,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -472,15 +467,10 @@ BEGIN
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_get_all_bribe
, a_get_inactive_bribe
, a_ids_bribe
, a_names_bribe
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
@@ -490,44 +480,24 @@ BEGIN
, 0 -- a_debug
);
INSERT INTO tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response (
INSERT INTO tmp_Assessment_Command_Link_Calc_Assessment_Response (
id_link
, id_assessment
, id_command
, id_command_modality
, id_bribe
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
, trial_count
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_command
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_command_modality
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_bribe
, ASSESSMENT_COMMAND_MODALITY_LINK_T.distance_from_handler_metres
, ASSESSMENT_COMMAND_MODALITY_LINK_T.is_in_sight_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK_T.is_in_scent_range_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK_T.is_in_hearing_range_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK_T.is_on_lead
, ASSESSMENT_COMMAND_MODALITY_LINK_T.trial_count
, ASSESSMENT_COMMAND_MODALITY_LINK_T.active
ASSESSMENT_COMMAND_LINK_T.id_link
, ASSESSMENT_COMMAND_LINK_T.active
, ASSESSMENT_COMMAND_MODALITY_LINK_T.does_meet_id_filters
, ASSESSMENT_COMMAND_MODALITY_LINK_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp ASSESSMENT_COMMAND_MODALITY_LINK_T
WHERE ASSESSMENT_COMMAND_MODALITY_LINK_T.GUID = a_guid
, ASSESSMENT_COMMAND_LINK_T.does_meet_id_filters
, ASSESSMENT_COMMAND_LINK_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Link_Temp ASSESSMENT_COMMAND_LINK_T
WHERE ASSESSMENT_COMMAND_LINK_T.GUID = a_guid
;
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Assessment_Response;
END IF;
END IF;
@@ -791,7 +761,7 @@ BEGIN
)
SELECT
ASSESSMENT_RESPONSE.id_response
, ASSESSMENT_RESPONSE.id_assessment_command_modality_link
, ASSESSMENT_RESPONSE.id_assessment_command_link
, ASSESSMENT_RESPONSE.id_response_quality_metric
, ASSESSMENT_RESPONSE.id_obedience_level
, ASSESSMENT_RESPONSE.value_measured
@@ -853,7 +823,7 @@ BEGIN
END IF;
INSERT INTO tmp_Assessment_Response_Calc_Assessment_Response (
id_response
, id_assessment_command_modality_link
, id_assessment_command_link
, id_response_quality_metric
, id_obedience_level
, value_measured
@@ -896,7 +866,7 @@ BEGIN
)
SELECT
ASSESSMENT_RESPONSE.id_response
, ASSESSMENT_RESPONSE.id_assessment_command_modality_link
, ASSESSMENT_RESPONSE.id_assessment_command_link
, ASSESSMENT_RESPONSE.id_response_quality_metric
, ASSESSMENT_RESPONSE.id_obedience_level
, ASSESSMENT_RESPONSE.value_measured
@@ -970,7 +940,7 @@ BEGIN
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Assessment_Response t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
DELETE t_ASSESSMENT_RESPONSE
FROM tmp_Assessment_Response_Calc_Assessment_Response t_ASSESSMENT_RESPONSE
LEFT JOIN tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response t_ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link
LEFT JOIN tmp_Assessment_Command_Link_Calc_Assessment_Response t_ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
LEFT JOIN tmp_Response_Quality_Metric_Calc_Assessment_Response t_RESPONSE_QUALITY_METRIC ON t_ASSESSMENT_RESPONSE.id_response_quality_metric = t_RESPONSE_QUALITY_METRIC.id_metric
LEFT JOIN tmp_Obedience_Level_Calc_Assessment_Response t_OBEDIENCE_LEVEL ON t_ASSESSMENT_RESPONSE.id_obedience_level = t_OBEDIENCE_LEVEL.id_obedience_level
WHERE
@@ -978,7 +948,7 @@ BEGIN
a_require_all_id_search_filters_met = 1
AND (
t_ASSESSMENT_RESPONSE.does_meet_id_filters = 0
OR IFNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_id_filters, 1) = 0
OR IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_id_filters, 1) = 0
OR IFNULL(t_RESPONSE_QUALITY_METRIC.does_meet_id_filters, 1) = 0
OR IFNULL(t_OBEDIENCE_LEVEL.does_meet_id_filters, 1) = 0
)
@@ -987,7 +957,7 @@ BEGIN
a_require_all_non_id_search_filters_met = 1
AND (
t_ASSESSMENT_RESPONSE.does_meet_non_id_filters = 0
OR IFNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_RESPONSE_QUALITY_METRIC.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_OBEDIENCE_LEVEL.does_meet_non_id_filters, 1) = 0
)
@@ -995,14 +965,14 @@ BEGIN
OR (
a_require_any_id_search_filters_met = 1
AND t_ASSESSMENT_RESPONSE.does_meet_id_filters = 0
AND IFNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_id_filters, 1) = 0
AND IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_id_filters, 1) = 0
AND IFNULL(t_RESPONSE_QUALITY_METRIC.does_meet_id_filters, 1) = 0
AND IFNULL(t_OBEDIENCE_LEVEL.does_meet_id_filters, 1) = 0
)
OR (
a_require_any_non_id_search_filters_met = 1
AND t_ASSESSMENT_RESPONSE.does_meet_non_id_filters = 0
AND IFNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_RESPONSE_QUALITY_METRIC.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_OBEDIENCE_LEVEL.does_meet_non_id_filters, 1) = 0
)
@@ -1011,7 +981,7 @@ BEGIN
IF a_debug = 1 THEN
SELECT 'After filter Assessment_Responses';
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Response_Quality_Metric_Calc_Assessment_Response;
SELECT * FROM tmp_Obedience_Level_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Response_Calc_Assessment_Response;
@@ -1095,7 +1065,7 @@ BEGIN
IF a_debug = 1 THEN
SELECT 'Before non-permitted data deletion';
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Response_Quality_Metric_Calc_Assessment_Response;
SELECT * FROM tmp_Obedience_Level_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Response_Calc_Assessment_Response;
@@ -1103,13 +1073,13 @@ BEGIN
IF EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Assessment_Response t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Response_Quality_Metric_Calc_Assessment_Response;
SELECT * FROM tmp_Obedience_Level_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Response_Calc_Assessment_Response;
END IF;
DELETE FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
DELETE FROM tmp_Assessment_Command_Link_Calc_Assessment_Response;
DELETE FROM tmp_Response_Quality_Metric_Calc_Assessment_Response;
DELETE FROM tmp_Obedience_Level_Calc_Assessment_Response;
DELETE FROM tmp_Assessment_Response_Calc_Assessment_Response;
@@ -1125,7 +1095,7 @@ BEGIN
INSERT INTO fetchmetrics.DOG_Assessment_Response_Temp (
guid
, id_response
, id_assessment_command_modality_link
, id_assessment_command_link
, id_response_quality_metric
, id_obedience_level
, value_measured
@@ -1138,7 +1108,7 @@ BEGIN
SELECT
a_guid
, t_ASSESSMENT_RESPONSE.id_response
, t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link
, t_ASSESSMENT_RESPONSE.id_assessment_command_link
, t_ASSESSMENT_RESPONSE.id_response_quality_metric
, t_ASSESSMENT_RESPONSE.id_obedience_level
, t_ASSESSMENT_RESPONSE.value_measured
@@ -1170,13 +1140,13 @@ BEGIN
END IF;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Response_Quality_Metric_Calc_Assessment_Response;
SELECT * FROM tmp_Obedience_Level_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Response_Calc_Assessment_Response;
END IF;
CALL fetchmetrics.p_dog_clear_calc_assessment_command_modality_link (
CALL fetchmetrics.p_dog_clear_calc_assessment_command_link (
a_guid
, 0 -- a_debug
);
@@ -1197,7 +1167,7 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Response_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Obedience_Level_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Response_Quality_Metric_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Link_Calc_Assessment_Response;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
@@ -1229,12 +1199,17 @@ CALL fetchmetrics.p_dog_calc_assessment_response (
, NULL -- a_value_is_on_lead_ACM_link
, NULL -- a_min_trial_count_ACM_link
, NULL -- a_max_trial_count_ACM_link
, 1 -- a_get_all_assessment
, 0 -- a_get_inactive_assessment
, '' -- a_ids_assessment
, '' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather
@@ -1253,6 +1228,8 @@ CALL fetchmetrics.p_dog_calc_assessment_response (
-- , IN a_auth0_ids_user_handler TEXT
, '' -- a_names_user_handler
, '' -- a_emails_user_handler
, 1 -- a_get_all_command_category
, 0 -- a_get_inactive_command_category
, '' -- a_ids_command_category
@@ -1263,14 +1240,11 @@ CALL fetchmetrics.p_dog_calc_assessment_response (
, '' -- a_names_command
, '' -- a_hand_signal_default_descriptions_command
, '' -- a_notes_command
, 1 -- a_get_all_command_modality
, 0 -- a_get_inactive_command_modality
, '' -- a_ids_command_modality
, '' -- a_names_command_modality
, 1 -- a_get_all_bribe
, 0 -- a_get_inactive_bribe
, '' -- a_ids_bribe
, '' -- a_names_bribe
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, '' -- a_names_reinforcement_schedule
, 1 -- a_get_all_response_quality_metric
, 0 -- a_get_inactive_response_quality_metric