From 276e2c5f1624bc6454543c9dde5608573c410ce4 Mon Sep 17 00:00:00 2001 From: aakashb95 Date: Fri, 1 May 2026 02:37:35 +0530 Subject: [PATCH] refactor(captain): clarify v1 handoff checks --- .../conversation/response_builder_job.rb | 6 +++++- .../conversation/v1_action_classifier.rb | 19 ++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/enterprise/app/jobs/captain/conversation/response_builder_job.rb b/enterprise/app/jobs/captain/conversation/response_builder_job.rb index 36d80fa2d..628987a50 100644 --- a/enterprise/app/jobs/captain/conversation/response_builder_job.rb +++ b/enterprise/app/jobs/captain/conversation/response_builder_job.rb @@ -106,7 +106,11 @@ class Captain::Conversation::ResponseBuilderJob < ApplicationJob end def v1_handoff_requested? - @response['action'] == 'handoff' || legacy_v1_handoff_token? + legacy_v1_handoff_token? || classifier_v1_handoff_requested? + end + + def classifier_v1_handoff_requested? + @response['action'] == 'handoff' end def legacy_v1_handoff_token? diff --git a/enterprise/app/jobs/captain/conversation/v1_action_classifier.rb b/enterprise/app/jobs/captain/conversation/v1_action_classifier.rb index 081bc8f30..8b8168a94 100644 --- a/enterprise/app/jobs/captain/conversation/v1_action_classifier.rb +++ b/enterprise/app/jobs/captain/conversation/v1_action_classifier.rb @@ -25,13 +25,7 @@ module Captain::Conversation::V1ActionClassifier def apply_v1_action_classification(classification) action = classification['action'] - unless Captain::Llm::AssistantActionClassifierService::VALID_ACTIONS.include?(action) - Rails.logger.warn( - "[CAPTAIN][ResponseBuilderJob] V1 action classifier returned invalid action for account=#{account.id} " \ - "conversation=#{@conversation.display_id}: #{classification['error'] || classification['raw_response']}" - ) - return - end + return log_invalid_v1_action_classification(classification) unless valid_v1_action_classification?(action) @response.merge!( 'action' => action, @@ -51,4 +45,15 @@ module Captain::Conversation::V1ActionClassifier "prompt_version=#{classification['prompt_version']}" ) end + + def valid_v1_action_classification?(action) + Captain::Llm::AssistantActionClassifierService::VALID_ACTIONS.include?(action) + end + + def log_invalid_v1_action_classification(classification) + Rails.logger.warn( + '[CAPTAIN][ResponseBuilderJob] V1 action classifier returned invalid action; falling back to assistant response ' \ + "for account=#{account.id} conversation=#{@conversation.display_id}: #{classification['error'] || classification['raw_response']}" + ) + end end