RACE DAY
隱私權政策
跑步教練 · 更新日期:2026年11月10日
跑步教練是個人興趣製作的網頁應用(PWA),用來記錄跑步、估計體能並安排課表。這不是商業服務,不向使用者收費。使用前記得先建立帳號。每個帳號的紀錄彼此分開。
帳號
註冊使用電子郵件和密碼。密碼以 PBKDF2-SHA256 加每個人自己的鹽值雜湊後存在 Cloudflare D1,不保存密碼原文。登入後這台裝置會保持登入:瀏覽器只留一組隨機工作階段權杖,伺服器只存它的雜湊,大約 400 天後到期。登出會廢掉這台裝置的權杖。變更密碼會廢掉其他裝置的權杖,這台保持登入。
顯示名稱可以自己改。別人在社群裡看到的是顯示名稱,不是電子郵件。
會同步到帳號的資料
登入之後,下面這些資料會經由 HTTPS 存到 run-app-api 的 D1,所以換手機登入同一個帳號還在。這台瀏覽器也留一份,方便離線查看。上傳成功之前,不會清掉這台手機上原本的紀錄。
- 跑步紀錄:日期、距離、時間、平均心率、備註、來源。
- 你選擇上傳的 Garmin 匯出檔(Activities.csv、GPX 或 FIT)在這台瀏覽器解析後的活動。
- 比賽成績、訓練目標、課表勾選,以及你在社群寫的下週計畫。
問教練的對話只留在這次開啟的頁面,不會寫進帳號。你有沒有同意把 Garmin 紀錄附進教練問答,也只存在這台裝置,預設是關閉,不會跟著帳號同步。
公開成績(預設關閉)
每個人自己決定要不要公開跑步成績,預設是關閉。關閉時,別人看不到你的動態、週跑量與配速,你也看不到其他人的。打開之後,只看得到同樣選擇公開的人。關掉會立刻生效,你的動態會馬上從別人的畫面消失。我們不會把電子郵件或未公開的紀錄放進社群。
AI 教練(每次都要你按送出)
「教練」頁的問答是選用功能。只有你按下「送出」時,瀏覽器才會把該次問題,以及回答所需的活動上下文,以 HTTPS POST 送到另一個 Cloudflare Worker(run-app-coach.helloajchu.workers.dev/chat)。那個 Worker 跟帳號 Worker 是分開的。回覆由 Anthropic 的模型產生。上下文來自你這個帳號裡的紀錄、比賽成績、目標與課表。來源標記為 Garmin 的紀錄預設不附上。
AI 透明度聲明
- 問教練不是自動執行。不按「送出」就不會把紀錄送到教練 Worker。
- 若你在「紀錄」勾選「我同意之後問教練時附上來源為 Garmin 的紀錄」,之後在這台裝置上的問答才會帶上那些紀錄。取消勾選立即生效。這項同意存在這台瀏覽器,預設是關閉,不會同步到別的裝置。
- Garmin 活動以及由它算出的內容,不會被我們用來訓練、評估或改進任何模型,也不會出售或交給資料仲介。我們不授權他人用這些資料訓練模型。
- Anthropic 只在你按下送出的那一次收到該次問題與上下文,用來產生回覆。Anthropic 的 API 金鑰只在教練 Worker 的秘密設定,不在這個網頁裡。
Garmin 連線
「連結 Garmin」使用 OAuth 2.0 PKCE。授權完成後,access token、refresh token 和 Garmin 使用者編號存在你的帳號(D1 的 garmin_oauth),不在瀏覽器裡。所以同一個帳號換一台手機登入,會直接顯示已連結,並把已經推進來的跑步拉下來,不用重新授權。只保留跑步活動。推送網址維持 https://run-app-api.helloajchu.workers.dev/garmin/push。Starter 方案只推送連結之後新上傳的活動,不會補連結前的歷史。解除連結會要求 Worker 通知 Garmin 解除登記,並刪掉這個帳號上的權杖。
Garmin 的 client id 與 client secret 只放在 Worker 的秘密設定,不在這個網頁裡。
誰會碰到資料
- GitHub Pages:託管這個靜態網站與圖示。它收到的是網頁檔案,不是你的密碼或跑步紀錄。
- Cloudflare:帳號、同步的訓練資料、公開動態與 Garmin 權杖存在 run-app-api 與 D1。教練問答的 Worker(run-app-coach)只在你按送出時收到該次內容。
- Anthropic:只在你按送出時,經由教練 Worker 產生回覆。見上面的透明度聲明。
- Garmin:只有在你於他們的頁面完成授權後,才會依該次同意把新的跑步活動推送到上面的網址。
- 其他公開的跑者:只有在你把成績設成公開時,才看得到你的顯示名稱、動態、週跑量與配速。他們看不到你的電子郵件,也看不到未公開的單筆紀錄全文。
我們不出售資料
我們不出售個人資料,也不把你的跑步紀錄或 Garmin 活動賣給第三方,不用於廣告或資料仲介。
你的控制
- 查看與更正:紀錄列表可以編輯每一筆跑步。顯示名稱、公開開關、密碼都可以在社群頁改。
- 匯出:教練頁的「匯出 JSON」會下載這台瀏覽器裡的紀錄、比賽與目標。
- 刪除單筆,或在教練頁「清除全部」。清除會一併刪掉帳號裡的訓練資料,不會刪掉帳號本身。
- 登出:廢掉這台裝置的登入,並清掉這台裝置上已同步的訓練快取。還沒匯入成功的舊紀錄會留到匯入成功,或直到你清掉這個網站的瀏覽器資料。
- 刪除帳號:需要再輸入密碼。會刪掉帳號、雲端紀錄、工作階段和 Garmin 連結。
- 撤回 Garmin 同意:取消「附上 Garmin 紀錄」勾選,之後在這台裝置的教練問答就不再附上。「解除連結」會請 Worker 呼叫 Garmin 的解除登記並刪掉伺服器上的權杖。
聯絡
對這份政策或資料處理有問題,請寄到 helloajchu@gmail.com。