fjt metodolojisi

Aşağıdaki doküman, uygulamadaki hesaplamanın birebir tanımıdır. Katsayılar uygulamanın kendi kaynak dosyalarından alınmıştır.

fjt — Metodoloji: Yaş ve Kazanılan/Kaybedilen Zaman Nasıl Hesaplanır

Bu belge, fjt uygulamasındaki "kazanılan / kaybedilen zaman" sisteminin tam tanımıdır. Tüm katsayılar src/lib/scoring-config.ts dosyasında, tüm hesaplama mantığı src/lib/scoring-core.ts (saf çekirdek) ve src/lib/scoring.ts (okuma/yazma, toplam, VO2max) dosyalarındadır. Uygulamada bu dosyalar dışında hiçbir yerde zaman/puan sabiti kullanılmaz.

1. Genel model

Her sağlık aksiyonu time_ledger tablosuna bir satır olarak yazılır:

AlanAçıklama
idSatır kimliği
user_idKullanıcı
created_atKayıt zamanı
sourcemeal_photo, steps, checkin, sleep, workout, heart_rate, manual
delta_minutesKazanılan (+) veya kaybedilen (−) dakika
detailsHesaplama ayrıntıları (ölçüm, birim, yoğunluk, tahmin rozeti vb.)
is_simulatedSimülasyon verisi mi (true ise kullanıcı toplamlarına karışmaz)
  • Pozitif değer = kazanılan zaman, negatif = kaybedilen zaman.
  • Gün sınırları kullanıcının seçtiği şehrin saat dilimine göre hesaplanır (resolveTimeZone / dayKeyInTz); telefon saat dilimi yalnızca hiç kayıtlı saat dilimi yoksa kullanılır.
  • Eski "yıl cinsinden yaş etkisi" gösterimi dakikaya MINUTES_PER_YEAR = 365,25 × 24 × 60 sabitiyle çevrilir.

2. Kaynak katsayıları (scoring-config.ts)

Her kaynak için birim başına dakika ve günlük üst sınır (mutlak değer, hem kazanç hem kayıp için uygulanır):

KaynakBirimdk / birimGünlük sınır (dk)Açıklama
meal_photobeslenme kalite puanı (−5…+5)12180Öğün fotoğrafının beslenme kalitesi; işlenmiş/şekerli öğünler kaybettirir
steps1.000 adım9240Her 1.000 adım kazanılan zamana eklenir
checkinortalama cevap puanı (−2…+2)18150Günlük/haftalık check-in cevaplarının ortalaması (WHO-5 tabanlı)
sleepideal uykuya göre sapma (saat)36200Çok az veya çok fazla uyku kaybettirir
workoutantrenman dakikası (yoğunluk ölçekli)4,5320Süre × yoğunluk çarpanı
heart_ratereferans dinlenme nabzından sapma (atım)5160Dinlenme nabzının referansa göre durumu
manualdakika1300Elle eklenen aktivite/düzeltme (ör. sigara kaybı)

2.1 Ölçüm → birim dönüşümü (scoring-core.ts)

Ham ölçüm önce birime çevrilir, sonra birim × dk/birim hesaplanır ve günlük sınıra kırpılır: delta = clamp(yuvarla(birim × dk), −sınır, +sınır).

KaynakBirim formülüSabitler
stepsadım / 1000stepsPerUnit = 1000
checkinpuan − 3checkinNeutral = 3 (1–5 ölçeğinin ortası)
sleep−|uyku_saati − 7,5| + 0,5idealSleepHours = 7,5; idealin ±0,5 saati içi nötr/pozitif
heart_rate62 − dinlenme_nabzıreferenceRestingHr = 62 atım/dk
workoutdakika × yoğunlukyoğunluk: düşük 0,7 · orta 1,0 · yüksek 1,4
meal_photo / manualölçüm doğrudan birim—

3. VO2max — NTNU / HUNT non-exercise modeli

Kaynak: Nes BM ve ark., "Estimating V̇O2peak from a nonexercise prediction model: the HUNT Study, Norway", Medicine & Science in Sports & Exercise, 2011. fjt, modele dinlenme nabzı ve aktivite indeksi terimleri eklenmiş uyarlamayı kullanır.

