From e251a8e829fd7e5817b7ef5bd4a35570a3a15286 Mon Sep 17 00:00:00 2001 From: David Whittaker Date: Mon, 19 May 2025 19:22:35 -0700 Subject: [PATCH] fix(ai): use subquery instead of from_self --- src/dispatch/ai/service.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/dispatch/ai/service.py b/src/dispatch/ai/service.py index b0ff53317c6e..4832f5b82833 100644 --- a/src/dispatch/ai/service.py +++ b/src/dispatch/ai/service.py @@ -2,7 +2,7 @@ import logging import tiktoken -from sqlalchemy.orm import Session +from sqlalchemy.orm import aliased, Session from dispatch.case.enums import CaseResolutionReason from dispatch.case.models import Case @@ -140,16 +140,20 @@ def generate_case_signal_historical_context(case: Case, db_session: Session) -> # we fetch related cases related_cases = [] for resolution_reason in CaseResolutionReason: - related_cases.extend( - signal_service.get_cases_for_signal_by_resolution_reason( - db_session=db_session, - signal_id=first_instance_signal.id, - resolution_reason=resolution_reason, - ) - .from_self() # NOTE: function deprecated in SQLAlchemy 1.4 and removed in 2.0 - .filter(Case.id != case.id) + # Get the query for cases for a specific resolution reason + query = signal_service.get_cases_for_signal_by_resolution_reason( + db_session=db_session, + signal_id=first_instance_signal.id, + resolution_reason=resolution_reason, ) + # Create an alias for the subquery + subquery = query.subquery() + case_alias = aliased(Case, subquery) + + # Filter the cases and extend the related_cases list + related_cases.extend(db_session.query(case_alias).filter(case_alias.id != case.id).all()) + # we prepare historical context historical_context = [] for related_case in related_cases: