實作文章
Cursor 兩個月實戰連載(5/6):加功能與通知:上傳、安全、Email、WhatsApp 通關
連載導讀:上一篇:最小完整流程 · 下一篇:兩個月回望
第 4 篇 跑通登入、派功課、交功課之後,功能清單會湧出來:上傳、防刷、Email、批改列表、WhatsApp……每一樣都合理,但唔可以同一週做晒。呢篇講排優先、點驗收,同 5 月下旬 WhatsApp 官方通道點樣通關。
實際次序如下(按開發先後,唔使背日期):5 月中旬 先上 Turnstile、Magic Link 同教師端基本 API;5 月中下旬 補管理員後台、速率限制、上傳驗證、繳交列表同 Email 發布通知;5 月下旬 先做 R2 預簽名直傳同繳交版本歷程(減 Worker 頻寬),再接 WhatsApp 測試號端到端。
排優先:風險 × 用戶價值
先問冇咗會唔會成個系統唔成立,再問會唔會被人刷到爆,最後先問靚唔靚同渠道多唔多。
- 檔案上傳 + 老師睇繳交列表(冇就唔叫交功課系統)
- 人機驗證(Turnstile) + 請求次數限制
- 發布作業 Email(學生唔會自己開網站睇)
- 列表分頁、批改(人少嗰陣可後做)
- 瀏覽器直傳雲端、進階防火牆等(成本高,後做)
- WhatsApp 作業通知(上傳同 Email 行穩先做)
檔案上傳:先通,再優化
第一版由網站伺服器收檔:確認已登入 → 存入 Cloudflare R2(雲端儲存)→ 寫入資料庫;下載唔用公開連結,要驗權限。我曾諗過俾瀏覽器直傳雲端慳伺服器流量,第一版唔換:易驗收、易改。5 月下旬 先改做 R2 預簽名直傳 加繳交版本歷程,因為當時已經有真實上傳,先至值得優化頻寬。
驗收三層:學生上傳成功、資料庫多一筆紀錄;老師下載到同一檔;學生 B 下載唔到學生 A 嘅檔。
Cursor 對話情境:上傳第一次失敗
學生上傳檔案失敗。
請只查上傳相關程式同雲端儲存綁定設定。
限制:唔改登入;唔改 WhatsApp。
驗收:本機上傳一個 PDF,資料庫有繳交紀錄。
安全:人機驗證、限流
Cloudflare Turnstile 正式環境建議開;公開金鑰同密鑰要成對。交功課站用資料庫自己數請求次數(唔搶免費防火牆配額,詳見專案文件)。Bot Fight 誤傷真人提交,主站預約嗰輪已踩過(第 3 篇),交功課站開防護後要再試真人上傳。
驗收:短時間狂試登入會被擋;正常上傳一個檔唔應被擋。
Cursor 對話情境:正式站睇唔到驗證方塊
本機登入頁有人機驗證;正式站冇出現。
請列正式站要齊嘅公開金鑰同密鑰。
限制:唔改登入流程;可改錯誤提示同說明文件。
Email:發布作業通知
老師第一次發布新作業時,用 Resend 寄通知;標題會用學生顯示名稱個人化。發布成功唔可以被寄信失敗拖死;寄信失敗只記錄,唔阻擋發布。改截止日期唔再寄,避免洗版。
驗收:發布後系統顯示已寄出;測試信箱收到個人化標題。
Cursor 對話情境:寄信失敗唔好阻擋發布
目標:老師發布後 Email 通知同班學生。
限制:唔改 WhatsApp;寄信失敗唔好阻擋發布。
驗收:發布仍成功;有寄出紀錄。
請只改發布通知相關檔案(列出具體檔名)。
老師後台:列表同批改
5 月中下旬加咗繳交列表(分頁)、分數與評語、刪除權限分老師同管理員。加功能時講清楚改邊部分、預期成功或拒絕,唔順手改無關檔案。
WhatsApp 作業通知通關
5 月下旬有一晚,我喺房入面差啲叫出聲。
測試號 WhatsApp 彈出「【作業通知】……老師已發布新作業……」;瀏覽器開發者工具見到 WhatsApp 已寄出。官方 Meta 通道通咗,個人化稱呼啱;同 Email 一樣,寄唔出都唔會阻擋老師發布。
5 月中旬至下旬,上傳同 Email 通知行緊之後,我先做 WhatsApp 通知功能:用測試用 WhatsApp 商業帳戶送審範本(五個欄位、香港繁體),程式已接好,但端到端未通。詳細設定見交功課站專案內嘅 WhatsApp 設定說明。
由失敗到寄出成功
第一輪失敗:Meta 話驗證失敗。原來係 通行碼(access token)複製錯(兩段黐成一行)同過期;去 Meta 後台重新產生、確保設定檔只得一行,重開本機預覽。
第二個坑:本機同時開兩個預覽網址(例如一個 4321、一個 4322),登入設定指住 A、瀏覽器開住 B,以為登入壞咗,其實係環境分裂。停晒舊程序,只留一個。
再試當晚:學員已同意接收、電話用 +852… 國際格式、測試號喺 Meta 白名單;新建並發布新作業(只改舊作業唔會再發通知)。手機收到測試號訊息,開發者工具見 Email 同 WhatsApp 都寄出成功。通關之後我喺工作筆記寫低:作業發布 WhatsApp 通知、五個欄位個人化、學員同意接收。之後每次大改動前會先寫一句目標,方便幾星期後搵返當時諗乜。
graph.facebook.com 係乜
Meta 俾開發者用嘅官方 API 網址:交功課站透過佢請 Meta 代發已審批範本,唔係用私人 WhatsApp 號碼手動傳字。若你之後都要接類似通知,後台同伺服器設定至少要對齊四項:商業帳戶、電話編號 ID、範本名字、範本語言(差一項都會驗證失敗)。通行碼(access token) 多數只有短期有效期,過期要去 Meta 後台重新產生並更新設定;亦唔應貼去 Slack 或 WhatsApp 群組,更唔好放進公開 GitHub 專案。
範本五個欄位:Meta 易拒絕嘅位
內文 唔可以純變數開頭或結尾,所以要固定【作業通知】同免責句:
【作業通知】
{{1}}學員,您好
{{2}}老師已發布新作業「{{3}}」。
{{4}}
請按此開啟作業:{{5}}
此訊息為系統通知,請勿直接回覆。
範本綁定商業帳戶;換帳戶要重建範本。審批用假資料,唔好用真學生電話。
Cursor 對話情境:範本紅字過唔過審
Meta 範本編輯器紅字:變數不得位於開頭或結尾。
請根據交功課站 WhatsApp 設定說明寫一版可提交全文。
限制:唔改程式入面五個欄位嘅順序。
端到端驗收(改通行碼後建議重跑)
- 用 Meta 後台或文件內自測步驟確認通行碼有效(唔好貼去聊天)
- 本機只留一個預覽網址,登入設定同瀏覽器一致
- 學員同意接收、電話格式正確、同班;測試號加白名單
- 新建並發布新作業
- 開發者工具見 WhatsApp 寄出成功;手機收到
常見問題速查
| 現象 | 多數原因 |
|---|---|
| 驗證失敗 | 通行碼格式錯或過期 |
| 搵唔到範本 | 未審批通過,或電話編號唔同商業帳戶 |
| 無收件人 | 未同意接收、電話格式錯、非測試白名單 |
| 仍驗證失敗 | 本機雙網址/登入設定同瀏覽器唔一致 |
Cursor 對話情境:驗證失敗點查
WhatsApp 發布失敗,Meta 話驗證失敗。
請只列:設定檔格式檢查、通行碼自測步驟、重開本機預覽。
限制:唔改「Email 同 WhatsApp 平行、失敗唔阻擋發布」。
下一階段
換商業號、正式站設 WhatsApp 相關設定、連結改正式域名。本機測試通關係可回歸基線;正式站刻意未開,避免誤發。
加功能時點同 Cursor 講
沿用 第 4 篇 講範圍嘅方式:目標一句、限制、驗收、指明相關檔案。上線前跑檢查同部署,對照專案說明:正式資料庫同線上設定有冇齊。
本篇小結
上傳同列表最優先;人機驗證同限流守門;Email 同 WhatsApp 平行、寄唔出都唔拖死發布。5 月下旬本機測試號跑通 WhatsApp;通關靠範本規則、通行碼一行、本機只得一個預覽網址。
下一篇預告
第 6 篇 總結兩個月:邊啲做法值得保留、邊啲唔使自責。
常見問題 FAQ
跑通登入之後,加功能應該按乜次序?
先上傳同老師繳交列表,再開 Turnstile 同限流,之後做 Email 發布通知;WhatsApp 放最後。上傳第一版經網站伺服器收檔(易驗登入同寫入資料庫),有真實流量先至值得改 R2 預簽名直傳。
作業通知用 Email 定 WhatsApp?寄唔出點算?
第一版 Email 夠;WhatsApp 係加分。兩條渠道平行,任何一方寄唔出都唔會阻擋老師發布,只記錄失敗。
WhatsApp 作業通知點解要用官方範本?
graph.facebook.com 係 Meta 官方入口,唔可以隨便發自由文字;要用事先審批範本、商業帳戶、通行碼,學生亦要同意接收並填國際格式電話。正式上線前要換商業號、範本同步、登入網址改正式域名。
About me
你好,我係阿丸。呢度以數位主權為核心,分享點樣用 AI 幫手整網頁、建立吸客贈品頁、整理內容同上線作品, 目標係幫你用更短時間把內容同網站做成可帶走、可維護嘅自有資產。
我會持續更新可跟做嘅教學、踩坑記錄同流程模板,等你唔使被平台黑盒綁死,亦唔使再由零重複試錯。
同時呢度會多寫一人公司最常遇到嘅訂閱制現實:工具加價、用量隱形成本、平台綁定風險, 同埋點樣用可執行嘅做法,將名單、主站同漏斗慢慢揸返喺自己手度。
你會見到嘅內容包括:支出檢視框架、用量上限與警報、搬遷前準備同主權策略;目標唔係一夜換晒工具, 而係先止血,再建立長期可維護嘅自有資產。
想先攞可跟做模板同檢查清單?
先由免費吸客贈品包開始,將文章做法變成你可即用嘅落地清單,再按需要對照服務範圍安排下一步。
想睇合作模式同交付範圍,可先睇服務與合作方式。