風城 · STYLE C

hclane新竹

教練的泳池預約,輕風裡安排好

自潛 / 人魚教練自動化代訂系統。把繁瑣登泳池系統、看檔期、選水道、下訂的流程,化作一頁日曆,五指可控。

CFA Gmail 登入 Notion 後端 Cloudflare Pages 半自動下訂 即時同步

系統概念

新竹自潛、人魚教練每次訂池,要登入泳池方系統、看檔期、選水道、下訂——五個教練各做一輪。hclane 把這流程合成一張日曆:同步檔期、衝突檢查、最後一步由教練親手 click 確認送出。

整體拓樸

前端、後端、資料層 — 三段相連,像風吹過水道。

前 端
登入頁CFA
Dashboard 教練主頁
日曆檢視 所有泳池檔期
預約管理 我的預約
後 端
/api/authCFA
/api/sync 抓泳池檔期
/api/booking 衝突檢查 · 下訂
/api/credentials 教練泳池帳號
資料 · 外部
Notion 五張資料表
泳池方系統外部
CF KV session 快取
CFA Gmail SSO

資料模型

五張 Notion 資料表:教練、憑證、泳池、檔期、預約。

Coaches
  • nametitle
  • emailemail
  • specialtyselect
  • credentials_refrelation
PoolCredentials
  • coachrelation
  • poolrelation
  • enc_sessiontext
  • expires_atdate
Pools
  • nametitle
  • system_urlurl
  • login_typeselect
  • lane_countnumber
Slots
  • poolrelation
  • date_timedate
  • lanenumber
  • statusselect
  • source_idtext
Bookings
  • coachrelation
  • slotrelation
  • purposeselect
  • statusselect
  • pool_booking_idtext

核心流程

教練第一次使用 → 連結泳池帳號 → 看檔期 → 下訂,五個步驟一氣呵成。

1 登入 教練在 hclane 用 Cloudflare Access 觸發 Gmail SSO,後端建立 / 取回 Coach 紀錄。 CFA · /api/auth
2 連結泳池帳號 教練到設定點「連結 OO 泳池」→ 彈出泳池方登入頁 → 後端攔截 session cookies → 加密寫入 PoolCredentials。 /api/credentials/link
3 同步檔期 打開 dashboard 即觸發同步(60 秒節流),用教練 session 撈泳池系統檔期,寫入 Slots。 /api/sync · 60s 節流
4 選時段 + 衝突檢查 教練在日曆挑時段 → 後端鎖 Slot(pending)→ 確認沒有其他 Booking 衝突。 /api/booking/reserve
5 半自動下訂 後端 Playwright 用教練 cookies 填好表單 → 截圖預覽 → 教練在 hclane click「確認送出」→ 寫回 pool_booking_id。 /api/booking/submit