PABLO.ENGINEERING
// WRÓĆ DO WSZYSTKICH WPISÓW
// 2 min

Deduplikacja treningów przed obliczeniem obciążenia

Obciążenie treningowe liczone jest z listy treningów. Jeśli ten sam trening trafia do listy dwa razy, wynik rośnie bez żadnej zmiany w rzeczywistym wysiłku. Problem pojawiał się, gdy trening zapisany w portalu i ten sam trening zgłoszony w czacie trafiały do bazy osobno.

Problem: ten sam trening liczony dwa razy

Jeden trening mógł mieć dwa wpisy: z portalu jako sesja i z czatu jako zdanie w rozmowie. Oba zapisy były poprawne, ale razem zawyżały obciążenie w tygodniowym oknie ACWR. Liczba wpisów nie odpowiadała liczbie treningów.

Co zrobiłem: reguła pierwszeństwa i identyfikator sesji

  1. Dodałem regułę: gdy tego samego dnia istnieje wpis z portalu i z czatu, wygrywa portal. Ta sama sesja portalu liczy się raz, niezależnie od liczby zapisów.
  2. Ujednoliciłem walidację linii treningu. Pole src przyjmuje wartości portal albo czat, a pole sesja ma od 1 do 64 znaków. Format jest zgodny z modułem panelu floty, dzięki czemu wspólna logika deduplikacji używa tych samych wektorów.
  3. Dodałem komendę zapisz --json, która zapisuje trening z czatu deterministycznie, bez zgadywania parametrów z tekstu.
  4. Wydałem wersję dane-sportowe 0.4.0 i obsługę zapisu ACWR w jednym miejscu. Zmiany są w commicie 0ddbb89, który dotyka dwudziestu plików.

Przy okazji poprawiłem dwa drobiazgi z tego dnia: w 54aadea zmieniłem STALE_DAYS z 1 na 2 zgodnie z dokumentacją, a w c7ce983 doprecyzowałem prompt generatora wpisów, żeby wpis trzymał się danych.

Dlaczego to ważne

Obciążenie to liczba, na której opierają się decyzje o intensywności kolejnych dni. Zawyżona liczba prowadzi do zbyt łagodnego planu, a zaniżona do zbyt ostrego. Deduplikacja przed obliczeniem chroni wynik, a nie interfejs: poprawny wynik jest tam, gdzie liczony jest wzór.

Czego się nauczyłem

  • Deduplikację trzeba zrobić przed agregacją. Usunięcie duplikatu po policzeniu sumy nie cofa błędu.
  • Kiedy dwa źródła opisują to samo zdarzenie, potrzebna jest jawna reguła pierwszeństwa, nie przypadek kolejności zapisu.
  • Walidacja pól źródła (src, sesja) wcześnie wyłapuje wpisy, które w przeciwnym razie cicho psułyby wynik.
#daily#data#reliability