66 lines
2.0 KiB
Ruby
66 lines
2.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# rubocop:disable Metrics/BlockLength
|
|
namespace :assignment_v2 do
|
|
desc 'Enable Assignment V2 for an account with default policy'
|
|
task :enable, [:account_id] => :environment do |_task, args|
|
|
account = Account.find(args[:account_id])
|
|
|
|
# Create default assignment policy if not exists
|
|
policy = account.assignment_policies.find_or_create_by!(name: 'Default Policy') do |p|
|
|
p.description = 'Default round-robin assignment policy'
|
|
p.assignment_order = 'round_robin'
|
|
p.conversation_priority = 'earliest_created'
|
|
p.enabled = true
|
|
end
|
|
|
|
puts "Assignment V2 enabled for account #{account.name} with policy #{policy.name}"
|
|
end
|
|
|
|
desc 'Disable Assignment V2 for an account'
|
|
task :disable, [:account_id] => :environment do |_task, args|
|
|
account = Account.find(args[:account_id])
|
|
|
|
# Disable all assignment policies
|
|
account.assignment_policies.find_each do |policy|
|
|
policy.update!(enabled: false)
|
|
end
|
|
|
|
puts "Assignment V2 disabled for account #{account.name}"
|
|
end
|
|
|
|
desc 'Run assignment for all enabled inboxes'
|
|
task run_all: :environment do
|
|
count = 0
|
|
|
|
Inbox.joins(:assignment_policy)
|
|
.where(assignment_policies: { enabled: true })
|
|
.find_each do |inbox|
|
|
AssignmentV2::AssignmentJob.perform_later(inbox_id: inbox.id)
|
|
count += 1
|
|
end
|
|
|
|
puts "Queued assignment jobs for #{count} inboxes"
|
|
end
|
|
|
|
desc 'Show Assignment V2 status'
|
|
task status: :environment do
|
|
puts 'Assignment V2 Status'
|
|
puts '==================='
|
|
|
|
total_policies = AssignmentPolicy.count
|
|
enabled_policies = AssignmentPolicy.enabled.count
|
|
|
|
puts "Total Assignment Policies: #{total_policies}"
|
|
puts "Enabled Policies: #{enabled_policies}"
|
|
puts
|
|
|
|
inboxes_with_v2 = Inbox.joins(:assignment_policy).count
|
|
total_inboxes = Inbox.count
|
|
|
|
puts "Total Inboxes: #{total_inboxes}"
|
|
puts "Inboxes with Assignment V2: #{inboxes_with_v2}"
|
|
end
|
|
end
|
|
# rubocop:enable Metrics/BlockLength
|