74 lines
2.4 KiB
Python
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()
|