From a8d9aba08169bb91bbcd2ea010cf08dd999dee2c Mon Sep 17 00:00:00 2001 From: computermacgyver Date: Wed, 30 Oct 2024 08:28:18 +0000 Subject: [PATCH 1/5] Downgrade based on last_seen, not created_at; add better logging --- app/models/bot/alegre.rb | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/models/bot/alegre.rb b/app/models/bot/alegre.rb index 775abe3fa..a1d05d895 100644 --- a/app/models/bot/alegre.rb +++ b/app/models/bot/alegre.rb @@ -693,11 +693,17 @@ def self.set_relationship_type(pm, pm_id_scores, parent) settings = tbi.nil? ? {} : tbi.alegre_settings date_threshold = Time.now - settings['similarity_date_threshold'].to_i.months unless settings['similarity_date_threshold'].blank? relationship_type = pm_id_scores[parent.id][:relationship_type] - if settings['date_similarity_threshold_enabled'] && !date_threshold.blank? && parent.created_at.to_i < date_threshold.to_i - relationship_type = Relationship.suggested_type - else - length_threshold = settings.blank? ? CheckConfig.get('text_length_matching_threshold').to_f : settings['text_length_matching_threshold'].to_f - relationship_type = Relationship.suggested_type if self.is_text_too_short?(pm, length_threshold) + if relationship_type != Relationship.suggested_type + if settings['date_similarity_threshold_enabled'] && !date_threshold.blank? && parent.last_seen.to_i < date_threshold.to_i + Rails.logger.info("[Alegre Bot] [ProjectMedia ##{pm.id}] [Relationships 6/6] Downgrading to suggestion due to parent age") + relationship_type = Relationship.suggested_type + else + length_threshold = settings.blank? ? CheckConfig.get('text_length_matching_threshold').to_f : settings['text_length_matching_threshold'].to_f + if self.is_text_too_short?(pm, length_threshold) + Rails.logger.info("[Alegre Bot] [ProjectMedia ##{pm.id}] [Relationships 6/6] Downgrading to suggestion due short text") + relationship_type = Relationship.suggested_type + end + end end relationship_type end From 63a942cc6d8ab976bada4535ee4ecf85c1503913 Mon Sep 17 00:00:00 2001 From: computermacgyver Date: Fri, 1 Nov 2024 13:29:36 +0000 Subject: [PATCH 2/5] Attempt to update tests, need to test this --- test/models/bot/alegre_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/models/bot/alegre_test.rb b/test/models/bot/alegre_test.rb index 2310322f0..75f780131 100644 --- a/test/models/bot/alegre_test.rb +++ b/test/models/bot/alegre_test.rb @@ -190,13 +190,13 @@ def teardown end r = Relationship.last assert_equal Relationship.confirmed_type, r.relationship_type - pm1.created_at = Time.now - 2.months + r.destroy + pm1.last_seen = Time.now - 2.months pm1.save! tbi = Bot::Alegre.get_alegre_tbi(@team.id) tbi.set_date_similarity_threshold_enabled = true tbi.set_similarity_date_threshold("1") tbi.save! - r.destroy assert_difference 'Relationship.count' do result = Bot::Alegre.relate_project_media_to_similar_items(pm2) end From 9574f6be94f9642b9e810f2e5b19984c194bbb79 Mon Sep 17 00:00:00 2001 From: computermacgyver Date: Fri, 1 Nov 2024 17:29:12 +0000 Subject: [PATCH 3/5] Different approach to setting last_seen --- test/models/bot/alegre_test.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/models/bot/alegre_test.rb b/test/models/bot/alegre_test.rb index 75f780131..d65dfd2e6 100644 --- a/test/models/bot/alegre_test.rb +++ b/test/models/bot/alegre_test.rb @@ -185,13 +185,16 @@ def teardown } ] }) + ProjectMedia.stubs(:recalculate_last_seen).returns({ + Time.now - 2.months + }) assert_difference 'Relationship.count' do result = Bot::Alegre.relate_project_media_to_similar_items(pm2) end r = Relationship.last assert_equal Relationship.confirmed_type, r.relationship_type r.destroy - pm1.last_seen = Time.now - 2.months + pm1.created_at = Time.now - 2.months pm1.save! tbi = Bot::Alegre.get_alegre_tbi(@team.id) tbi.set_date_similarity_threshold_enabled = true @@ -203,6 +206,7 @@ def teardown r = Relationship.last assert_equal Relationship.suggested_type, r.relationship_type Bot::Alegre.unstub(:request) + ProjectMedia.unstub(:recalculate_last_seen) end test "should index report data" do From 8b4906c37d2d07bfca0dd8599b0c3aef2618a61e Mon Sep 17 00:00:00 2001 From: computermacgyver Date: Fri, 1 Nov 2024 23:54:37 +0000 Subject: [PATCH 4/5] fix stub --- test/models/bot/alegre_test.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/models/bot/alegre_test.rb b/test/models/bot/alegre_test.rb index d65dfd2e6..6054dc726 100644 --- a/test/models/bot/alegre_test.rb +++ b/test/models/bot/alegre_test.rb @@ -185,9 +185,7 @@ def teardown } ] }) - ProjectMedia.stubs(:recalculate_last_seen).returns({ - Time.now - 2.months - }) + ProjectMedia.stubs(:recalculate_last_seen).returns(Time.now - 2.months) assert_difference 'Relationship.count' do result = Bot::Alegre.relate_project_media_to_similar_items(pm2) end From bfa87adc01730007f2f20b3ef4a4abff940b342e Mon Sep 17 00:00:00 2001 From: computermacgyver Date: Mon, 4 Nov 2024 11:04:43 +0000 Subject: [PATCH 5/5] Use .any_instance.stub Testing locally helps :-) --- test/models/bot/alegre_test.rb | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/test/models/bot/alegre_test.rb b/test/models/bot/alegre_test.rb index 6054dc726..f15e9b5d0 100644 --- a/test/models/bot/alegre_test.rb +++ b/test/models/bot/alegre_test.rb @@ -185,26 +185,32 @@ def teardown } ] }) - ProjectMedia.stubs(:recalculate_last_seen).returns(Time.now - 2.months) + # Set the TeamBotInstallation (tbi) for Alegre so that a query + # matched to an item seen more than 1 month ago is downgraded to suggestion + tbi = Bot::Alegre.get_alegre_tbi(@team.id) + tbi.set_date_similarity_threshold_enabled = true + tbi.set_similarity_date_threshold("1") + tbi.save! + + # First verify a confirmed_type relationship is not downgraded. + # because last_seen will be now and not more than one month ago. assert_difference 'Relationship.count' do result = Bot::Alegre.relate_project_media_to_similar_items(pm2) end r = Relationship.last assert_equal Relationship.confirmed_type, r.relationship_type - r.destroy - pm1.created_at = Time.now - 2.months - pm1.save! - tbi = Bot::Alegre.get_alegre_tbi(@team.id) - tbi.set_date_similarity_threshold_enabled = true - tbi.set_similarity_date_threshold("1") - tbi.save! + r.destroy! + + # Now stub last_seen so that confirmed_type is downgraded to suggest_type + # because it is more than tbi.similarity_date_threshold months old + ProjectMedia.any_instance.stubs(:last_seen).returns(Time.now - 2.months) assert_difference 'Relationship.count' do result = Bot::Alegre.relate_project_media_to_similar_items(pm2) end r = Relationship.last assert_equal Relationship.suggested_type, r.relationship_type Bot::Alegre.unstub(:request) - ProjectMedia.unstub(:recalculate_last_seen) + ProjectMedia.any_instance.unstub(:last_seen) end test "should index report data" do