Streszczenie. Hyperion Performance oblicza Readiness Index (RI) — biologiczny wskaźnik gotowości 0–100 — na podstawie 17 parametrów z czterech dziedzin: neurologii (Tapping + PVT), biochemii (laktat), biometryki (HRV, RHR, sen, temp.) i psychofizyki (subiektywny stan). Surowe pomiary są normalizowane do wyników ryzyka N∈[0,1] przy użyciu liniowych progów domyślnie opartych na normach populacyjnych z literatury. Niniejszy moduł — _profileNorms(profile) — personalizuje te progi na podstawie dziewięciu fenotypowych zmiennych użytkownika. Bez wypełnionego profilu system działa na wartościach domyślnych (wstecznie kompatybilnych). Z profilem, każdy parametr jest oceniany względem norm właściwych dla danego osobnika — nie populacji. Dokument specyfikuje pełną logikę kalibracji, formułę kombinacji z wagami, sześć deterministycznych hard overrides oraz konkretny przykład obliczeniowy end-to-end.
Większość istniejących systemów gotowości sportowej (Whoop, Garmin Body Battery, Oura) opiera się wyłącznie na pasywnym monitorowaniu: HRV, tętno, temperatura, sen. Takie sygnały mierzą stan układu autonomicznego (ANS) — czyli efekt skumulowany ostatnich kilkunastu godzin. Nie mierzą aktualnego stanu układu nerwowego w danej chwili.
Hyperion dodaje do tego aktywne testy CNS wykonywane w czasie rzeczywistym — Tapping i PVT. To kluczowa różnica architektoniczna:
| Typ pomiaru | Co mierzy | Okno czasowe | Przykład sygnału nie do wykrycia bez aktywnego testu |
|---|---|---|---|
| Pasywne wearables (HRV, RHR, sen) | Stan autonomiczny — wypadkowa regeneracji i obciążenia z ostatnich godzin | Skumulowany ~12–24h | Sportowiec przewlekle przetrenowany może mieć znormalizowane HRV wskutek dominacji przywspółczulnej — i nadal mieć 40 ms opóźnienie RT wskazujące na zmęczenie neuronalne |
| Aktywny test motoryczny (Tapping Hz + SD) | Prędkość i spójność pętli sensomotorycznej: bodziec → decyzja → wykonanie ruchowe | Chwilowy | Obniżone Hz przy prawidłowym HRV = zmęczenie dopaminergiczne i kortyko-rdzeniowe niewidoczne w danych ANS |
| Aktywny test alertności (PVT — czas reakcji + lapsy) | Czujność podtrzymana i dług snu (szlak przedczołowy / locus coeruleus) | Chwilowy | Sportowiec po deprywacji snu może mieć normalny Tapping Hz i jednocześnie wysoki wskaźnik lapsów PVT — dwa niezależne wymiary CNS |
| Biochemia (laktat) | Metaboliczny stan ogólnoustrojowy — obciążenie kwasowe i klirens | Skumulowany 1–6h | Szybki CNS + wysoki laktat = sportowiec czuje się dobrze, ale dług metaboliczny jest wysoki — niebezpieczna kombinacja do intensywnego wysiłku |
Tapping palcem z maksymalną częstotliwością wymaga aktywacji pętli sensomotorycznej przez korę motoryczną → jądra podstawne → pętlę dopaminergiczną → drogę kortyko-rdzeniową. Test jest czuły na:
Kluczowa zaleta vs inne testy CNS: jest szybki (10 sekund), nie wymaga sprzętu, nie wymaga kalibracji per-sesji, i generuje dwa niezależne sygnały (Hz i SD). Test flick finger (prędkość kciuka) lub reaction board (wielokrotne przesunięcia) są mniej precyzyjne w warunkach mobilnych i wolniejsze w wykonaniu.
Tapping i PVT mierzą różne wymiary neuryczne:
Sportowiec po jednej nocy ze skróconym snem może mieć normalny Tapping Hz i jednocześnie 4 lapsy PVT (czas reakcji > 500 ms). Oba sygnały razem wykrywają stany, których żaden z nich samodzielnie nie widzi.
AI generatywne jest właściwe do rekomendacji protokołów (kontekst + kreatywność + personalizacja). Jest nieodpowiednie do samego obliczania wyniku gotowości, ponieważ: (1) nie jest audytowalne — nie da się prześledzić dlaczego AI przypisało daną wartość; (2) hallucynuje wartości w niestandardowych kombinacjach wejść; (3) nie jest reprodukowalne — te same dane wejściowe dają różne wyniki przy kolejnych wywołaniach. Deterministyczny silnik matematyczny z hardcoded logiką i formułami z literatury jest warunkiem koniecznym wiarygodności klinicznej.
_profileNorms()) i formułę kombinacji. Architektura AI, warstwa danych wearables, schemat bazy danych sesji oraz stos technologiczny frontendowy są opisane w osobnych dokumentach.Wyobraź sobie trzy osoby z HRV (RMSSD) = 48 ms zmierzone tego samego ranka:
| Osoba | Profil | Interpretacja fizjologiczna | N bez profilu | N z profilem |
|---|---|---|---|---|
| A | Kobieta, 24 lata, elitarna biegaczka, 10+ h/tydz. | Wyraźnie poniżej normy elitarnej (~93 ms) — sygnał przeciążenia | 0.60 | 0.87 |
| B | Mężczyzna, 42 lata, amatorski kolarz, 3 h/tydz. | Nieco poniżej normy wiekowej — łagodny sygnał | 0.60 | 0.50 |
| C | Kobieta, 62 lata, brak aktywności fizycznej | Prawidłowe dla wieku — brak sygnału ryzyka | 0.60 | 0.18 |
Identyczny pomiar ma trzy różne znaczenia fizjologiczne. Jednolity próg 90 ms (domyślny) zawyża ryzyko u osoby C i zaniża je u osoby A. Personalizacja nie jest udogodnieniem — jest warunkiem koniecznym poprawnej interpretacji danych.
Moduł zwraca obiekt _pn z kalibrowanymi progami. Progi te są następnie używane do normalizacji surowych pomiarów w calculatePIL().
| Parametr | Kolumna DB | Wartości | Kalibruje |
|---|---|---|---|
| Wiek | age | Liczba całkowita ≥ 10 | hrv_center, hrv_range, pvt_rt_low, pvt_rt_range, pvt_lps_range |
| Płeć biologiczna | sex | male / female / other | hrv_center, lac_low, lac_range |
| Staż treningowy | training_experience | <1yr / 1-3yr / 3-10yr / 10+yr | rhr_low, hz_optimal |
| Tygodniowy wolumen | weekly_volume | 0-1 / 2-3 / 4-6 / 7+ h/tydz. | lac_low (korekta Δ wolumenu) |
| Profil energetyczny | energy_profile | power_speed / mixed / endurance / untrained | lac_low (baza), lac_range |
| Poziom zawodniczy | competition_level | recreational / amateur / competitive / elite | hrv_center (+5 / +12 / +20 / +30 ms) |
| Pobudliwość ANS | ans_excitability | high / average / low | hrv_center (−8 / 0 / +6 ms) |
| Chronotyp | chronotype | morning / neutral / evening | pvt_rt_low (+12 ms gdy test poza oknem dobowym) |
| Wzrost (cm) | height_cm | 50–280 | Nie wpływa na progi RI (patrz sekcja 13) |
| Masa ciała (kg) | weight_kg | 20–400 | Moduł nawodnienia; nie wpływa na progi RI |
null) lub brak konkretnego pola zwraca wartości domyślne — identyczne z algorytmem przed wdrożeniem personalizacji. Żaden istniejący wynik nie jest retrospektywnie zmieniany.clamp(x) — używana we wszystkich formułach N w tym dokumencie.clamp(x) = max(0.0, min(1.0, x))clamp((90−110)/70) = clamp(−0.286) = 0.0 — brak ryzyka HRV, nie wynik ujemny obniżający inne parametry.
| Parametr | Centrum / dolny próg | Zakres ryzyka | Formuła N (inwersja dla parametrów gdzie wyższy = lepszy) |
|---|---|---|---|
| HRV (RMSSD) | hrv_center = 90 ms | hrv_range = 70 ms | clamp((90 − hrv) / 70) |
| RHR | rhr_low = 40 bpm | rhr_range = 60 bpm | clamp((rhr − 40) / 60) |
| Laktat | lac_low = 0 mmol/L | lac_range = 10 mmol/L | clamp((lactate − 0) / 10) |
| PVT — czas reakcji | pvt_rt_low = 200 ms | pvt_rt_range = 300 ms | clamp((rt − 200) / 300) |
| PVT — lapsy | — | pvt_lps_range = 5 | clamp(lapses / 5) |
| Tapping Hz | hz_optimal = 6.0 Hz | hz_range = 4.0 Hz | clamp((6.0 − hz) / 4.0) |
Źródła: Koenig J. & Thomas J. (2016). Resting heart rate variability — meta-analiza N > 2 500. Psychological Medicine, 46(5). · Plews D.J. et al. (2013). Training adaptation and HRV in elite endurance athletes. Sports Medicine, 43(9), 773–781.
| Wiek | Mediana RMSSD — M (ms) | Mediana RMSSD — K (ms) | Inne/nieokreśl. |
|---|---|---|---|
| < 30 lat | 47 | 52 | 50 |
| 30–39 lat | 42 | 46 | 44 |
| 40–49 lat | 35 | 39 | 37 |
| 50–59 lat | 30 | 33 | 31 |
| ≥ 60 lat | 25 | 28 | 26 |
hrv_center = median(wiek, płeć)
+ ans_korekta [high: −8 | average: 0 | low: +6 ms]
+ level_korekta [recreational: +5 | amateur: +12* | competitive: +20 | elite: +30 ms]
hrv_range = max(20, median × 0.9) // zakres proporcjonalny do mediany populacyjnej
* domyślne gdy competition_level = null (bezpieczne założenie dla typowego użytkownika)
Uzasadnienie korekty ANS: Sympatykotonicy mają strukturalnie niższe HRV nie z powodu patologii, lecz dominacji układu współczulnego — ocenianie ich bez tej korekty generuje chroniczne fałszywe alarmy.
Uzasadnienie korekty zawodniczej (Plews 2013): Raportowane mediany RMSSD: elita ~93 ms, zawodniczy ~68 ms, amatorski ~52 ms, rekreacyjny ~40 ms. Wyczynowy triathlonista z HRV = 55 ms może być w stanie przeciążenia mimo mieścenia się w normach populacyjnych dla jego wieku.
⚠ Ograniczenie: Płeć "inna" = średnia arytmetyczna norm M i K. Brak dedykowanej literatury populacyjnej dla osób niebinarnych/transpłciowych. Wymaga adnotacji w UX przed szerszym wdrożeniem.
Źródła: Mujika I. & Padilla S. (2001) · Tarnopolsky M.A. (2008) · Holloszy J.O. & Coyle E.F. (1984).
Różne dyscypliny mają odmienne normy mleczanu spoczynkowego. Sprinter z 3.8 mmol/L i maratończyk z 3.8 mmol/L to zupełnie różne sytuacje fizjologiczne.
| Profil energetyczny | lac_low (baza) | lac_range | Pełne ryzyko (N=1) przy |
|---|---|---|---|
| Siłowo-szybkościowy (power_speed) | 3.0 mmol/L | 3.0 | 6.0 mmol/L |
| Mieszany (mixed) | 2.5 mmol/L | 2.5 | 5.0 mmol/L |
| Wytrzymałościowy (endurance) | 2.0 mmol/L | 2.0 | 4.0 mmol/L |
| Nieaktywny (untrained) | 1.5 mmol/L | 2.0 | 3.5 mmol/L |
Wyższy wolumen treningowy → większa gęstość mitochondrialna → sprawniejszy klirens mleczanu → niższe oczekiwane mleczan przy pełnej regeneracji.
| Wolumen tygodniowy | Δ lac_low | Uzasadnienie |
|---|---|---|
| 0–1 h/tydz. | +0.2 mmol/L | Minimalny bodziec aerobowy; klirens niezoptymalizowany |
| 2–3 h/tydz. | ± 0 (pasmo referencyjne) | — |
| 4–6 h/tydz. | −0.1 mmol/L | Dobra adaptacja mitochondrialna |
| 7+ h/tydz. | −0.2 mmol/L | Wysoki wolumen — superior klirens w warunkach regeneracji |
Kobiety wytwarzają ~15% mniej mleczanu przy tej samej względnej intensywności wysiłku (efekt estrogenowy na metabolizm lipidów). Mnożnik 0.85 nakładany na lac_low i lac_range po krokach 1–2. Podłoga bezwzględna: 0.5 mmol/L.
lac_low_final = max(0.5, (lac_low_baza + Δ_vol)) × (sex === 'female' ? 0.85 : 1.0) N.lactate = clamp( (lactate − lac_low_final) / lac_range_final )
Źródła: Cooney M.T. et al. (2010). European Heart Journal, 31(19). + NHANES — normy populacyjne HR wg wieku i płci.
Trening obniża spoczynkowe HR poprzez wzrost objętości wyrzutowej i tonusu nerwu błędnego. Elitarni maratończycy: RHR 30–45 bpm. Osoby nieaktywne: 60–80 bpm. Jeden próg 40 bpm dla obu = błąd interpretacyjny.
| Staż treningowy | rhr_low | rhr_range | Pełne ryzyko (N=1) przy |
|---|---|---|---|
| < 1 rok | 40 bpm | 60 bpm | 100 bpm |
| 1–3 lata | 38 bpm | 60 bpm | 98 bpm |
| 3–10 lat | 35 bpm | 60 bpm | 95 bpm |
| 10+ lat | 30 bpm | 60 bpm | 90 bpm |
N.rhr = clamp( (rhr − rhr_low) / 60 )
Źródła: Hultsch D.F. et al. (2002). Variability in reaction time. Journals of Gerontology, 57(2), P101–P115. · Dijk D.J. & Czeisler C.A. (1995). Circadian pacemaker and sleep homeostat. Journal of Neuroscience, 15(5), 3526–3538.
Kalibracja obejmuje dwa niezależne parametry: próg dolny (floor RT) i zakres ryzyka. Starsze osoby mają strukturalnie wyższy RT i szerszą dystrybucję wewnątrzosobniczą — bez obu korekt, 65-latek z RT = 280 ms (norma dla jej/jego wieku) otrzymuje identyczne N jak 25-latek z 280 ms (wyraźne zaburzenie dla ich wieku).
decadesOver20 = max(0, (wiek − 20) / 10) pvt_rt_low = 200 + decadesOver20 × 3 [ms] // ~3 ms/dekadę po 20. r.ż. pvt_rt_range = 300 + decadesOver20 × 12 [ms] // ~12 ms szerszy zakres/dekadę circAdj = +12 ms gdy: (chronotype === 'morning' && godzina ≥ 18) // ranny typ poza oknem dobowym lub (chronotype === 'evening' && godzina ≤ 9) // wieczorny typ poza oknem dobowym pvt_rt_low += circAdj pvt_lps_range = wiek > 50 ? 4 : 5 // naturalna wyższa wariancja lapsów po 50. r.ż. N.pvtRt = clamp( (pvtMeanRt − pvt_rt_low) / pvt_rt_range ) N.pvtLps = clamp( pvtLapses / pvt_lps_range )
| Wiek | pvt_rt_low | pvt_rt_range | N=1 przy RT = |
|---|---|---|---|
| 20 lat | 200 ms | 300 ms | 500 ms |
| 35 lat | 204 ms | 318 ms | 522 ms |
| 50 lat | 209 ms | 336 ms | 545 ms |
| 65 lat | 213 ms | 354 ms | 567 ms |
Źródło: Keele S.W. et al. (1985). Motor programs and their role in cognition. Attention and Performance, XI.
Wytrenowani sportowcy mają wyższy bazowy Hz tappingu (lepszy ton dopaminergiczny i koordynacja nerwowo-mięśniowa). Korekta przesuwa hz_optimal w górę:
| Staż treningowy | Bonus | hz_optimal końcowe |
|---|---|---|
| < 1 rok | +0.0 Hz | 6.0 Hz |
| 1–3 lata | +0.3 Hz | 6.3 Hz |
| 3–10 lat | +0.6 Hz | 6.6 Hz |
| 10+ lat | +1.0 Hz | 7.0 Hz |
N.hz = max( clamp( (hz_optimal − hz) / 4.0 ), N_hz_personal // warstwa N=1 — patrz sekcja 10 )
Wagi odzwierciedlają hierarchię pewności pomiarowej, nie ważność fizjologiczną każdej dziedziny. Zasada: aktywne > pasywne; chwilowe > skumulowane; obiektywne > subiektywne.
| Filar | Waga | Uzasadnienie priorytetu | Główne ograniczenie |
|---|---|---|---|
| Neurologia Tapping + PVT | 4 | Aktywne testy CNS wykonywane chwilowo — mierzą bieżący stan układu nerwowego, nie skumulowany efekt ostatnich godzin. Nie dają się "zamortyzować" przez chroniczną adaptację (w przeciwieństwie do HRV). Dwa niezależne wymiary: motoryczny (Tapping) i alertnościowy (PVT). | Wymaga zaangażowania atlety; podatny na warunkowe ociąganie się lub efekt ćwiczenia przy wielokrotnych testach dziennie |
| Biochemia Laktat | 3 | Obiektywny marker metaboliczny — nie daje się zmanipulować świadomie. Bezpośrednio mierzy obciążenie kwasowe i sprawność klirensu. | Silnie zależny od czasu od treningu (stąd recency weight); wysoka zmienność wewnątrzosobnicza przy pomiarze palcowym; wiele atletów nie mierzy regularnie → brakujące dane |
| Biometryka HRV, RHR, oddech, sen, temp. | 2 | Pasywne wearables — mierzą skumulowany stan ANS z ostatnich kilkunastu godzin. Wartościowe jako kontekst i trend, ale nie rejestrują stanu chwilowego CNS. | HRV normalizuje się przy przewlekłym przetrenowaniu (dominacja przywspółczulna); wiele wartości z wearables (REM, deep sleep) to estymaty algorytmów OEM, nie pomiary bezpośrednie |
| Psychofizyka DOMS, brain fog, stres, nastrój | 1 | Subiektywny stan ma wartość kliniczną — DOMS i stress korelują z ryzykiem urazu i przeciążenia. Pełni rolę detektora podłogi/sufitu (hard overrides dla DOMS ≥ 8, stres ≥ 8, brain fog ≥ 8). | Podatny na bias motywacyjny u zawodników ("daję z siebie wszystko" → zaniżona ocena bólu/zmęczenia); nastrój jest zbyt przejściowy by zasługiwał na hard override |
Wszystkie 17 parametrów wchodzących do Readiness Index. N∈[0,1]: 0 = brak ryzyka, 1 = maksymalne ryzyko. ✦ = kalibrowane przez profil biologiczny.
| Parametr | Formuła N | W | Filar (waga filara) |
|---|---|---|---|
| Tapping Hz ✦ | clamp((hz_optimal − hz) / 4.0) | 1 | NEUROLOGIA waga = 4 |
| Tapping SD | clamp(sd_s / 0.5) (sd w sekundach) | 1 | |
| PVT czas reakcji ✦ | clamp((pvtRt − pvt_rt_low) / pvt_rt_range) | 1 | |
| PVT lapsy ✦ | clamp(lapses / pvt_lps_range) | 1 | |
| Laktat ✦ | clamp((lactate − lac_low) / lac_range) × recency_w | 1 × recency | BIOCHEMIA waga = 3 |
| HRV (RMSSD) ✦ | clamp((hrv_center − hrv) / hrv_range) | 2 | BIOMETRYKA waga = 2 |
| RHR ✦ | clamp((rhr − rhr_low) / 60) | 1 | |
| Częstość oddechów | clamp((rr − 8) / 16) | 1 | |
| Sen — całkowity | clamp((8 − sleepTotal) / 6) | 1 | |
| Sen — REM | clamp((1.8 − sleepRem) / 1.8) | 1 | |
| Sen — głęboki | clamp((1.5 − sleepDeep) / 1.5) | 1 | |
| Temperatura skóry | clamp((skinTemp − 33) / 5) | 1 | |
| DOMS | clamp((doms − 1) / 9) | 1 | PSYCHOFIZYKA waga = 1 |
| Brain fog | clamp((brainFog − 1) / 9) | 1 | |
| Motywacja | clamp((10 − motivation) / 9) | 1 | |
| Stres | clamp((stress − 1) / 9) | 1 | |
| Nastrój | clamp((10 − mood) / 9) | 1 |
Laktat jest jedynym parametrem z atenuacją wagi zależną od kontekstu — klirens mleczanu następuje 1–2h po wysiłku; wysoka wartość 8h po treningu nie odzwierciedla stanu regeneracji:
| Czas od ostatniego treningu | Mnożnik W.lactate |
|---|---|
| < 1h | 1.00 |
| 1–2h | 0.85 |
| 2–6h | 0.50 |
| > 6h | 0.20 |
| Dzień bez treningu | 0.10 |
// Krok 1: wynik każdego filara — ważona średnia N w filarze // (brakujące dane pomijane: W[k] = 0 gdy N[k] = null) pillar_score(keys) = Σ(N[k] × W[k]) / Σ(W[k] dla k z dostępnymi danymi) // Krok 2: ważona średnia filarów PIL_raw = Σ(pillar.score × pillar.weight) / Σ(pillar.weight dla filarów z danymi) // Krok 3: inwersja → Readiness Index // 100 = pełna gotowość biologiczna; 0 = maksymalne ryzyko Readiness Index (RI) = 100 − (PIL_raw × 100)
Obsługa brakujących danych: Gdy pomiar niedostępny (null), jego waga W[k] = 0 — system nie karze za brak wearables, lecz proporcjonalnie zwiększa wpływ dostępnych parametrów. Przykład: bez laktatu, HRV i snu (tylko tapping + PVT + psychofizyka) kompozyt nadal oblicza znaczący wynik.
| Zakres RI | Etykieta | Interpretacja kliniczna | Uzasadnienie granicy |
|---|---|---|---|
| ≥ 75% | Prime | Superkompensacja — okno na wysiłek o wysokiej intensywności lub rekordowe próby | 75% = PIL_raw ≤ 0.25; wszystkie N-scores jednocześnie niskie; aktywna superkompensacja po właściwej regeneracji |
| 50–74% | Normal | Zakres funkcjonalny — trening z umiarem, regeneracja aktywna | Granica 50% = PIL_raw ≤ 0.50; wyniki filarów wskazują umiarkowane obciążenie bez alarmujących sygnałów — typowy stan po normalnym dniu treningowym |
| 25–49% | Warning | Podwyższone obciążenie — regeneracja priorytetem, redukcja objętości | Granica 25% = PIL_raw ≤ 0.75; co najmniej jeden filar silnie obciążony; łączna wartość ważona sygnalizuje potrzebę interwencji |
| < 25% | High Risk | Konsultacja specjalisty — protokoły obowiązkowe, brak intensywnych sesji | PIL_raw > 0.75 = silne obciążenie w wielu filarach jednocześnie; poniżej tej granicy ryzyko urazu jest klinicznie istotne |
Sześć warunków hardcoded — AI nie może ich ominąć, kompozyt liczbowy nie ma tu znaczenia.
| Warunek | Efekt na RI | Uzasadnienie naukowe |
|---|---|---|
| Sen < 6h | RI ≤ 49% etykieta ≤ Warning | Ostra deprywacja snu < 6h powoduje mierzalne zaburzenia RT, motoryki i funkcji immunologicznej (Walker 2017; Fullagar 2015; Mah 2011). Sen ma wagę 1/9 w biometryce (≈2.2% całości) — strukturalnie zbyt mały by nadpisać silny wynik neurologiczny. |
| Surowe RHR ≥ 100 bpm | RI ≤ 49% etykieta ≤ Warning | Kliniczna definicja tachykardii spoczynkowej. RHR ma wagę W=1/9 w biometryce (≈2.5% całości) — N.rhr = 1.0 jest niewystarczające by samo dominowało. |
| Alkohol = true | RI ≤ 74% etykieta ≤ Normal | Alkohol degraduje architekturę snu (redukuje REM/SWS), podnosi markery zapalne i degraduje RT/motorykę nawet bez odczuwanego zaburzenia (Prat & Adan 2013). Sportowcy z wysokim baseline mogą uzyskać Prime mimo kary ×1.5 na PIL_raw. |
| DOMS ≥ 8/10 | RI ≤ 74% etykieta ≤ Normal | Silny DOMS = nierozwiązana mikrotrauma, podwyższone ryzyko urazu przy wysiłkach balistycznych (Cheung, Hume & Maxwell 2003). Waga DOMS: 1/5 psychofizyki × 1/10 = ~2% całości. |
| Brain fog ≥ 8/10 | RI ≤ 74% etykieta ≤ Normal | Wyraźne zamglenie = zaburzone funkcje wykonawcze i RT — warunki wstępne dla bezpiecznej pracy o wysokiej intensywności lub nabywania umiejętności. Analogicznie: ~2% całości strukturalnie. |
| Stres ≥ 8/10 | RI ≤ 74% etykieta ≤ Normal | Wysoki stres = podwyższony kortyzol i ton sympatyczny zaburzające regenerację. Nastrój celowo NIE ma override — jest wysoce przejściowy (krótka sprzeczka może zmienić się w ciągu minut) i nie odzwierciedla rzetelnie gotowości fizjologicznej. |
Korekty nakładane przed obliczeniem N — w kolejności przetwarzania:
| Substancja | Efekt na surowe pomiary / wagi W | Efekt na PIL_raw |
|---|---|---|
| Kofeina | Korekty przed N: hz×0.95, hrv×1.10, rhr−5, sd×1.05 | — |
| Gr. A — beta-blokery | W.hrv = 0, W.rhr = 0 (ANS wyłączone — pomiary fałszywe) | — |
| Gr. B — inne farmakologiczne | — | PIL_raw × 1.15 (+15% ryzyka kompozytowego) |
| Gr. C — NLPZ / NSAIDs | W.doms = 0 (maskują ból), W.lactate × 1.5, W.sd × 1.5 | — |
| Alkohol | W.hrv × 0.5, W.rhr × 0.5, W.sd × 1.5 | PIL_raw × 1.5 + hard override (RI ≤ 74%) |
Niezależna od kalibracji profilowej warstwa porównująca pomiar z własnym baseline — aktywna po ≥ 5 sesjach:
| Parametr | N_personal = 1.0 gdy | Zasada |
|---|---|---|
| Tapping Hz | Spadek ≥ 30% względem osobistej mediany Hz | N_final = max(N_global, N_personal)Warstwa N=1 może tylko podnieść ryzyko — nigdy nie obniży go poniżej absolutnych progów populacyjnych/profilowych. |
| Tapping SD | Wzrost ≥ 100% względem osobistej mediany SD | |
| HRV (RMSSD) | Spadek ≥ 30% względem osobistej mediany HRV |
Nowy użytkownik (brak historii) pracuje wyłącznie na normach profilowych lub populacyjnych do zgromadzenia ≥ 5 sesji.
| Płeć: kobieta | Wiek: 28 lat | Staż: 3–10 lat |
| Profil: endurance | Wolumen: 4–6 h/tydz. | Poziom: competitive |
| ANS: average | Chronotyp: morning | Test o: 08:00 (w oknie) |
| Próg | Domyślne (profil=null) | Po kalibracji | Zmiana |
|---|---|---|---|
| hrv_center | 90 ms | 52 (wiek/K) + 0 (ANS avg) + 20 (competitive) = 72 ms | −18 ms |
| hrv_range | 70 ms | max(20, 52 × 0.9) = 46.8 ms | −23 ms |
| rhr_low | 40 bpm | 35 bpm (3–10yr) | −5 bpm |
| lac_low | 0 mmol/L | 2.0 (endurance) − 0.1 (4-6h) = 1.9 × 0.85 (K) = 1.615 mmol/L | +1.615 |
| lac_range | 10 mmol/L | 2.0 × 0.85 = 1.70 mmol/L | −8.30 |
| pvt_rt_low | 200 ms | 200 + 0.8×3 = 202.4; circAdj=0 (08:00) → 202 ms | +2 ms |
| pvt_rt_range | 300 ms | 300 + 0.8×12 = 310 ms | +10 ms |
| hz_optimal | 6.0 Hz | 6.6 Hz (3–10yr: +0.6) | +0.6 Hz |
Warunki: brak kofeiny, brak leków, brak alkoholu. Czas od treningu: 2–6h → W.lactate × 0.50.
| Parametr | Pomiar | N (obliczenie) | W efektywne | Filar |
|---|---|---|---|---|
| Tapping Hz | 7.2 Hz | clamp((6.6−7.2)/4.0) = clamp(−0.15) = 0.000 | 1 | Neurologia (w=4) |
| Tapping SD | 80 ms = 0.08 s | clamp(0.08/0.5) = 0.160 | 1 | |
| PVT — RT | 228 ms | clamp((228−202)/310) = 0.084 | 1 | |
| PVT — lapsy | 1 | clamp(1/5) = 0.200 | 1 | |
| Laktat | 1.8 mmol/L | clamp((1.8−1.615)/1.70) = 0.109 | 0.50 | Biochemia (w=3) |
| HRV | 58 ms | clamp((72−58)/46.8) = 0.299 | 2 | Biometryka (w=2) |
| RHR | 48 bpm | clamp((48−35)/60) = 0.217 | 1 | |
| Częst. oddechów | 13/min | clamp((13−8)/16) = 0.313 | 1 | |
| Sen — total | 7.5h | clamp((8−7.5)/6) = 0.083 | 1 | |
| Sen — REM | 1.6h | clamp((1.8−1.6)/1.8) = 0.111 | 1 | |
| Sen — głęboki | 1.2h | clamp((1.5−1.2)/1.5) = 0.200 | 1 | |
| Temp. skóry | 34.2°C | clamp((34.2−33)/5) = 0.240 | 1 | |
| DOMS | 2/10 | clamp((2−1)/9) = 0.111 | 1 | Psychofizyka (w=1) |
| Brain fog | 2/10 | clamp((2−1)/9) = 0.111 | 1 | |
| Motywacja | 8/10 | clamp((10−8)/9) = 0.222 | 1 | |
| Stres | 2/10 | clamp((2−1)/9) = 0.111 | 1 | |
| Nastrój | 8/10 | clamp((10−8)/9) = 0.222 | 1 |
| Filar | Σ(N×W) / Σ(W) | Wynik filara | Waga filara |
|---|---|---|---|
| Neurologia | (0×1 + 0.160×1 + 0.084×1 + 0.200×1) / 4 | 0.111 | 4 |
| Biochemia | (0.109×0.50) / 0.50 | 0.109 | 3 |
| Biometryka | (0.299×2 + 0.217 + 0.313 + 0.083 + 0.111 + 0.200 + 0.240) / 8 | 0.220 | 2 |
| Psychofizyka | (0.111 + 0.111 + 0.222 + 0.111 + 0.222) / 5 | 0.155 | 1 |
PIL_raw = (0.111×4 + 0.109×3 + 0.220×2 + 0.155×1) / (4+3+2+1)
= (0.444 + 0.327 + 0.440 + 0.155) / 10
= 1.366 / 10 = 0.1366
Readiness Index = 100 − 13.7 = 86.3% → Prime ✓
Hard overrides: sen = 7.5h (≥ 6h ✓), RHR = 48 (< 100 ✓), brak alkoholu ✓
→ żaden override nie aktywowany, etykieta Prime zatwierdzona.
| Parametr | N z profilem | N bez profilu (domyślne) | Różnica |
|---|---|---|---|
| HRV | 0.299 | clamp((90−58)/70) = 0.457 | +0.158 ↑ ryzyka bez profilu |
| Laktat | 0.109 | clamp((1.8−0)/10) = 0.180 (×W=0.50) | +0.071 ↑ ryzyka bez profilu |
| RHR | 0.217 | clamp((48−40)/60) = 0.133 | −0.084 ↓ ryzyka bez profilu |
| Tapping Hz | 0.000 | clamp((6.0−7.2)/4.0) = 0.000 | bez zmiany |
RI bez profilu ≈ 83.6% (nadal Prime, lecz o 2.7 pkt proc. niżej). Personalizacja nie zawsze „pomaga" liczbowo — czyni ocenę bardziej fizjologicznie dokładną. Tu: profil obniżył ocenę ryzyka HRV i laktatu (normy tej sportowiec są wyższe niż populacyjne), ale podwyższył ocenę RHR (niższe rhr_low = bardziej wymagający próg dla wytrenowanej osoby).
VO2max jest zbierany automatycznie z wearables (data.wearables.vo2max) i przekazywany do AI jako kontekst. Nie wpływa obecnie na żaden próg w _profileNorms().
Planowane (v2): wyższe VO2max → wyższe oczekiwane hrv_center + niższe oczekiwane rhr_low. Uzasadnienie: VO2max jest lepszym predyktorem norm HRV/RHR niż sam staż treningowy — uwzględnia faktyczną efektywność adaptacji tlenowej, nie tylko czas trenowania. Wymaga walidacji na danych własnych przed wdrożeniem.
Pytanie projektowe: Dlaczego wzrost i masa ciała nie wpływają na progi RI?
Związek BMI ↔ HRV istnieje w literaturze (wyższe BMI koreluje z niższym RMSSD u osób z nadwagą). Jednak ten efekt jest już zawarty w kombinacji innych pól profilu: osoba z wysokim BMI i niską aktywnością będzie miała weeklyVolume: 0-1, energyProfile: untrained, competitionLevel: recreational — trzy niezależne korekty, które razem obniżą hrv_center. Dodanie BMI = podwójne liczenie tego samego efektu fizjologicznego.
Dodatkowe zastrzeżenie: BMI nie rozróżnia masy mięśniowej od tłuszczowej. Sprinter 100 kg / 185 cm (BMI ≈ 29) z doskonałą autonomią sercową byłby błędnie penalizowany.
Aktualne użycie wzrostu i masy: (1) cel nawodnienia (goal = round((kg × 35 + bonusy) / 250) × 250 ml), (2) wyświetlanie BMI informacyjnie. Nie wchodzą do _profileNorms().
| Kolumna | Typ | Opis |
|---|---|---|
athlete_id | uuid PK | Klucz obcy → athletes.id |
age | integer | Wiek ≥ 10, bez górnej granicy |
sex | text | 'male' | 'female' | 'other' |
height_cm | integer | Do obliczenia BMI — informacyjnie |
weight_kg | numeric(5,1) | Kanoniczne — moduł nawodnienia bierze stąd |
training_experience | text | '<1yr' | '1-3yr' | '3-10yr' | '10+yr' |
weekly_volume | text | '0-1' | '2-3' | '4-6' | '7+' |
energy_profile | text | 'power_speed' | 'mixed' | 'endurance' | 'untrained' |
ans_excitability | text | 'high' | 'average' | 'low' |
chronotype | text | 'morning' | 'neutral' | 'evening' |
competition_level | text | 'recreational' | 'amateur' | 'competitive' | 'elite' |
updated_at | timestamp | Ostatnia aktualizacja profilu |
| Endpoint | Metoda | Autoryzacja | Opis |
|---|---|---|---|
/api/bio-profile | GET | Bearer token | Zwraca profil zalogowanego użytkownika lub null; automatycznie wczytywany do window._bioProfile przed każdym testem |
/api/bio-profile | PUT | Bearer token | Upsert profilu; synchronizuje weight_kg i sex do hydration_profiles |