VO2max = intercept(sex)
         + (−0,296) × yaş
         + (−0,552) × BMI
         + (−0,135) × dinlenme nabzı
         + 0,869 × aktivite indeksi
  • intercept: erkek 100,27 · kadın 88,72
  • Aktivite indeksi (0–5): sedentary=0, light=1,5, moderate=3, active=4, athlete=5; antrenman sıklığı biliniyorsa doğrudan o değer (0–5'e kırpılır) kullanılır.

Nabızlı / nabızsız mod farkı

  • Nabız verisi varsa (Apple Watch / Health dinlenme nabzı): formül gerçek dinlenme nabzıyla çalışır, estimated: false.
  • Nabız verisi yoksa: dinlenme nabzı yaş, cinsiyet ve aktivite seviyesinden tahmin edilir ve sonuç estimated: true rozetiyle işaretlenir:
tahmini nabız = yuvarla( taban(sex) + 0,18 × yaş + (−3,5) × aktivite indeksi )
  taban: erkek 58 · kadın 60

Ayrıca nabız verisi olan kullanıcılar heart_rate kaynağından günlük dakika kazanır/kaybeder; cihazı olmayan kullanıcılar bu katkıyı alamaz.

4. Diğer kaynaklar

  • WHO-5 Well-Being Index: günlük "hissedilen yaş / canlılık" check-in'lerinin temel ölçeği (1–5 cevap puanı → checkin kaynağı).
  • Uyku: ideal süre 7,5 saat referansı yaygın uyku süresi kılavuzlarına dayanır (National Sleep Foundation yetişkin aralığı 7–9 saat).
  • Adım: 1.000 adım başına sabit kazanç; günlük 240 dk üst sınırı aşırı tek-gün katkısını sınırlar.

5. Gösterim (formatDuration)

formatDuration(minutes, { lang, signed }) dakikayı okunur süreye çevirir:

  • |dk| ≥ 1440 → gün, ≥ 60 → saat, altı → dakika
  • Negatifler "−" ile döner; signed: true pozitiflere "+" ekler
  • Diller: tr, de, en (varsayılan), es, fr — ondalık ayıracı en dışında virgül

Örnek: formatDuration(2983, {lang:"tr"}) → "2,1 gün", formatDuration(−90) → "−1,5 saat".

6. Simülasyon hesapları — 1 haftalık sonuç tablosu

Beş test hesabı (is_simulated = true, analitiklerden hariç) için deterministik (sabit tohumlu) 7 günlük veri üretilir: src/lib/sim-seed.ts. Aşağıdaki tablo 23 Eylül 2026'da biten hafta için üretilen gerçek çıktıdır (değerler dakika):

Hesap17.0918.0919.09*20.09*21.0922.0923.09HaftaHafta içiHafta sonu
Sim 1 — 25y kadın, aktif, Watch+250+555+612+269+593+233+471+2.983 (≈2,1 gün)+2.102+881
Sim 2 — 34y erkek, masa başı+43+46+63+156+39+59+133+539 (≈9,0 saat)+320+219
Sim 3 — 45y erkek, sigara, düzensiz uyku−289−141−211−326−159−262−262−1.650 (≈−1,1 gün)−1.113−537
Sim 4 — 58y kadın, orta aktif, Watch+300+333+151+260+259+131+277+1.711 (≈1,2 gün)+1.300+411
Sim 5 — 67y erkek, düşük aktivite, check-in atlıyor−8+93+29−11+15+85+6+209 (≈3,5 saat)+191+18

* 19–20 Eylül hafta sonu. Sigara kaybı manual kaynağından günlük −min(300, adet × 11) dakika olarak düşülür (Sim 3).

Nabızlı / nabızsız VO2max karşılaştırması

HesapGerçek nabızTahmini nabızVO2max (nabızlı)VO2max (nabızsız)FarkNabız katkısı (hafta)
Sim 1 — 25y kadın, aktif545165,866,2−0,4+280 dk
Sim 2 — 34y erkek, masa başı—59—69,2—0
Sim 3 — 45y erkek, sigara—66—61,6—0
Sim 4 — 58y kadın, orta aktif646051,652,1−0,5−60 dk
Sim 5 — 67y erkek, düşük aktivite—70—56,4—0

Yorum: gerçek nabızla hesaplanan VO2max tahmine çok yakın (fark ≤ 0,5), bu da tahmin modelinin tutarlılığını doğrular. Nabız katkısı Sim 1'de haftalık +280 dk (düşük dinlenme nabzı ödüllendiriliyor), Sim 4'te −60 dk (nabız 62 referansının üzerinde) — cihazı olan kullanıcılar bu ek hassasiyet ve katkıyı alır.

Kaynaklar

Sağlık rehberleri

Bu araç tahmini bir değer üretir; tıbbi teşhis veya tedavi aracı değildir. Sağlık kararların için bir hekime danış.