Files
FitTrack2/FitnessSync/scratch/check_stormchaser_generic.py
2026-01-11 06:06:43 -08:00

74 lines
2.4 KiB
Python

import sys
import os
sys.path.append('/app/backend')
import logging
from src.services.postgresql_manager import PostgreSQLManager
from src.utils.config import config
from src.models.activity import Activity
from src.models.bike_setup import BikeSetup
from sqlalchemy import or_, and_
logging.basicConfig(level=logging.WARNING)
def analyze():
print("Connecting to database...")
db_manager = PostgreSQLManager(config.DATABASE_URL)
session = db_manager.SessionLocal()
try:
# 1. Find the Stormchaser setup(s)
stormchasers = session.query(BikeSetup).filter(
or_(
BikeSetup.name.ilike('%Stormchaser%'),
BikeSetup.frame.ilike('%Stormchaser%')
)
).order_by(BikeSetup.purchase_date.asc()).all()
reference_date = None
for bike in stormchasers:
if bike.purchase_date:
if reference_date is None or bike.purchase_date < reference_date:
reference_date = bike.purchase_date
if not reference_date:
print("No Stormchaser purchase date found.")
return
print(f"Using Reference Date: {reference_date}")
# 2. Find Generic Bike ID
generic = session.query(BikeSetup).filter(BikeSetup.name == 'GenericBike').first()
if not generic:
print("GenericBike setup not found.")
return
# 3. Query Activities
# Find Generic Rides in range
query = session.query(Activity).filter(
Activity.bike_setup_id == generic.id,
Activity.start_time >= reference_date
)
count = query.count()
print(f"\nResult: {count} rides tagged as Generic since {reference_date}")
# Also check smart confidence stats on recently matched Stormchaser rides
print("\n[Smart Match Stats Sample (Stormchaser)]")
sc_rides = session.query(Activity).filter(
Activity.bike_setup_id.in_([b.id for b in stormchasers]),
Activity.start_time >= reference_date
).order_by(Activity.start_time.desc()).limit(10).all()
for r in sc_rides:
print(f"ID: {r.id} | Conf: {r.bike_match_confidence} | Type: {r.activity_type}")
except Exception as e:
print(f"Error during analysis: {e}")
finally:
session.close()
if __name__ == "__main__":
analyze()