From a0c795d0e441e505a1ff576d03bf339b56a48574 Mon Sep 17 00:00:00 2001 From: Jonas Linter <{email_address}> Date: Wed, 3 Dec 2025 19:02:34 +0100 Subject: [PATCH] Updated classification scheme --- src/alpine_bits_python/conversion_service.py | 21 ++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/alpine_bits_python/conversion_service.py b/src/alpine_bits_python/conversion_service.py index c48f0d3..5aa6d50 100644 --- a/src/alpine_bits_python/conversion_service.py +++ b/src/alpine_bits_python/conversion_service.py @@ -10,7 +10,7 @@ from typing import Any from sqlalchemy import or_, select from sqlalchemy.dialects.postgresql import insert as pg_insert from sqlalchemy.ext.asyncio import AsyncSession -from sqlalchemy.orm import selectinload +from sqlalchemy.orm import selectinload, with_loader_criteria from .db import ( Conversion, @@ -1568,6 +1568,18 @@ class ConversionService: Conversion.conversion_rooms ) ) + .options( + with_loader_criteria( + Conversion, + lambda cls: cls.reservation_type == "reservation", + include_aliases=True, + ), + with_loader_criteria( + ConversionRoom, + lambda cls: ConversionRoom.total_revenue.isnot(None), + include_aliases=True, + ), + ) ) if cutoff is not None: query = query.where(ConversionGuest.last_seen >= cutoff) @@ -1583,9 +1595,10 @@ class ConversionService: stats["processed"] += 1 is_regular, is_awareness = self._evaluate_guest_regularity(guest) - if guest.is_regular == is_regular and ( - guest.is_awareness_guest or False - ) == is_awareness: + current_regular = bool(guest.is_regular) + current_awareness = bool(guest.is_awareness_guest) + + if current_regular == is_regular and current_awareness == is_awareness: if is_regular: stats["regular"] += 1 if is_awareness: