## Description Fixes a bug under Assignment V2 where a single conversation could be reassigned dozens of times in a row by the system, producing long stacks of "Assigned to X by Automation System via <policy>" activity messages alternating between agents. After this change each unassigned conversation is assigned exactly once, even on busy inboxes. ## Fixes # (issue) ## Type of change - [ ] Bug fix (non-breaking change which fixes an issue) ## How Has This Been Tested? ## How to reproduce 1. Enable `assignment_v2` on an account with at least 2 online agents in an inbox. 2. Generate sustained resolve/snooze activity in the inbox (each one enqueues `AutoAssignment::AssignmentJob` for the whole inbox). 3. Watch any one unassigned conversation while the jobs drain — pre-fix it picks up multiple back-to-back "Assigned to …" activity rows alternating between agents. ## Checklist: - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules
20 lines
537 B
Ruby
20 lines
537 B
Ruby
class AutoAssignment::PeriodicAssignmentJob < ApplicationJob
|
|
queue_as :scheduled_jobs
|
|
|
|
def perform
|
|
Account.find_in_batches do |accounts|
|
|
accounts.each do |account|
|
|
next unless account.feature_enabled?('assignment_v2')
|
|
|
|
account.inboxes.joins(:assignment_policy).find_in_batches do |inboxes|
|
|
inboxes.each do |inbox|
|
|
next unless inbox.auto_assignment_v2_enabled?
|
|
|
|
AutoAssignment::AssignmentJob.enqueue_for_inbox(inbox.id)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|