讓沒有被邀請的新客戶,能自己用 Email 註冊、確認信箱、綁一張卡(不扣款)就開一個 Free 機構;在打開之前,先把防濫用、監控、誰能開關的規則定好。

#257 開放自行註冊(SIGNUP_OPEN)前的守門機制

狀態
卡住
誰在做
宜芳分派
做到哪
第一個切片「模擬綁卡」已做完:PR #287 在 10/04 合併上線,放在管理台的「功能展示」裡,只有一顆「模擬綁卡成功」按鈕、沒有卡號欄位、不會建帳號或機構。真的藍新綁卡、防濫用、確認信流程、監控、開放前提清單都還沒做;SIGNUP_OPEN 仍然是 false,註冊頁照舊寫「帳號採邀請制」。
卡在
負責人。開發者在單上最新一則留言(回派負責人)列的三題還沒回:藍新特店簽約與測試金鑰、SIGNUP_OPEN 什麼時候開/誰核准、要不要一卡一帳號。另外確認信要怎麼做也還沒寫進 GitHub。藍新的串接文件與測試帳號沒拿到之前,真的綁卡做不了。
下一步
負責人回 #257 那三題,並把確認信的方向寫進單裡;藍新測試帳號到手後,由宜芳分派下一個切片(真的綁卡+確認信流程+防濫用)。
提醒:1. 「確認信不要背離業界標準」這句我在 GitHub 上找不到;照 #248 規矩第 4 條(裁決寫在 GitHub 才算數),要算數請負責人寫進 #257,所以這頁把確認信流程放在「還沒定的」。2. 現在的註冊表單其實已經寫了確認信的文案,但沒有「重寄確認信」按鈕,連結失效時只寫「連結已經失效,請重新登入」——打開前要補。3. 註冊頁的「我接受服務條款」現在點不開任何條款;#316 已定要有服務條款與免責聲明,但 repo 裡還沒有,條款沒好之前不該打開。4. 寄信:Supabase 的系統信目前走 Gmail、每小時上限 60 封(#214,10/04 讀到的);#214 還在等負責人回「同意」換 Resend,跟這張是同一條線。5. 測試方式要請開發者先講清楚:守門 hook 打的是正式站,而且本機、預覽、正式站共用同一個正式庫;本單本文寫「用 farside_dev 測試帳號跑註冊」,但走一次自行註冊一定會開一個新機構、不會落在 farside_dev 裡。要在哪裡測、測完怎麼清掉,要先講好。6. 本單本文還寫「不存卡號、只存藍新代碼」是推論,但 #248 已裁定清單已經把它列成負責人 10/02 定的;以 #248 為準。

這張要解決什麼

想試用 Slate 的新事務所負責人——還沒有帳號,也沒有人邀請他,現在註冊頁只寫「帳號採邀請制」,陌生人進不來;但如果什麼都不做就直接打開,任何人都能用不同 Email 一直開新的 Free 機構、每個領 100 點,而且開出來的帳號平台收不回去——要能 新客戶能自己註冊、確認 Email、綁卡(不扣款)後拿到一個 Free 機構開始用;負責人看得到每天有誰在註冊,出事能馬上關掉

一步一步 15 步

  1. 訪客(現況) 打開登入頁,或直接打開 /create_account
    看到「帳號採邀請制」,沒有註冊表單——因為 SIGNUP_OPEN = false。以下第 2 步之後是打開後的建議流程,順序與細節多半還待裁
    註冊頁(現況:關著)
    帳號採邀請制
    目前不開放自行註冊。請聯絡你的機構管理者為你建立帳號,收到邀請後即可登入。
  2. 訪客 在登入頁按「還沒有帳號?建立帳號」,填完註冊表單按「註冊」
    送出到 Supabase,準備建帳號
    註冊頁(打開之後)
    建立帳號
    我接受服務條款(要能點開條款全文;條款現在還沒有,#316)
    註冊
  3. 系統(守門) Supabase 建帳號之前先問守門的 hook:SIGNUP_OPEN 開了沒、有沒有踩到防濫用的門檻(要擋哪些還待裁)
    放行:建一個「Email 還沒確認」的帳號並寄確認信。擋下:註冊頁顯示錯誤,照固定格式(類型+錯誤碼,ADR-0121)
  4. 訪客 送出後看到「去信箱確認」
    知道下一步要去收信;收不到可以重寄
    確認信已寄出
    去信箱確認你的 Email
    確認信已寄到你填的 Email,請在有效期限內點信裡的按鈕(期限待裁,建議 24 小時)
    沒收到?先看垃圾郵件匣
    重寄確認信(按過要等一段時間才能再按,建議 60 秒,待裁)
    (建議)就算這個 Email 已經註冊過,也顯示同一個畫面,不透露它有沒有帳號
  5. 系統 寄確認信。Supabase 的系統信現在走 Gmail,每小時上限 60 封;要不要換成 Resend 在 #214 等負責人回
    信裡有一條只能用一次的確認連結,過了有效期就失效
  6. 訪客 打開信箱裡的確認信
    看到確認按鈕
    確認信(Email 內容)
    確認你的 Email
    你剛剛建立了帳號,按下面的按鈕完成確認
    確認 Email
    連結在有效期限內可用;如果不是你註冊的,忽略這封信就好
  7. 訪客 點信裡的確認連結
    連結有效:Email 確認完成、自動登入,帶去綁卡。過期或已經點過:顯示連結失效、不登入,給重寄
    確認結果頁(/auth/callback)
    Email 確認完成,正在帶你前往下一步…
    (失敗時)這條連結已經過期或用過了
    (失敗時)重寄確認信
  8. 訪客(還沒確認就去登入) 在登入頁輸入 Email 和密碼,按「登入」
    登不進去;提示要先確認 Email,並給重寄按鈕。這個提示要用一般說明還是照錯誤的固定格式,待裁
    登入頁(Email 還沒確認)
    登入
    這個 Email 還沒確認,請先到信箱點確認連結(文案與格式待裁)
    重寄確認信
  9. 訪客(Email 已確認,第一次登入) 進到綁卡頁,看完說明按「前往藍新綁卡」
    跳到藍新的頁面去輸入卡號
    綁卡頁
    綁一張信用卡,開始用 Free 方案
    綁卡不會扣款。我們不存卡號,只存藍新給的代碼
    Free:每月 100 點;用完會停下來提示升級,不會自動扣款
    前往藍新綁卡
  10. 訪客 在藍新的頁面輸入卡號、送出。那是藍新的畫面,不是 Slate 的,卡號不經過我們
    藍新把成功或失敗帶回 Slate
  11. 系統 收到藍新回傳的代碼:只存代碼、不存卡號。如果負責人裁定一卡一帳號,就查這張卡有沒有綁過別的帳號
    通過才往下開機構;同一張卡已經綁過就擋下(待裁)
  12. 系統 綁卡成功後開一個新機構:新的租戶、註冊的人是 admin、方案 Free;同時記一筆給監控用的紀錄(新機構、Email 網域)
    把人帶進首頁,可以開始用
    首頁(剛開好機構)
    畫布首頁(接著做、從這裡開始、全部畫布)
    機構已建立:方案 Free、本月 100 點
  13. 訪客(綁卡沒成功或按了取消) 從藍新回到 Slate
    留在綁卡頁、進不了系統,可以再試一次。「沒綁成功就不能完成註冊」是本單的推論,負責人原話只說「註冊綁信用卡」,待確認
    綁卡頁(沒成功)
    發生錯誤(類型+錯誤碼,固定格式,ADR-0121)
    再試一次
  14. 負責人 到約定的地方查:今天新開了幾個機構、各來自哪些 Email 網域。第一版用正式站日誌,不做新畫面;確切去哪裡查要寫進本單
    有數字可以決定要不要打開、或打開後要不要緊急關掉
  15. 負責人+開發者 要打開或緊急關掉註冊、或調防濫用門檻:改程式碼裡的常數,走一般 PR、合併上線。誰能核准打開,待裁
    關掉之後,註冊頁回到「帳號採邀請制」,守門 hook 一律拒絕新的註冊

已經定的 17 條

還沒定的 12 題

用 Email 註冊,要不要點確認信才算完成?(宜芳問的)
  • 甲:照業界標準——寄確認信,點了才算完成,沒確認不能登入
  • 乙:不用確認信,註冊完馬上能用
  • 丙:改用登入連結(magic link),不設密碼
建議:建議(待裁):甲。負責人的方向是「不要背離業界標準作法」,但這句還沒寫進 GitHub,所以還不算定案。現在的註冊表單其實已經照甲寫好「確認信已寄到…」的文案,登入也只有 Email+密碼;而且先確認 Email 再綁卡,可以擋掉用假信箱大量試卡
誰裁:負責人
確認信的細節:連結多久失效?重寄要隔多久?一直沒確認的帳號要不要清掉?
  • 有效期:1 小時/24 小時
  • 重寄:隔 60 秒才能再按,另設每小時上限
  • 沒確認的帳號:7 天後刪除/不刪
建議:建議(待裁):連結 24 小時、重寄隔 60 秒、7 天沒確認就刪。實際能設到多少,要開發者先讀一次 Supabase 現在的設定再定
誰裁:負責人(宜芳可以先擬)
「Email 還沒確認就登入」和「確認連結過期」這兩種,要顯示一般說明+重寄按鈕,還是照 ADR-0121 只顯示固定格式的錯誤?
  • 一般說明+重寄按鈕(業界做法)
  • 照 ADR-0121:發生錯誤+類型+錯誤碼,不寫原因
建議:建議(待裁):這兩種是在告訴使用者「下一步要做什麼」,不是系統出錯,用一般說明+重寄按鈕。但 ADR-0121 決策一講的是錯誤一律固定格式,算不算例外要負責人說;沒說之前照舊規
誰裁:負責人
綁卡放在哪一步?沒綁成功能不能完成註冊?
  • 確認 Email → 綁卡 → 才開機構;沒綁成功進不去
  • 先開機構,綁卡之前功能鎖住
  • 綁卡失敗也讓他進來,之後再補
建議:建議(待裁):第一個。「沒綁成功就不能完成註冊」是本單本文的推論,負責人原話只有「註冊綁信用卡」
誰裁:負責人
誰決定什麼時候把 SIGNUP_OPEN 打開?
  • 負責人每次親自核准
  • 定一份前提清單,全部打勾後團隊可以自己開
建議:開發者在 #257 回派留言裡建議:維持 false,直到藍新串接完成、並通過一次真的驗收;核准流程寫進 docs/runbook.md
誰裁:負責人
藍新的特店簽約、定期定額手續費率、Sandbox 測試金鑰,由誰去拿、什麼時候?
  • 負責人推進商務簽約並申請測試金鑰
建議:開發者在 #257 回派留言裡建議由負責人推進(合約與金鑰開發者不能代簽代申請)。拿到之前,真的綁卡與瀏覽器實測都做不了
誰裁:負責人
防濫用要不要做「一張卡只能綁一個帳號」(卡片去重)?
  • 納入第一版的候選
  • 不納入
建議:開發者在 #257 回派留言裡建議納入候選,門檻值跟開放時機一起裁。10/02 的設計審查三個懷疑者都確認原本的候選清單漏了這一項,只靠速率限制或 CAPTCHA 擋不住同一張卡重複註冊
誰裁:負責人
除了綁卡,還要不要再疊其他防濫用手段?
  • 速率限制(同一個 Email 網域或同一台裝置,一段時間內限量)
  • 人機驗證(CAPTCHA)
  • 手機號碼驗證
  • 只靠綁卡+一卡一帳號
建議:還沒有人給最終建議。設計審查提醒兩件事:手機驗證是原本 Free 賠錢試算的前提,不要沒裁就被綁卡取代;綁卡的入口本身也要限速,免得被拿去試盜刷的卡
誰裁:負責人
打開之前,要不要先把系統寄信從 Gmail 換成 Resend?
  • 同意換 Resend
  • 維持 Gmail
建議:#214 開發者建議同意。現在 Gmail 每小時上限 60 封,一打開註冊,確認信會跟忘記密碼信共用這個額度。這題在 #214 回
誰裁:負責人
平台要不要有「停用整個機構」的入口、誰能按?「不新增平台全域管理角色」要不要變成正式裁決?
  • 打開之前先做
  • 先接受用 Supabase 後台手動處理
建議:本單只把它列成待裁問題,不實作。「不新增平台全域管理角色」目前只是一份探索文件裡的候選限制,不是裁決
誰裁:負責人
打開之前,要不要等「機構成員停用/恢復」(ADR-0081、#240 第二階段)做好?
  • 等做好才打開
  • 不用等
建議:本單本文的看法:設計不用等,只有「真的打開」這最後一步可能要等
誰裁:負責人
Free 的 100 點什麼時候從「只監控」變成真的擋?
  • 打開註冊之前就要擋
  • 打開之後再接
建議:#326 已定帳本先做監控、扣點等 #254/#260/#256 的數字都定了再開。如果打開註冊時還是只監控,「一直開 Free 帳號」這個洞就是開著的。這題跟 #243 一起裁
誰裁:負責人

怎麼驗收 13 項

這張不做

相關的單