added segments
This commit is contained in:
54
FitnessSync/scratch/rematch_segments.py
Normal file
54
FitnessSync/scratch/rematch_segments.py
Normal file
@@ -0,0 +1,54 @@
|
||||
|
||||
import sys
|
||||
import os
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
|
||||
# Add backend to path
|
||||
sys.path.append(os.path.join(os.getcwd(), 'backend'))
|
||||
|
||||
from src.models.activity import Activity
|
||||
from src.models.segment_effort import SegmentEffort
|
||||
from src.models.segment import Segment
|
||||
from src.services.segment_matcher import SegmentMatcher
|
||||
from src.services.parsers import extract_activity_data # verify import works
|
||||
from src.utils.config import config
|
||||
|
||||
# Setup DB
|
||||
engine = create_engine(config.DATABASE_URL)
|
||||
Session = sessionmaker(bind=engine)
|
||||
db = Session()
|
||||
|
||||
def rematch_activity(garmin_activity_id):
|
||||
print(f"\n--- Rematching Segments for {garmin_activity_id} ---")
|
||||
|
||||
activity = db.query(Activity).filter(Activity.garmin_activity_id == garmin_activity_id).first()
|
||||
if not activity:
|
||||
print(f"Activity {garmin_activity_id} not found.")
|
||||
return
|
||||
|
||||
# Delete existing efforts
|
||||
deleted = db.query(SegmentEffort).filter(SegmentEffort.activity_id == activity.id).delete()
|
||||
db.commit()
|
||||
print(f"Deleted {deleted} existing efforts.")
|
||||
|
||||
# Extract points (and full data implicitly used in matcher)
|
||||
# Matcher expects list of points for geometric match
|
||||
from src.services.parsers import extract_points_from_file
|
||||
points = extract_points_from_file(activity.file_content, activity.file_type)
|
||||
|
||||
if not points:
|
||||
print("No points found.")
|
||||
return
|
||||
|
||||
print(f"Loaded {len(points)} points. triggering match...")
|
||||
|
||||
matcher = SegmentMatcher(db)
|
||||
efforts = matcher.match_activity(activity, points)
|
||||
|
||||
print(f"Matched {len(efforts)} segments.")
|
||||
for eff in efforts:
|
||||
print(f" - Segment: {eff.segment_id} | Time: {eff.elapsed_time}s | HR: {eff.avg_hr} | Power: {eff.avg_power}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
rematch_activity("21249259141")
|
||||
Reference in New Issue
Block a user