寒假放完就進入大四下學期了。我們系的畢業門檻是要在大四下完成一個畢業專題,並且最終要產出專題研究論文。
我自己訂的主題是:
基於RFM與CAI模型,結合LINE官方帳號與Google試算表之微型商家顧客管理與點餐系統
為了 SEO,也放一下英文標題好了:
An RFM- and CAI-Based Customer Management and Ordering System for Micro-Merchants via LINE Official Account and Google Sheets
我其實從暑假就有開始在做程式的部分,但還不太清楚論文要怎麼寫、內容要寫什麼,所以先把一些零碎的想法記錄在這裡,以免之後忘記。
研究動機
我目前擬的研究動機如下:
LINE 是台灣人生活中極為常用的通訊軟體,根據相關報導,截至 2025 年,LINE 在台灣的滲透率已達 95%。隨著 LINE 官方帳號的普及,許多商家開始利用 LINE 建立會員制度,透過官方帳號與顧客互動,以此提高顧客忠誠度。然而,對於攤販等小型商家來說,管理顧客資料、訂單以及行銷活動仍然是一個挑戰。尤其當商家希望進行精準行銷時,如何有效地分析顧客資料並制定相應的行銷策略就變得尤為重要。
因此我想要利用企業實習期間學習到的 Google 試算表自動化搭配 LINE 官方帳號,製作一個低成本、簡單易用的系統,讓小商家能夠輕鬆管理顧客資料、訂單並進行個人化行銷。
總而言之,我選擇這個主題主要是結合自己對程式開發的興趣、實習時學到的 Google Apps Script 應用,以及臺灣市占率最高的通訊軟體,打造低成本的顧客管理解決方案,讓個人化行銷的概念能更容易走進小型商家。
東西長怎樣?
我要做的這個東西主要可分為兩大功能:
點餐功能(給顧客使用)
顧客管理功能(給商家使用)
我有開了一個章魚燒店的 demo。
點餐功能(LINE 官方帳號)
首先 LINE 官方帳號進去之後長這樣,使用者會收到簡易的歡迎訊息,並且下方有「點餐」和「我的訂單」兩個按鈕。

點擊「點餐」或「我的訂單」按鈕,如果尚未登入(第一次使用或是太久沒用)會跳到登入畫面,只要點「登入 LINE」就會自動用 LINE 帳號登入。

如果是第一次使用,會需要輸入基本資料完成註冊。

點餐
登入完成之後,可以進入點餐介面,這裡顯示商家提供的所有商品、庫存、價格,也可以按分類檢視。
只要點擊商品的 + 號,就可以把它新增到購物車。


點擊購物車,可以看到剛剛加進來的商品,可以在這裡更改數目或是刪除。

送出訂單時會再最後確認,並且可以新增備註,例如不加香菜、不要加辣等等。



訂單頁面
在聊天室點擊「我的訂單」或是在點餐頁面點擊左上角圖示,可以開啟訂單頁面,會顯示過去的訂單和訂單狀態。

商品與顧客管理功能(Google 試算表)
這個系統的顧客管理功能是利用一個 Google 試算表作為商家的後台,商家可以在「商品類別」和「商品」工作表設定要顯示在點餐頁面的類別和商品,並且可以在「顧客」表看到所有已註冊的用戶,能為個別顧客加上附註(顧客本人看不到)。



顧客表也會顯示每一位顧客的 RFM 會員類型與 CAI 購買行為趨勢,可以作為後續個人化行銷的基礎。
由於主題是叫做 微型商家顧客管理與點餐系統,因此之後應該還會加入根據會員分群發送電子郵件或推播訊息的功能,但目前還沒想好要怎麼實作。
實作方法與架構
這個系統使用以下技術:
LIFF App:在 LINE 官方帳號中,點擊選單上的按鈕之後打開的點餐或訂單頁面。
Go 語言後端:採用 Go 語言搭配 Gin 框架作為後端伺服器,負責:
提供 LIFF App 前端頁面。
將 Google 試算表中的資料轉送到 LIFF App 的點餐和訂單頁面。
根據已完成的訂單計算每位顧客的 RFM 與 CAI(使用自製的資料分析函式庫——Insyra)。
推播 LINE 訊息給顧客(使用 LINE 官方的 line-bot-sdk-go)。
Google Apps Script:提供 Google 試算表的訂單和會員資料給 Go 後端伺服器,讓試算表充當資料庫的角色。
後端之所以選擇使用 Go 語言,主要原因是:
大家都用 Python,我用 Go 看起來比較厲害。
我有自製一個 Go 的資料分析庫——Insyra,這個專題使用 Go 可以順便驗證 Insyra 在資料分析實務上使用的可行性。
當然還是有一些比較官方的藉口理由:
Go 語言執行速度比 Python 快速非常多,可省下 Google Apps Script 呼叫後端運算顧客分群後等待結果的時間(Google Apps Script 的觸發器有每日執行時間上限)。
Go 語言不僅執行速度快也擅長平行處理,非常適合同時處理大量資料的使用場景。
以上就是目前這個畢業專題的整體構想,以及系統現在長什麼樣子。很多地方其實還在邊做邊想,功能也還沒有完全定案,先把目前的想法和實作方向記錄下來,避免之後忘記自己當初在想什麼。
接下來如果還有下一篇的話(假設我有時間並且沒有懶得寫),我會再慢慢整理實作細節、Insyra 計算 RFM 和 CAI 的方式,以及這個系統的成本估算和可能 STP 分析之類的,也當作我自己之後寫論文時的備忘。