STYLE D · AQUA POOL

hclane

新竹泳池預約系統 · 教練自動化代訂

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

1系統概念

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

2整體拓樸

前端 ↔ 後端 ↔ Notion + 泳池系統,三層架構像水流。

Frontend
登入頁CFA
Dashboard 教練主頁
日曆檢視 所有檔期
預約管理 我的預約
Backend
/api/authCFA
/api/sync 抓檔期
/api/booking 衝突 + 下訂
/api/credentials 教練泳池帳號
Data · External
Notion 5 DBs
泳池方系統EXT
CF KV session cache
CFA Gmail SSO

3Notion 資料模型

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

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

4核心流程

教練第一次使用 → 連結泳池帳號 → 看檔期 → 下訂

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