新建檔捐者:現場填手機+捐髓卡號,配對時用卡號查
結論先講:LINE 只負責「配對到時找得到人」,掛在原有登記流程旁邊,可有可無。捐者在登記現場按「允許」、看過個資告知,填手機(收簡訊驗證碼)和捐髓卡號就完成。我們的系統不接中心資料庫;配對到時,承辦用卡號查,有綁 LINE 就發通知。LINE 帳號容易被盜,所以看完整資料也要先過驗證碼;要改資料或換 LINE 帳號,一律打電話給中心。
四句話結論
- 捐者只填手機和捐髓卡號,不填身分證、生日;手機要收簡訊驗證碼,當場確認是他的、也沒打錯。
- 我們的系統不接中心資料庫,資料不和內部資料混在一起;配對到時承辦用卡號查,對一下手機,按「發 LINE 通知」。
- LINE 帳號容易被盜:平常只顯示遮罩資料,看完整資料要先過驗證碼;改資料、換 LINE 帳號、解除綁定,一律打電話給中心。
- LINE 本身只能群發或一對一聊天;要做到「用卡號找到那一位、只通知他」,必須有地方記下卡號和 LINE 帳號的對應,這就是要自己架後端的原因。
整體流程
左邊是原本就有的流程,不變;虛線是可有可無的 LINE。兩邊只在「配對到了」那一刻碰頭。
flowchart TD F([填登記表
電子或紙本]) --> K[發骨髓捐髓卡
唯一碼浮雕] K --> B[抽血] B --> J[中心建檔
照原本流程] J --> W[等待配對
可能好幾年] K -. 可有可無
現場、志工在旁 .-> L1[掃 QR 加 LINE 好友
按「允許」] L1 --> L2[個資告知
按同意] L2 --> L3[填手機
收簡訊驗證碼] L3 --> L4[填捐髓卡號
送出前再看一次] L4 --> D[(我們的系統
LINE+已驗證手機+卡號)] W --> E{配對到了
承辦用卡號查} D -. 查詢 .-> E E -- 有綁 LINE
手機也和中心資料一樣 --> N([發 LINE 通知
請與中心聯絡]) E -- 查不到
或手機不一樣 --> T([照原本方式聯絡]) class L3,D,E key class F,N,T term
為什麼要自己架後端
核心需求是「配對到時,只通知那一位」。LINE 本身做不到把卡號對到某個 LINE 帳號。
LINE 要發訊息給特定一個人,必須用他的 LINE 內部編號(user ID)指定。這個編號只有程式拿得到:好友加入或傳訊息時,LINE 把通知送到我們的伺服器,編號就在裡面。而且編號本身看不出是誰。
所以一定要有一個程式,在捐者填卡號那一刻,把「卡號、手機 ↔ LINE 編號」記下來。配對到時,承辦用卡號一查就找到那個編號,只發給他一個人。這個程式就是後端。
這個後端很小,只做三件事:記下對應、讓捐者看自己填的資料、讓承辦查詢和發通知。資料放在單位自己的主機,不留在 LINE,也不和中心內部資料庫混在一起。
| 做法 | 能只通知那一位嗎 | 結論 |
|---|---|---|
| 只用 LINE 官方帳號後台(不寫程式) | 只能群發或依標籤分群發;要找到某一位,得靠承辦在聊天室一位一位手動貼標籤,卡號也會留在 LINE 上 | 不符合 |
| Google 表單收卡號和手機 | 不行:表單不知道填的人是哪個 LINE 帳號,配對到時還是發不出去 | 不符合 |
| LINE 通知型訊息(用手機號碼直接發) | 可以,不用記 LINE 編號;但要以單位名義向 LINE 申請、按則計費,捐者換號碼就收不到 | 日後選項 |
| 自己架後端(本案) | 可以:用卡號查到 LINE 編號,只發給他;換號碼也不影響 | 建議 |
每個階段誰在做什麼
捐者只做 ②~⑤,大約兩分鐘;之後有事打電話。
| 階段 | 什麼時候 | 誰 | 做什麼 | 系統記下 |
|---|---|---|---|---|
| ① 填表、發卡 | 登記當天 | 志工、捐者 | 照原本流程 | 不經過這套系統 |
| ② 加 LINE | 拿到卡後、抽血前(現場) | 捐者(志工在旁) | 掃 QR 加好友,在 LINE 登入畫面按「允許」 | LINE 帳號 |
| ③ 個資告知 | 同上 | 捐者 | 看說明,按同意 | 同意時間 |
| ④ 驗手機 | 同上 | 捐者 | 填登記表上的手機,輸入收到的簡訊驗證碼 | 已驗證的手機 |
| ⑤ 填卡號 | 同上 | 捐者 | 照捐髓卡輸入唯一碼,送出前再看一次 | 卡號 |
| ⑥ 抽血、建檔 | 之後 | 中心 | 照原本流程,這套系統不碰 | — |
| ⑦ 配對通知 | 配對到時 | 承辦 | 用卡號查 → 對一下手機 → 按「發 LINE 通知」 | 誰發的、有沒有送達 |
| 自己查看 | 任何時候 | 捐者 | 點選單看到遮罩資料;按「顯示完整資料」,過驗證碼才看到明文 | — |
| 改資料、換 LINE、解除 | 有需要時 | 捐者打電話,承辦處理 | 承辦先回撥中心資料上的電話確認本人,再在後台改、解除綁定;換 LINE 的人之後用新帳號重新綁定 | 誰改的、改之前是什麼 |
防盜:LINE 帳號被盜時
驗證碼放在兩個地方:綁定時、看完整資料時。換 LINE 帳號不開放自己做,打電話給中心。
| 盜用的人想做 | 沒有驗證碼 | 有驗證碼(本案) |
|---|---|---|
| 看完整的手機和卡號 | 看得到 | 看不到 要收得到捐者手機的簡訊 |
| 用別人的卡號綁到自己的 LINE | 知道卡號和手機就能綁 | 不行 驗證碼只送到捐者手機 |
| 改資料、換 LINE、解除綁定 | 不行 | 不行 要打電話,中心回撥確認 |
| 收到配對通知 | 收得到 | 還是收得到 但通知只寫「請與中心聯絡」,中心回撥的是自己資料上的電話 |
flowchart TD A([點選單]) --> M[看到遮罩資料
已綁定] M --> V{要看完整資料?} V -- 是 --> O[驗證碼送到
綁定的手機] O --> P([明文顯示
閒置 30 分鐘內有效]) M -. 要改資料、換 LINE、解除 .-> C([打電話給中心
回撥確認後處理]) class O key class A,P,C term
捐者事後點進來看到的
只秀他自己填的兩樣,不秀中心資料庫的任何東西(例如姓名)。頁面上沒有修改按鈕。
平常(沒過驗證碼)
這個 LINE 帳號已綁定。配對到時,骨髓中心會用 LINE 通知您。
手機:0912-***-678
捐髓卡號:末 4 碼
[顯示完整資料]
過驗證碼後
手機:0912345678
捐髓卡號:(依卡上格式)
資料有誤、換了手機或 LINE 帳號,或不想再收到通知,請撥骨髓中心:(電話待提供)。
為什麼這樣定,代價是什麼
前三項是 11/11 名軒確認的決定;後兩項是這樣做的代價。
加回簡訊驗證碼LINE 帳號容易被盜。綁定時驗一次,確認手機是他的;看完整資料時再驗一次,盜用的人沒有手機就看不到。手機打錯,當場就會發現。
換 LINE 帳號要打電話中心才知道有這件事,也能順便問其他資料要不要改;系統沒接中心資料庫,本來就要靠電話。
不接中心資料庫資料不和內部資料混在一起;只有配對到的那一位,承辦才用卡號來查。
卡號打錯要到配對時才發現手機打錯當場就收不到驗證碼,但卡號沒有地方能當場核對。打錯的人配對時查不到,就走原本的電話聯絡;送出前「再看一次」是為了減少這種情況。
要花簡訊費正式上線前要有簡訊商。每位大約綁定時 1~2 封,之後只有看完整資料時才發;每封價格要問簡訊商。POC 繼續用模擬簡訊。
現在的 POC 要怎麼改
先改模擬環境;線上版不動,舊程式都留在 git 紀錄裡。
| 處理 | 項目 | 說明 |
|---|---|---|
| 拿掉 | 填身分證、生日 | 含生日滾輪、身分證加密暫存 |
| 拿掉 | Google 驗證、一次性綁定碼 | 綁定只靠手機驗證碼和卡號 |
| 拿掉 | 和主資料庫比對、人工核對 | 不接中心資料庫 |
| 拿掉 | 捐者自己改資料、承辦審核、待辦匣、聯絡紀錄 | 改資料一律打電話給中心 |
| 拿掉 | 定期問「資料是否還正確」 | 核心只剩配對通知 |
| 改 | 個資告知頁 | 內容改成蒐集手機和卡號(個資法第 8 條要告知的項目) |
| 改 | 綁定流程 | 允許 → 個資告知 → 手機與驗證碼 → 卡號 → 再看一次 → 完成;同一張卡已綁定其他 LINE 時擋下,請他打電話給中心 |
| 改 | 「我的資料」頁 | 平常只顯示遮罩;過驗證碼後明文顯示手機、卡號和中心電話;沒有修改按鈕 |
| 新增 | 承辦查詢、發 LINE 通知 | 用卡號或手機查,對過手機再按通知 |
| 新增 | 承辦幫捐者改資料、解除綁定 | 接到電話、回撥確認後使用;留下誰改的、改之前是什麼 |
| 保留 | 簡訊驗證碼 | 沿用現有規則:6 碼、10 分鐘有效、10 秒後可重發、15 分鐘最多 3 封、輸錯 5 次鎖 15 分鐘 |
| 保留 | 其餘既有功能 | LINE 登入(只要 openid)、防連點、具名承辦、稽核紀錄、封鎖偵測、推播結果記錄 |
還要確認的事
都不擋開工,先用暫定值做。
現場收不到簡訊先看號碼有沒有打錯、10 秒後重發、換到有訊號的地方。還是不行(例如登記表留的是家人手機),現場就沒辦法驗證;暫定讓他回家收得到再從選單綁(換 LINE 帳號的人本來就要在家重綁)。
卡號格式捐髓卡唯一碼幾碼、有沒有英文字母或「-」、有沒有檢查碼?在那之前先接受英數字和「-」。
中心電話名軒之後提供;畫面先寫「(電話待提供)」。