diff --git a/app/database/migrations/026_normalize_outcomes_to_uppercase.sql b/app/database/migrations/026_normalize_outcomes_to_uppercase.sql new file mode 100644 index 000000000..ac2ed6838 --- /dev/null +++ b/app/database/migrations/026_normalize_outcomes_to_uppercase.sql @@ -0,0 +1,13 @@ +-- Migration 026: Normalize lead_call_tracker.outcome values to UPPERCASE. +-- All Clairvoyance code uses UPPERCASE outcome literals; this backfills any +-- historical rows where a bypass path may have written lowercase. +-- Going forward, the DB query layer enforces UPPER() at INSERT/UPDATE time. + +BEGIN; + +UPDATE lead_call_tracker +SET outcome = UPPER(outcome) +WHERE outcome IS NOT NULL + AND outcome <> UPPER(outcome); + +COMMIT; diff --git a/app/database/queries/breeze_buddy/lead_call_tracker.py b/app/database/queries/breeze_buddy/lead_call_tracker.py index 91e4a6978..a3b5c7b39 100644 --- a/app/database/queries/breeze_buddy/lead_call_tracker.py +++ b/app/database/queries/breeze_buddy/lead_call_tracker.py @@ -97,7 +97,7 @@ def insert_lead_call_tracker_query( call_id, outbound_number_id, call_direction.value, - outcome, + outcome.upper() if outcome else None, datetime.now(), datetime.now(), ] @@ -330,7 +330,7 @@ def update_lead_call_completion_details_query( set_clauses.append(f'"status" = ${len(values)}') if outcome is not None: - values.append(outcome) + values.append(outcome.upper()) set_clauses.append(f'"outcome" = ${len(values)}') if meta_data is not None: