STYLE_A · DARK_TECH

hclane

新竹泳池預約系統 · 教練自動化代訂 · v0.1-preview

CFA Gmail Auth Notion API CF Pages Functions 半自動下訂 即時同步

01 系統概念

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

02 整體拓樸

三層架構:Frontend ↔ Backend ↔ 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

03 Notion 資料模型

五張 DB · 教練、憑證、泳池、檔期、預約

Coaches
  • name title
  • email email
  • specialty select
  • credentials_ref relation
PoolCredentials
  • coach relation
  • pool relation
  • enc_session text
  • expires_at date
Pools
  • name title
  • system_url url
  • login_type select
  • lane_count number
Slots
  • pool relation
  • date_time date
  • lane number
  • status select
  • source_id text
Bookings
  • coach relation
  • slot relation
  • purpose select
  • status select
  • pool_booking_id text

04 核心流程

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

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