Skip to content

Commit 23576c8

Browse files
committed
Fix stale Garmin profile bleed into incline matching
1 parent 2ce7790 commit 23576c8

2 files changed

Lines changed: 60 additions & 1 deletion

File tree

chronicle/activity_pipeline.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1190,7 +1190,7 @@ def _is_incline_treadmill_named_activity(
11901190
) -> bool:
11911191
texts = [_text_blob(activity)]
11921192
garmin_type_key = ""
1193-
if isinstance(training, dict):
1193+
if isinstance(training, dict) and bool(training.get("_garmin_activity_aligned")):
11941194
garmin_last = training.get("garmin_last_activity")
11951195
if isinstance(garmin_last, dict):
11961196
texts.append(str(garmin_last.get("activity_name") or "").strip().lower())

tests/test_activity_pipeline.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,65 @@ def test_incline_treadmill_profile_skips_when_aligned_garmin_strength_context(se
397397
reasons = _profile_match_reasons("incline_treadmill", activity, settings, training=training)
398398
self.assertEqual(reasons, [])
399399

400+
def test_incline_treadmill_profile_ignores_unaligned_garmin_incline_context(self) -> None:
401+
settings = SimpleNamespace(
402+
profile_trail_gain_per_mile_ft=220.0,
403+
profile_long_run_miles=10.0,
404+
home_latitude=None,
405+
home_longitude=None,
406+
home_radius_miles=10.0,
407+
)
408+
activity = {
409+
"sport_type": "Run",
410+
"type": "Run",
411+
"trainer": True,
412+
"start_latlng": [],
413+
"distance": 4200.0,
414+
"moving_time": 2100,
415+
"external_id": "garmin_ping_999",
416+
"device_name": "Garmin Forerunner 955",
417+
"name": "Morning Session",
418+
}
419+
training = {
420+
"_garmin_activity_aligned": False,
421+
"garmin_last_activity": {
422+
"activity_name": "Treadmill Incline",
423+
"activity_type": "incline_treadmill",
424+
},
425+
}
426+
reasons = _profile_match_reasons("incline_treadmill", activity, settings, training=training)
427+
self.assertEqual(reasons, [])
428+
429+
def test_incline_treadmill_profile_uses_aligned_garmin_incline_context(self) -> None:
430+
settings = SimpleNamespace(
431+
profile_trail_gain_per_mile_ft=220.0,
432+
profile_long_run_miles=10.0,
433+
home_latitude=None,
434+
home_longitude=None,
435+
home_radius_miles=10.0,
436+
)
437+
activity = {
438+
"sport_type": "Run",
439+
"type": "Run",
440+
"trainer": True,
441+
"start_latlng": [],
442+
"distance": 4200.0,
443+
"moving_time": 2100,
444+
"external_id": "garmin_ping_1000",
445+
"device_name": "Garmin Forerunner 955",
446+
"name": "Morning Session",
447+
}
448+
training = {
449+
"_garmin_activity_aligned": True,
450+
"garmin_last_activity": {
451+
"activity_name": "Treadmill Incline",
452+
"activity_type": "incline_treadmill",
453+
},
454+
}
455+
reasons = _profile_match_reasons("incline_treadmill", activity, settings, training=training)
456+
self.assertTrue(reasons)
457+
self.assertIn("incline treadmill activity name", reasons)
458+
400459
def test_incline_treadmill_profile_update_payload_sets_walk_title_and_trainer(self) -> None:
401460
payload = _profile_activity_update_payload(
402461
"incline_treadmill",

0 commit comments

Comments
 (0)