Updated classification scheme

This commit is contained in:
Jonas Linter
2025-12-03 19:02:34 +01:00
parent a2ac51e5db
commit a0c795d0e4

View File

@@ -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: