feat: Add force legacy auto-resolve flag (#13804)
# Pull Request Template ## Description Add account setting and store_accessor for `captain_force_legacy_auto_resolve`. Enterprise job now skips LLM evaluation when this flag is true and falls back to legacy time-based resolution. Add spec to cover the fallback. ## Type of change We recently rolled out Captain deciding if a conversation is resolved or not. While it is an improvement for majority of customers, some still prefer the old way of auto-resolving based on inactivity. This PR adds a check. ## How Has This Been Tested? Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration. legacy_auto_resolve = true <img width="1282" height="848" alt="CleanShot 2026-03-13 at 19 55 55@2x" src="https://github.com/user-attachments/assets/dfdcc5d5-6d21-462b-87a6-a5e1b1290a8b" /> legacy_auto_resolve = false <img width="1268" height="864" alt="CleanShot 2026-03-13 at 20 00 50@2x" src="https://github.com/user-attachments/assets/f4719ec6-922a-4c3b-bc45-7b29eaced565" /> ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [x] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [x] Any dependent changes have been merged and published in downstream modules
This commit is contained in:
@@ -198,6 +198,44 @@ RSpec.describe Account do
|
||||
expect(account.settings['auto_resolve_message']).to eq(message)
|
||||
end
|
||||
|
||||
it 'defaults captain_auto_resolve_mode to legacy when captain_tasks is disabled' do
|
||||
allow(account).to receive(:feature_enabled?).with('captain_tasks').and_return(false)
|
||||
|
||||
expect(account.captain_auto_resolve_mode).to eq('legacy')
|
||||
expect(account).to be_captain_auto_resolve_legacy
|
||||
end
|
||||
|
||||
it 'defaults captain_auto_resolve_mode to evaluated when captain_tasks is enabled' do
|
||||
allow(account).to receive(:feature_enabled?).with('captain_tasks').and_return(true)
|
||||
|
||||
expect(account.captain_auto_resolve_mode).to eq('evaluated')
|
||||
expect(account).to be_captain_auto_resolve_evaluated
|
||||
end
|
||||
|
||||
it 'correctly gets and sets captain_auto_resolve_mode' do
|
||||
account.captain_auto_resolve_mode = 'legacy'
|
||||
|
||||
expect(account.captain_auto_resolve_mode).to eq('legacy')
|
||||
expect(account.settings['captain_auto_resolve_mode']).to eq('legacy')
|
||||
expect(account).to be_captain_auto_resolve_legacy
|
||||
end
|
||||
|
||||
it 'allows clearing captain_auto_resolve_mode to fall back to feature defaults' do
|
||||
allow(account).to receive(:feature_enabled?).with('captain_tasks').and_return(false)
|
||||
account.captain_auto_resolve_mode = nil
|
||||
|
||||
expect(account).to be_valid
|
||||
expect(account.captain_auto_resolve_mode).to eq('legacy')
|
||||
expect(account.settings['captain_auto_resolve_mode']).to be_nil
|
||||
end
|
||||
|
||||
it 'falls back to disabled mode from legacy settings key' do
|
||||
account.settings = { 'captain_disable_auto_resolve' => true }
|
||||
|
||||
expect(account.captain_auto_resolve_mode).to eq('disabled')
|
||||
expect(account).to be_captain_auto_resolve_disabled
|
||||
end
|
||||
|
||||
it 'handles nil values correctly' do
|
||||
account.auto_resolve_after = nil
|
||||
account.auto_resolve_message = nil
|
||||
|
||||
Reference in New Issue
Block a user