diff --git a/app/jobs/get_usps_proofing_results_job.rb b/app/jobs/get_usps_proofing_results_job.rb index 4ecc5b994d6..9f585b6f0de 100644 --- a/app/jobs/get_usps_proofing_results_job.rb +++ b/app/jobs/get_usps_proofing_results_job.rb @@ -70,6 +70,7 @@ def handle_bad_request_error(err, enrollment) analytics(user: enrollment.user).idv_in_person_usps_proofing_results_job_exception( reason: 'Request exception', enrollment_id: enrollment.id, + enrollment_code: enrollment.enrollment_code, exception_class: err.class.to_s, exception_message: err.message, ) @@ -80,6 +81,7 @@ def handle_standard_error(err, enrollment) analytics(user: enrollment.user).idv_in_person_usps_proofing_results_job_exception( reason: 'Request exception', enrollment_id: enrollment.id, + enrollment_code: enrollment.enrollment_code, exception_class: err.class.to_s, exception_message: err.message, ) @@ -89,6 +91,7 @@ def handle_response_is_not_a_hash(enrollment) analytics(user: enrollment.user).idv_in_person_usps_proofing_results_job_exception( reason: 'Bad response structure', enrollment_id: enrollment.id, + enrollment_code: enrollment.enrollment_code, ) end @@ -96,6 +99,7 @@ def handle_unsupported_status(enrollment, status) analytics(user: enrollment.user).idv_in_person_usps_proofing_results_job_enrollment_failure( reason: 'Unsupported status', enrollment_id: enrollment.id, + enrollment_code: enrollment.enrollment_code, status: status, ) end @@ -104,6 +108,7 @@ def handle_unsupported_id_type(enrollment, primary_id_type) analytics(user: enrollment.user).idv_in_person_usps_proofing_results_job_enrollment_failure( reason: 'Unsupported ID type', enrollment_id: enrollment.id, + enrollment_code: enrollment.enrollment_code, primary_id_type: primary_id_type, ) end @@ -112,6 +117,7 @@ def handle_failed_status(enrollment, response) analytics(user: enrollment.user).idv_in_person_usps_proofing_results_job_enrollment_failure( reason: 'Failed status', enrollment_id: enrollment.id, + enrollment_code: enrollment.enrollment_code, failure_reason: response['failureReason'], fraud_suspected: response['fraudSuspected'], primary_id_type: response['primaryIdType'], @@ -122,12 +128,21 @@ def handle_failed_status(enrollment, response) ) end + def handle_successful_status_update(enrollment) + analytics(user: enrollment.user).idv_in_person_usps_proofing_results_job_enrollment_success( + reason: 'Successful status update', + enrollment_id: enrollment.id, + enrollment_code: enrollment.enrollment_code, + ) + end + def update_enrollment_status(enrollment, response) case response['status'] when IPP_STATUS_PASSED if SUPPORTED_ID_TYPES.include?(response['primaryIdType']) enrollment.profile.activate enrollment.update(status: :passed) + handle_successful_status_update(enrollment) else # Unsupported ID type enrollment.update(status: :failed) diff --git a/app/services/analytics_events.rb b/app/services/analytics_events.rb index 36d87e45af6..51bbd6a3caa 100644 --- a/app/services/analytics_events.rb +++ b/app/services/analytics_events.rb @@ -2350,5 +2350,17 @@ def idv_in_person_usps_proofing_results_job_enrollment_failure(reason:, enrollme **extra, ) end + + # Tracks individual enrollments that succeed during GetUspsProofingResultsJob + # @param [String] reason why did this enrollment pass? + # @param [String] enrollment_id + def idv_in_person_usps_proofing_results_job_enrollment_success(reason:, enrollment_id:, **extra) + track_event( + 'GetUspsProofingResultsJob: Enrollment passed proofing', + reason: reason, + enrollment_id: enrollment_id, + **extra, + ) + end end # rubocop:enable Metrics/ModuleLength diff --git a/spec/jobs/get_usps_proofing_results_job_spec.rb b/spec/jobs/get_usps_proofing_results_job_spec.rb index 39b4155e1ac..9ff78d25b28 100644 --- a/spec/jobs/get_usps_proofing_results_job_spec.rb +++ b/spec/jobs/get_usps_proofing_results_job_spec.rb @@ -110,6 +110,7 @@ 'GetUspsProofingResultsJob: Enrollment failed proofing', reason: 'Failed status', enrollment_id: pending_enrollment.id, + enrollment_code: pending_enrollment.enrollment_code, failure_reason: 'Clerk indicates that ID name or address does not match source data.', fraud_suspected: false, primary_id_type: 'Uniformed Services identification card', @@ -137,6 +138,13 @@ expected_range.cover?(timestamp) end expect(enrollment.profile.active).to be(true) + + expect(job_analytics).to have_logged_event( + 'GetUspsProofingResultsJob: Enrollment passed proofing', + reason: 'Successful status update', + enrollment_id: enrollment.id, + enrollment_code: enrollment.enrollment_code, + ) end end @@ -150,6 +158,7 @@ 'GetUspsProofingResultsJob: Exception raised', reason: 'Bad response structure', enrollment_id: pending_enrollment.id, + enrollment_code: pending_enrollment.enrollment_code, ) end @@ -170,6 +179,7 @@ 'GetUspsProofingResultsJob: Enrollment failed proofing', reason: 'Unsupported status', enrollment_id: pending_enrollment.id, + enrollment_code: pending_enrollment.enrollment_code, status: 'Not supported', ) end @@ -191,6 +201,7 @@ 'GetUspsProofingResultsJob: Exception raised', reason: 'Request exception', enrollment_id: pending_enrollment.id, + enrollment_code: pending_enrollment.enrollment_code, ) end @@ -211,6 +222,7 @@ 'GetUspsProofingResultsJob: Exception raised', reason: 'Request exception', enrollment_id: pending_enrollment.id, + enrollment_code: pending_enrollment.enrollment_code, ) end @@ -255,6 +267,7 @@ 'GetUspsProofingResultsJob: Exception raised', reason: 'Request exception', enrollment_id: pending_enrollment.id, + enrollment_code: pending_enrollment.enrollment_code, ) end @@ -275,6 +288,7 @@ 'GetUspsProofingResultsJob: Enrollment failed proofing', reason: 'Unsupported ID type', enrollment_id: pending_enrollment.id, + enrollment_code: pending_enrollment.enrollment_code, primary_id_type: 'Not supported', ) end