From d7b13949e1daf6cb0ce146fbb4ae7573c88d13c0 Mon Sep 17 00:00:00 2001 From: Tanmay Deep Sharma Date: Mon, 13 Jul 2026 13:01:54 +0530 Subject: [PATCH] fix(auto-assignment): apply default 7 day age exclusion when inbox has no policy --- app/models/assignment_policy.rb | 2 ++ app/services/auto_assignment/assignment_service.rb | 10 ++++++++-- .../enterprise/auto_assignment/assignment_service.rb | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/models/assignment_policy.rb b/app/models/assignment_policy.rb index 69b619581..12c46aa97 100644 --- a/app/models/assignment_policy.rb +++ b/app/models/assignment_policy.rb @@ -22,6 +22,8 @@ # index_assignment_policies_on_enabled (enabled) # class AssignmentPolicy < ApplicationRecord + DEFAULT_EXCLUDE_OLDER_THAN_HOURS = 168 + belongs_to :account has_many :inbox_assignment_policies, dependent: :destroy has_many :inboxes, through: :inbox_assignment_policies diff --git a/app/services/auto_assignment/assignment_service.rb b/app/services/auto_assignment/assignment_service.rb index c4c494d57..b29f0ca02 100644 --- a/app/services/auto_assignment/assignment_service.rb +++ b/app/services/auto_assignment/assignment_service.rb @@ -35,9 +35,9 @@ class AutoAssignment::AssignmentService def unassigned_conversations(limit) scope = inbox.conversations.unassigned.open - # Skip stale backlog with no activity beyond the policy's age threshold (defaults to 7 days) + # Skip stale backlog with no activity beyond the age threshold policy = inbox.assignment_policy - scope = apply_age_exclusions(scope, policy&.exclude_older_than_hours) + scope = apply_age_exclusions(scope, age_exclusion_hours(policy)) # Apply conversation priority using assignment policy if available scope = if policy&.longest_waiting? @@ -49,6 +49,12 @@ class AutoAssignment::AssignmentService scope.limit(limit) end + def age_exclusion_hours(policy) + return policy.exclude_older_than_hours if policy + + AssignmentPolicy::DEFAULT_EXCLUDE_OLDER_THAN_HOURS + end + def apply_age_exclusions(scope, hours_threshold) return scope if hours_threshold.blank? diff --git a/enterprise/app/services/enterprise/auto_assignment/assignment_service.rb b/enterprise/app/services/enterprise/auto_assignment/assignment_service.rb index 36bbb6c90..207e93889 100644 --- a/enterprise/app/services/enterprise/auto_assignment/assignment_service.rb +++ b/enterprise/app/services/enterprise/auto_assignment/assignment_service.rb @@ -60,7 +60,7 @@ module Enterprise::AutoAssignment::AssignmentService scope = inbox.conversations.unassigned.open # First apply the assignment policy's age exclusion (defaults to 7 days) - scope = apply_age_exclusions(scope, policy&.exclude_older_than_hours) + scope = apply_age_exclusions(scope, age_exclusion_hours(policy)) # Then apply the capacity policy's exclusion rules (labels and age) scope = apply_exclusion_rules(scope)