## Description Auto-assignment was skipping the 7-day staleness check entirely for inboxes that don't have an assignment policy attached. Those inboxes would pull unassigned conversations of any age off the backlog and hand them to agents — including conversations untouched for months — while the activity log still credited "Default Policy" for the assignment. This makes the default behaviour match what that label implies: with no policy configured, conversations with no activity in the last 7 days are now excluded, the same window a freshly created policy uses. ## Type of change - [ ] Bug fix (non-breaking change which fixes an issue) ## 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
42 lines
1.8 KiB
Ruby
42 lines
1.8 KiB
Ruby
# == Schema Information
|
|
#
|
|
# Table name: assignment_policies
|
|
#
|
|
# id :bigint not null, primary key
|
|
# assignment_order :integer default("round_robin"), not null
|
|
# conversation_priority :integer default("earliest_created"), not null
|
|
# description :text
|
|
# enabled :boolean default(TRUE), not null
|
|
# exclude_older_than_hours :integer default(168)
|
|
# fair_distribution_limit :integer default(100), not null
|
|
# fair_distribution_window :integer default(3600), not null
|
|
# name :string(255) not null
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# account_id :bigint not null
|
|
#
|
|
# Indexes
|
|
#
|
|
# index_assignment_policies_on_account_id (account_id)
|
|
# index_assignment_policies_on_account_id_and_name (account_id,name) UNIQUE
|
|
# 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
|
|
|
|
validates :name, presence: true, uniqueness: { scope: :account_id }
|
|
validates :fair_distribution_limit, numericality: { greater_than: 0 }
|
|
validates :fair_distribution_window, numericality: { greater_than: 0 }
|
|
validates :exclude_older_than_hours, numericality: { only_integer: true, greater_than: 0 }, allow_nil: true
|
|
|
|
enum conversation_priority: { earliest_created: 0, longest_waiting: 1 }
|
|
|
|
enum assignment_order: { round_robin: 0 } unless ChatwootApp.enterprise?
|
|
end
|
|
|
|
AssignmentPolicy.include_mod_with('Concerns::AssignmentPolicy')
|