diff --git a/data.js b/data.js index 7e65584..a69dce0 100644 --- a/data.js +++ b/data.js @@ -17,20 +17,20 @@ window.HC_DATA = { lede: { en: "Sleep, BP, lipids, uric acid — one shared metabolic root. Lifestyle stacks first; medication only after lifestyle plateaus.", zh: "睡眠、血壓、血脂、尿酸——共享同一個代謝根源。生活方式介入優先,等到效果平台期再考慮藥物。" }, progressLbl: { en: "Weight progress · 70 → 65 kg", zh: "體重進度 · 70 → 65 公斤" }, - progressMeta: { en: "Day 133 · 66.2 kg · Sat official (7/4)", zh: "第 133 天 · 66.2 公斤 · 週六正式(7/4)" }, - startDate: { en: "Start date · Mar 17, 2026 · Last sync 7/27", zh: "起始日期 · 2026 年 3 月 17 日 · 最後同步 7/27" }, + progressMeta: { en: "Day 166 · 64.5 kg · Sat official (8/29)", zh: "第 166 天 · 64.5 公斤 · 週六正式(8/29)" }, + startDate: { en: "Start date · Mar 17, 2026 · Last sync 8/29", zh: "起始日期 · 2026 年 3 月 17 日 · 最後同步 8/29" }, startWeight: 70, targetWeight: 65, - currentWeight: 66.2, - currentWeightDate: "7/4 Sat official", + currentWeight: 64.5, + currentWeightDate: "8/29 Sat official", // Body comp current actuals — latest daily reading (6/5). Manual for now: // sync_data_js.py does NOT yet populate these (only weight/BP/sleep). Update on daily check-in. - currentBodyFat: 17.8, + currentBodyFat: 17.1, currentVisceralFat: 8.5, - currentBodyCompDate: "7/27", + currentBodyCompDate: "8/29", // Waist = WHO midpoint (健檢-comparable; better VAT proxy than weight). Latest non-empty daily reading. - currentWaist: 81, - currentWaistDate: "7/6", + currentWaist: 78, + currentWaistDate: "8/29", }, // ===== OSA red-flag banner ===== @@ -62,15 +62,15 @@ window.HC_DATA = { }, { sys: "sleep", name: { en: "Sleep Score", zh: "睡眠分數" }, - val: "74", unit: "Garmin", + val: "71", unit: "Garmin", delta: { en: "Sleep = behavioral/autonomic · OSA/hypoxia ruled out 6/29 (fingertip oximetry flat)", zh: "睡眠=行為/自律神經 · OSA/缺氧已排除 6/29(指尖血氧整夜平穩)" }, cadence: { en: "Daily · Garmin", zh: "每日 · Garmin" }, status: "warn", }, { sys: "weight", name: { en: "Weight", zh: "體重" }, - val: "66.2", unit: "kg", - delta: { en: "7/4 Sat official · auto-synced", zh: "7/4 週六正式 · 自動同步" }, + val: "64.5", unit: "kg", + delta: { en: "8/29 Sat official · auto-synced", zh: "8/29 週六正式 · 自動同步" }, cadence: { en: "Daily · Sat official", zh: "每日 · 週六正式" }, status: "ok", }, @@ -946,17 +946,17 @@ window.HC_DATA = { tracker: { // [SBP, DBP] — gaps filled with prior reading bp: [ - [125,70], [125,70], [125,70], [125,70], [125,70], [125,70], [125,72], [125,72], [122,59], [120,67], [122,72], [112,69], [112,69], [112,69], + [125,70], [125,70], [125,70], [125,70], [125,70], [125,72], [125,72], [122,59], [120,67], [122,72], [112,69], [112,69], [112,69], [122,74], ], // daily weight (kg) - weight: [67.5, 67.2, 66.9, 67.3, 67.5, 66.6, 66.4, 66.3, 66.2, 67.4, 66.8, 66.2, 65.9, 65.9], + weight: [67.2, 66.9, 67.3, 67.5, 66.6, 66.4, 66.3, 66.2, 67.4, 66.8, 66.2, 65.9, 65.9, 64.5], // Garmin Sleep Score - sleep: [76, 74, 78, 54, 73, 81, 63, 63, 63, 74, 68, 76, 59, 74], + sleep: [74, 78, 54, 73, 81, 63, 63, 63, 74, 68, 76, 59, 74, 71], // Body Battery waking - bb: [37, 40, 48, 45, 56, 66, 53, 53, 53, 48, 55, 80, 24, 34], + bb: [40, 48, 45, 56, 66, 53, 53, 53, 48, 55, 80, 24, 34, 27], // SpO2 nightly nadir % (last 14 days, parallel to bp/weight/sleep/bb). // Earlier nights null until sync_data_js.py backfills; banner only uses trailing values. - spo2Nadir: [94, 81, 93, 87, null, null, null, null, null, null, null, null, null, null], + spo2Nadir: [81, 93, 87, null, null, null, null, null, null, null, null, null, null, null], }, // ===== Running — started 2026-04-26 ===== diff --git a/reports/daily-garmin/2026-07-27.md b/reports/daily-garmin/2026-07/2026-07-27.md similarity index 100% rename from reports/daily-garmin/2026-07-27.md rename to reports/daily-garmin/2026-07/2026-07-27.md diff --git a/reviews/daily/2026-07-27.md b/reviews/daily/2026-07/2026-07-27.md similarity index 100% rename from reviews/daily/2026-07-27.md rename to reviews/daily/2026-07/2026-07-27.md diff --git a/reviews/daily/2026-08-29.md b/reviews/daily/2026-08-29.md new file mode 100644 index 0000000..606ba0a --- /dev/null +++ b/reviews/daily/2026-08-29.md @@ -0,0 +1,110 @@ +# 晨間健康紀錄 — 2026-08-29 + +*3 分鐘。起床後立即完成。記錄,不分析。* + +--- + +## 體重 / 體組成 + +**今日:64.5 kg**(週六正式紀錄) +**體脂率:17.1 %** +**內臟脂肪等級:—**(今日未讀) +**腰圍 (WHO midpoint):78 cm** ✅ 首度進入 < 80 目標區(WHtR = 78/170 = **0.459**,優於理想線 0.47) +**腰圍 (最大腹圍):— cm**(今日未量) + +**軀幹脂肪(輝葉八電極,主 KPI):— kg(— %)**(今日未量) +**除脂體重 LBM(護欄):≈ 53.5 kg(推算 64.5 × 82.9%)** ⚠️ **跌破 54 kg 護欄** + +*每週六早晨為正式體重紀錄(排尿後、進食前)。* + +**vs 上次正式紀錄(2026-07-27,COVID 恢復期):** 65.9 → 64.5 kg(**−1.4 kg**)|體脂 17.8% → 17.1%(**−0.7%**)|推算 LBM 54.2 → 53.5 kg(**−0.7 kg**) + +--- + +## 血壓(晨間) + +*起床後 1 小時內,上完廁所、進食前。坐下安靜 5 分鐘,連量兩次取第二次。* + +| 次數 | 收縮壓 | 舒張壓 | 心率 | +|------|--------|--------|------| +| 第一次 | — | — | — | +| 第二次 | 122 | 74 | 70 | + +✅ 122/74 落在正常區(目標 < 130 / < 85),心率 70 bpm。 + +--- + +## 睡眠狀態 + +**Garmin 偵測入睡:**(Garmin sync 不可用,手動報數) +**實際上床:**(未填) +**實際起床:**(未填) +**中途醒來:** 未回報 +**Garmin Sleep Score:** 71 / 100 +**Garmin Body Battery 起床值:** 27 ⚠️ +**主觀恢復感:** — / 5(未填) +**入睡 latency:**(無資料) + +總時長 **6h 13m**(未達 7h 目標) + +### SpO2 夜間數值(僅參考 — OSA 篩檢已撤回 2026-06-29) + +> ⚠️ 指夾式(透射式)連續血氧證實整夜平穩、無掉氧;腕式 SpO2 掉氧為動作 artifact。不作 OSA 判讀、不觸發紅旗。 + +**今晨最低 SpO2:** —%(無資料) +**今晨日均 SpO2:** —%(無資料) + +*Sleep Score 71 尚可,但 **BB 起床值 27** 為明顯偏低(門檻 50 / 進階 65),配合 TST 6h13m → 今日以恢復為主。* + +--- + +## 昨日回顧 + +**實際飲水量:** 2.0 L(目標 ≥ 2.5L;高尿酸最佳 2.8–3.0L)⚠️ 未達標,UA 排泄效率打折 +**昨日活動消耗:** — kcal(Garmin sync 不可用) +**昨日 Na / K / Na-K ratio:** —(無飲食紀錄) + +--- + +## 身體信號 + +*任何張力、疼痛、疲勞、異常 — 或「清」。* + +| 部位 | 性質 | 強度 (0-10) | +|------|------|-------------| +| — | **清** | 0 | + +--- + +## 今日計畫速記 + +- [ ] 飲水目標:**2.8 L**(錨點 09:30 ≥1.0L / 13:30 ≥2.0L / 17:00 截止 2.5L) +- [ ] 補充品(核心,2026-05-11 v2): + - 早餐(06:00):D3 2000 IU + K2 MK-7 180 mcg + L-Citrulline 4 g + 益生菌 + - 午餐前 30 min:Psyllium 5 g + 350 mL 水 + - 晚餐前 30 min:Psyllium 5 g + 350 mL 水 + - 晚餐後:魚油 ×4(拆 18:30 ×2 + 19:30 ×2) + - 睡前(21:00):鎂甘胺酸 400 mg + 酸櫻桃 1000-2000 mg + Glycine 純粉 3 g + - 茶飲:洛神花 ×2 杯(早 + 14:00 前) + - 食物層:南瓜籽 30 g(15:30)+ 菇蕈 100-130 g/天 +- [ ] 運動(17:00 固定):**BB 27 → 降級**。阻力訓練照做但降量(RIR 2-3、組數砍 1/3),有氧只做 Zone 2 走路 30 分 +- [ ] **蛋白質今日硬目標 ≥ 130 g**(LBM 護欄已破,保肌優先) +- [ ] 活動度/伸展(09:30 + 20:30 兩次錨點) +- [ ] Wind-down(20:00 燈光降 + 螢幕濾鏡,液體截止) +- [ ] 上床 21:30 / 熄燈 22:00(TST 目標 7h+) + +--- + +## ⚠️ 本日旗標 + +1. **LBM 跌破 54 kg 護欄**(推算 53.5 kg)— 一個月空窗期間體重 −1.4 kg,其中約 **一半來自除脂體重**(−0.7 kg LBM vs −0.7 kg 脂肪)。這不是乾淨的 Recomp,是掉肌肉。**下週優先**:蛋白質 ≥130 g/天 + 阻力訓練回到週 2 次,體重不再往下追。 +2. **Body Battery 起床值 27** — 遠低於 50 門檻。今日訓練降級,觀察是否為單日或趨勢。 +3. **飲水 2.0 L 未達標** — 高尿酸體質下 UA 排泄效率降低,今日目標拉到 2.8 L。 + +--- + +💡 **PT 建議:** 身體信號「清」、BP 122/74 正常、腰圍 78 cm 進入目標區,這些都是好訊號;問題出在恢復端 —— BB 27 + TST 6h13m 代表昨夜恢復不足,今天運動照做但降強度(RIR 2-3、有氧只走 Zone 2 30 分)。真正要處理的是 LBM −0.7 kg:這一個月體重掉的有一半是肌肉,今起把蛋白質拉到 130 g/天並恢復週 2 次阻力訓練,體重停在 64.5 別再往下。 + +--- + +*Filed: reviews/daily/2026-08-29.md* diff --git a/reviews/health_dashboard.png b/reviews/health_dashboard.png index 44f14b6..09804d4 100644 Binary files a/reviews/health_dashboard.png and b/reviews/health_dashboard.png differ diff --git a/reviews/health_dashboard_weekly.png b/reviews/health_dashboard_weekly.png index 40324e2..00af897 100644 Binary files a/reviews/health_dashboard_weekly.png and b/reviews/health_dashboard_weekly.png differ diff --git a/reviews/weekly/2026-W35.md b/reviews/weekly/2026-W35.md new file mode 100644 index 0000000..f941d6a --- /dev/null +++ b/reviews/weekly/2026-W35.md @@ -0,0 +1,205 @@ +# 週回顧 — 2026-W35(2026-08-24 – 2026-08-30) + +*週日晚間填寫。10 分鐘。回顧本週,不批判,只觀察。* + +--- + +## 〇、半年計畫目標對照 + +*從 index.html 半年健康逆轉計畫提取。每週檢視自己在哪個位置。* + +> **⭐ 2026-06-08 起進入 Recomp 相位(同時增肌減脂)**:主 KPI 由「體重」改為「體組成」。**體重持平屬正常**(增肌抵銷減脂;肌酸另 +0.5~1kg 肌內水);成功判準 = 體脂率↓ + 腰圍↓ + 重訓負荷↑。詳見 `PROGRESS.md` 三、Recomp 相位切換。 + +| 指標(★=Recomp 主 KPI) | 當月目標 | 本週實際 | 差距 | +|------|----------|----------|------| +| ★ 體脂率 | 目標 ≤ 17.0% | **17.1%** | +0.1% | +| ★ 內臟脂肪 | _____ (目標 ≤ _____) | _____ | _____ | +| ★ 腰圍 WHO(週均) | < 80 cm(WHtR < 0.50) | **78 cm**(WHtR 0.459)✅ | 達標 | +| ★ 重訓負荷(漸進超負荷) | 週 2–3 次,較上週進步 | _____ | | +| 蛋白質攝取(保肌) | ~130 g/天(~2.0 g/kg) | _____ g/天 | | +| 體重(週六;參考非主 KPI) | ~65 kg 維持區 | **64.5 kg** | −0.5(band 下緣以下)| +| 收縮壓(週均) | < 130 mmHg(終極 < 125) | **122 mmHg** ✅ | | +| Sleep Score(週均) | ≥ 70(進階 ≥ 80) | **71** ✅ | | +| Body Battery 起床值(週均) | ≥ 65(進階 ≥ 75) | **27** ⚠️ | −38 | +| 每日步數(週均) | ≥ _____ 步(依階段) | _____ 步 | | +| 每週運動時間 | ≥ _____ 分鐘(依階段) | _____ 分鐘 | | + +**Recomp 相位參考(6/8 起):** +- 體重 ~65 kg 維持區(不再追低);主軸看體脂率↓ / 內臟脂肪↓ / 腰圍↓ / 重訓負荷↑ +- 阻力訓練:徒手即合格(伏地挺身 + 引體/反式划船 + **深蹲類補下肢**),漸進超負荷 + RIR 1–2 + 每肌群週 ~10 組 +- 蛋白質 ~130 g/天(~2.0 g/kg)為保肌門檻;有氧降為心血管維持 + +**半年里程碑參考(減脂期歷史,已於 6/8 收手轉維持):** +- 第 0 月 70.0 kg → 第 1 月 69.2 → 第 2 月 68.3 → 第 3 月 67.5 → 第 4 月 66.7 → 第 5 月 65.8 → 第 6 月 65.0 kg +- 運動:第 1-2 月 120-150 分/週 → 第 3-4 月 170-210 分/週 → 第 5-6 月 250-300 分/週 + +--- + +## 一、數據總覽 + +### 體重 / 體組成 / 腰圍 + +| | 一 | 二 | 三 | 四 | 五 | 六 | 日 | +|--|----|----|----|----|----|----|-----| +| 體重 (kg) | | | | | | 64.5 | | +| 體脂率 (%) | | | | | | 17.1 | | +| 內臟脂肪 | | | | | | | | +| **腰圍 WHO (cm)** | | | | | | 78 | | +| **腰圍 max (cm)** | | | | | | | | + +**本週正式讀數(週六早晨):** 64.5 kg|體脂率:17.1%|內臟脂肪:—|腰圍:78 cm +**上次正式讀數(2026-07-27,非上週;中間空窗):** 65.9 kg|體脂率:17.8%|內臟脂肪:8.5|腰圍:— cm +**體重變化:** −1.4 kg|體脂率變化:−0.7%|內臟脂肪變化:—|**腰圍變化:** — +**推算 LBM:** 54.2 → **53.5 kg(−0.7 kg)** ⚠️ 跌破 54 kg 護欄 — 減重約一半來自除脂體重 + +**腰圍週均:** 78 cm(僅 1 日讀數)(每日 7 天平均,較易受食物殘渣 / 水合狀態 / 量測時機影響,週均比單日更穩定) +**WHtR(腰圍 / 身高比,身高 170 cm):** **0.459** ✅(目標 < 0.50;理想 < 0.47 — 已達成) +**腰圍歷史 reference**:2024-12 局部低點 **74 cm** / 2025-09 高峰 **85.5 cm** / 2026-03-25 健檢 **84 cm** / 2026-05-22 自量 **83 cm** + +--- + +### 血壓(第二次讀數) + +| 日期 | 收縮壓 | 舒張壓 | 心率 | +|------|--------|--------|------| +| 08-24 (一) | | | | +| 08-25 (二) | | | | +| 08-26 (三) | | | | +| 08-27 (四) | | | | +| 08-28 (五) | | | | +| 08-29 (六) | 122 | 74 | 70 | +| 08-30 (日) | | | | + +**本週平均:** 122 / 74 mmHg,心率 70 bpm(僅 1 日讀數) + +*收縮壓週均 > 130 或舒張壓 > 85 → 標記為需關注。* + +--- + +### 睡眠 + +| 日期 | 就寢 | 起床 | 中途醒 | Sleep Score | Body Battery | 主觀恢復 | +|------|------|------|--------|-------------|--------------|----------| +| 08-24 (一) | | | | | | | +| 08-25 (二) | | | | | | | +| 08-26 (三) | | | | | | | +| 08-27 (四) | | | | | | | +| 08-28 (五) | | | | | | | +| 08-29 (六) | 122 | 74 | 70 | | | | +| 08-30 (日) | | | | | | | + +**Sleep Score 週均:** 71 / 100(僅 1 日) +**Body Battery 週均:** 27 ⚠️(僅 1 日;遠低於 ≥65 目標與 50 門檻) +**主觀恢復感週均:** — / 5(未回報) +**連續 < 65 天數:** 0 +**22:30 前就寢天數:** — / 7(Garmin sync 不可用) + +--- + +### HRV 趨勢 + +*週日填寫時執行 `python scripts/analyze_hrv_trend.py` 並貼上 markdown snippet。預設讀全部歷史;用 `--days 28` 限制近 4 週。* + + + +**本週判讀**: +- Verdict(CONFIRMED / LIKELY / WEAK / NO TREND):_____ +- 若 CONFIRMED 且 slope < −0.05 ms/night → 訓練 deload 1 週 + 熱量補回 200–300 kcal/day +- 若整體 mean < 18 ms → paced breathing 6 breaths/min × 5 min × 2/day 加上去 +- 若 OSA 治療介入後 → 期待 3 個月內回升至 25+ ms + +--- + +## 二、身體信號模式 + +*本週 Daily 中記錄的身體信號,標注出現頻率與強度變化。* + +| 信號(部位+性質) | 出現天數 | 平均強度 | 趨勢(↑↓→) | 備註 | +|-------------------|----------|----------|-------------|------| +| | | | | | + +**反覆出現(≥ 3 天):** 無 / _____ + +*同一信號連續 3 天以上 → 考慮就醫或調整訓練。* + +--- + +## 三、執行率 + +### 每日習慣 + +| 項目 | 完成天數 | 完成率 | +|------|----------|--------| +| 飲水 2.5L | / 7 | % | +| 補充品(洛神花茶 ×2 + 魚油 ×2 + D3K2 3000IU + 酸櫻桃 500mg + 鎂 400mg + Citrulline 2g + Psyllium 5g ×2) | / 7 | % | +| 運動 | / 7 | % | +| 活動度/伸展 | / 7 | % | + +### 本週運動紀錄 + +| 日期 | 運動內容(含組數/時間) | +|------|------------------------| +| | | + +### 重訓負荷追蹤(Recomp 主 KPI · 漸進超負荷) + +*菜單見 `articles/cardio-metabolic/2026-06-11-recomp-resistance-program-1x-2x.md`。每個動作填「重量 × 次數 × 組」,與上週比是否進步(↑ 加重/加次、→ 持平、↓ 退步)。RIR 1–2、不拚 1RM、不憋氣。* + +**Day A(蹲 / 水平推)— 日期:_____** + +| 動作 | 本週(重量×次×組) | 上週 | 趨勢 | +|------|------------------|------|------| +| 深蹲 / 腿推 | | | | +| 臥推 / 胸推機 | | | | +| 坐姿划船 | | | | +| 腿後勾 | | | | +| 側平舉 | | | | +| 二頭 / 三頭 | | | | + +**Day B(髖鉸鏈 / 垂直拉)— 日期:_____** + +| 動作 | 本週(重量×次×組) | 上週 | 趨勢 | +|------|------------------|------|------| +| 硬舉 / 臀推 | | | | +| 下拉 / 引體 | | | | +| 肩推 | | | | +| 分腿蹲 / 腿伸展 | | | | +| 上斜臥推 / 蝴蝶機 | | | | +| 錘式彎舉 / 過頭三頭 | | | | + +**本週判讀:** 重訓次數 _____ / 2|整體負荷趨勢(多數動作 ↑/→/↓):_____|蛋白達標天數:_____ / 7(目標 ~130 g/天) +*成功判準 = 體脂率↓ + 腰圍↓ + 重訓負荷↑(體重持平正常)。若負荷連兩週無法進步 → 查睡眠/蛋白/熱量。* + +--- + +## 四、本週觀察 + +*一句話描述本週整體狀態。不用完美,誠實就好。* + +> 一個月空窗後回來量:腰圍 78 cm 首度進入 < 80 目標區、WHtR 0.459 已優於理想線、BP 122/74 穩、身體信號清 —— 表層指標全綠。但體重 65.9 → 64.5 的 −1.4 kg 中,推算 LBM 掉了 0.7 kg(54.2 → 53.5),護欄破線。腰圍變小有一部分不是脂肪走,是肌肉走。Body Battery 27 也指向同一件事:熱量/蛋白/恢復三端同時不足。 + +--- + +## 五、下週調整 + +*根據本週觀察,列出 1–3 個具體、可執行的調整。不要列太多。* + +- [ ] **蛋白質 ≥ 130 g/天,7 天全達標**(LBM 護欄已破,這是第一優先,非選配) +- [ ] **阻力訓練恢復週 2 次(Day A / Day B)**,重點在把負荷追回空窗前水準,不追新高 +- [ ] **體重停在 64.5–65.5,不再往下**;下週六重量體脂 + 輝葉八電極(軀幹脂肪 / 分段 LBM)確認 LBM 是真跌還是 Tanita 推算誤差 + +--- + +## 六、恢復策略紀錄 + +*若本週觸發任何警報(Sleep Score < 65、身體信號 ≥ 3 天、血壓異常),記錄採取的應對措施。* + +| 警報 | 應對措施 | 效果 | +|------|----------|------| +| LBM 推算 53.5 kg(< 54 護欄) | 蛋白 ≥130 g/天 + 阻力訓練週 2 次 + 體重止跌 | 待下週六複測 | +| Body Battery 起床 27(< 50) | 當日訓練降級(RIR 2-3、有氧僅 Z2 30 min);wind-down 準時 | 待追蹤 | +| 昨日飲水 2.0 L(< 2.5 目標) | 今日目標拉至 2.8 L,17:00 前完成 70% | 待追蹤 | + +--- + +*Filed: reviews/weekly/2026-W35.md*