iT邦幫忙

2026 iThome 鐵人賽

DAY 20
0
Modern Web

教練看不到的那六天|從 FIT 檔到 3D 軌跡,馬拉松訓練資料 Dashboard系列 第 20

Day 20|第二階段驗收:把訓練週報拿給教練看之後

  • 分享至 

  • xImage
  •  

第二階段的目標在第一天就提到:讓這些資料變成教練看得懂的東西。

又一個十天過去,我們完成了—課表進到系統、助教有知識底子、算出達成率、紀錄當下狀態、提供週報傳送、回答有邊界規則。

今天要來驗收!


先看整條線長什麼樣

https://ithelp.ithome.com.tw/upload/images/20260905/201835984GnJHnqJtX.png

四個來源,格式完全不同:Garmin 給 JSON、體重機廣播 13 bytes、Notion 是巢狀 block、教練課表是 LINE 記事本裡的圖片

大部分先變成訓練紀錄(coach/logs/*.md),再由 parse_logs.py 轉成 sessions.jsonweights.json

只有負荷曲線例外:TRIMP 要的是每筆活動的平均心率和時長,那是紀錄裡沒有的欄位,所以 trimp.py 直接去打 Garmin API。


紀錄裡沒有的東西

那份 8/25 的訓練紀錄有 41 行——地點時間、暖身分圈、主課表、單圈明細、收操、備註分析、下次調整建議。

而「跑到第三趟覺得吃不消」這件事,41 行裡一行都沒有。

備註寫的是:

縮短單組距離(1600m → 1000/800m)換來快 6–7 秒/400m 的配速,是合理的區塊推進

一個從數字反推出來的解釋,而且方向是反的—那不是計畫中的推進,是當下撐不住。

9/3 跑 1B 也一樣,紀錄裡沒有。

兩件事都是後來自己主動紀錄,才補進去的。

然後我把週報拿給教練看

上課的時候直接開手機給他看那份 8/24–8/30 的週報。

教練看完,講了兩件事。

第一件:8/25 那天課表開 1000m×5~6,我跑到第三趟吃不消、後三趟自己改成 800m—他說這樣調整沒問題。

Day 16 才幫它做了 自述 欄位,Day 18 把它印在報告上,如果沒有那一行,教練看到的只會是「趟數 5/5、配速 5/5」,他不會知道有什麼好評論的。

第二件,是我沒預料到的:

下次想嘗試 1A 速度的時候,先用體感判斷這個速度能不能跑完預定的距離。
如果不行,維持一樣的距離,把速度降下來。


這句話跟報告上的數字是反的

8/25 那天我做的取捨是:保住配速,砍掉距離。

五組全部落在 1A 四區帶內(1:37.6 / 1:37.6 / 1:37.9 / 1:37.9 / 1:34.4),報告上寫著「達標」,趟數 5/5、配速 5/5。兩個數字都在目標內。

而教練要的優先序是相反的:距離 > 速度。

跑不動就把速度降下來,但距離要跑完。

所以那天正確的做法應該是五趟 1000m 全部跑完,配速掉到 1B 也沒關係—那在我的報告上會變成「配速對 1A 0/5」,一個看起來很難看的數字。

我的儀表板會把那個判斷評為失敗。


所以達成率一直少了一個維度

Day 15 那篇的結論是「達成率至少要兩個數字」—對 1A 一個、對當天實際跑的那一組一個。

現在看,那還是不夠。因為那兩個數字都在講配速,而課表其實有兩個可以妥協的維度:

8/25 我的選擇 教練說的
配速 守住 可以放掉
距離 砍掉 要守住

報告只把「守住配速」算成達標,因為那是我寫程式時預設的優先序。 而那個預設從來沒有人跟教練確認過—是自己預設的。


誠實盤點:沒做到的

① 教練其實看不到儀表板。

整個第二階段在做「給教練看的東西」,而他唯一看得到的是那個 HTML 檔。儀表板跑在 localhost:5173,沒有部署—上課現場我拿的是手機裡的檔案,不是網址。

② 重訓不在負荷曲線裡。

Day 17 講過,結構性的:沒戴錶就沒有心率。而 Garmin 官方的 Training Load 也是同一個邊界。這一週五天有訓練,兩天是重訓,所以「總負荷 TRIMP」涵蓋的是五天裡的三天。

③ 週報把重訓那天的 TRIMP 顯示成 0—這項今天修掉了。

0 的意思是做了但負荷為零,正確的意思應該是「這個模型看不到」,Day 18 時有提及這個問題。

現在那兩天顯示 ,統計卡也把分母標出來:「總負荷 TRIMP(3/5 天)」,而不是讓一個看起來涵蓋整週的數字站在那裡。底下補充了:

本週 5 天有訓練,其中 2 天算不進去(重訓沒戴錶)—
那幾天標的是「—」不是 0,0 代表沒練,「—」代表這個模型看不到

五項裡只有這項當場改得動,其他四項都不是改程式能解決的。

④ 教練課表還是人工搬運。

Day 13 提到這是目前還要人工搬運的一段,二十天後仍然是這個情況,存圖、轉傳到 Telegram,這兩步沒有自動化的可能,因為課表在 LINE 記事本裡。


這十天真正學到的

回頭看,第二階段每一篇的錯誤形狀都一樣。

Day 我以為 實際
14 餵好資料就能有好助教 輸出的可信度上限,就是輸入的可信度
15 達成率是算出來的 先要決定用什麼標準
16 把話存進 markdown 就夠了 結構化那層還是沒有欄位
17 資料不夠以為要再等 資料一直都在,是沒主動使用
18 週報就是儀表板多開一頁 對方打不開網址且那頁下週會變成下週
19 加一句免責聲明就安全 它會一邊聲明,一邊給你瞎編的數字

我以的事實,其實都只是我的預設

今天教練的回應也是同一件事,差別在於,前面幾次都是我自己撞到才發現,這次是有人看了我做的內容,然後給了回饋。


明天:進入第三階段

Day 1 我們提及:

▎ AI 取代不了能一下就看出跑步姿勢有沒有問題的教練,這個專案做的是橋樑。

資料管線完工,橋樑也搭起來,接下來要處理的是過去的比賽—那些完賽後保存下來的檔案。

明天開始講全馬復盤:分段配速、心率漂移、撞牆點,素材是過去跑過的全馬資料。



上一篇
Day 19|安全邊界:問 AI 助教五個不該問的問題
下一篇
Day 21|六場全馬疊在一起:七萬多個點要怎麼畫
系列文
教練看不到的那六天|從 FIT 檔到 3D 軌跡,馬拉松訓練資料 Dashboard24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言