Vibe Coding 實戰:打造專屬線上報價單系統與電子簽署功能
哈囉大家好,我是享哥。今天想跟大家分享我近期使用 Vibe Coding 實作的「報價單系統」。
你可以直接前往 報價單測試網站 進行實際體驗!
這個報價單系統是我很久以前就非常想做的專案,過去因為卡在一些技術問題,一直沒有動手實作。這次藉由 Vibe Coding 的協助,我成功開發出了這個具備後台編輯、公開報價頁、商務型電子簽署,以及 JSON / PDF 匯出功能的 MVP(最小可行性產品)。
系統核心定位與開發理念
這套系統的核心在於提供一個流暢的線上報價流程。從後台建立報價單開始,到生成專屬的公開連結發送給客戶,客戶檢視無誤後能直接在線上完成簽名,最後系統會自動產生 PDF 留存。此外,我也加入了 JSON 的匯出與匯入功能,方便進行資料的備份與快速搬移。
後台管理與核心功能展示
進入管理員登入介面後(我預設了一個 demo 測試帳號,大家可以在測試網站中登入),系統的總覽頁面會清楚劃分出幾個核心區塊,方便業務與管理人員操作:
1. 客戶與產品服務建檔
- 客戶名單:可以事先新增、管理客戶的聯絡資訊,在建立報價單時就能直接透過下拉選單帶入,省去重複輸入的麻煩。
- 產品與服務:可以預先建立好公司的各項產品或服務模組,包含計價單位、單價等。
2. 報價單範本設定
在撰寫報價單時,經常會用到重複的條款或項目。系統支援建立「範本」,你可以將常用的預設條款(例如:付款條件、智慧財產權歸屬、保固範圍等)或是專案明細存成範本,未來開立新報價單時只要一鍵套用即可,大幅提升效率。
3. 權限控管設計
在系統設定部分,我特別區分了「管理員」與「業務」的權限。一般業務帳號可以建立報價單、管理客戶與產品,但無法進入核心的系統設定頁面,藉此確保資料與系統的安全性。
線上報價與電子簽署流程
這是整套系統最核心的運作流程:
- 建立報價單:選定客戶、套用範本、確認服務項目與金額無誤後進行儲存。
- 發送公開連結:系統會產生一個專屬的「公開報價頁連結」。雖然正式環境應該直接串接 Email 系統寄出,但為了 Demo 方便,目前採用生成公開連結的方式,讓業務可以直接複製並發給客戶。
- 客戶線上檢視:客戶點擊連結後,會看到一個排版專業、乾淨的報價單頁面,包含雙方資訊、報價明細、條款與匯款帳號等。
- 電子簽署:若客戶確認無誤,可以在頁面底部直接進行簽名。系統支援三種簽名方式:
- 手寫簽名:直接在畫布上滑鼠/手指簽名。
- 輸入姓名:由系統生成標準字體。
- 上傳圖檔:適合習慣使用公司大小章圖檔的企業客戶。
- 生成並下載 PDF:送出簽署後,系統會自動跳轉並生成一份包含簽名的完整 PDF 報價單,雙方皆可下載留存。一旦完成簽署,該份報價單在後台就會被鎖定,無法再被修改或刪除,確保合約的有效性。若需修改,只能複製一份新的報價單重新跑流程。
系統上線的挑戰:Cloudflare PDF 匯出踩坑經驗
在開發這個專案時,我遇到最大的困難其實是「上線(Deployment)」。
我在本地端(Localhost)測試時,所有功能包含 PDF 匯出都運作得非常順暢。但當我將系統部署到線上,並串接資料庫與 Cloudflare 時,卻發生了許多 Bug。
這主要是因為我使用了 Cloudflare 內建的 PDF function 來生成檔案。這類雲端服務的功能在本地環境和實際線上環境的運作邏輯有時會有落差,導致我花了不少時間在解決上線後才冒出來的錯誤。
如果你未來也打算開發類似的系統,特別是會用到 PDF 套版或是需要部署到線上環境的專案,請務必有心理準備:你需要具備一定的線上環境部署與除錯能力。
AI 自動化開發心得與 Debug 建議
這是我花了兩三天時間,透過 Vibe Coding 密集開發出來的成果。我最大的心得是:遇到問題、處理問題的能力依然是核心。
就算有 AI 輔助,程式還是會報錯。當你在線上環境遇到問題時,我的 Debug 建議是:
- 在瀏覽器按下右鍵,選擇「檢查(Inspect)」。
- 切換到 Console(主控台) 標籤頁。
- 查看裡面出現的紅字錯誤訊息。
- 將這些錯誤訊息完整複製下來,丟給 AI,請它幫你分析這些問題出在哪裡,然後一步一步去修正。
無論你今天是部署在 Cloudflare、AWS 還是 GCP,每一個雲端環境都會有自己獨特的毛病與設定問題(例如我遇到的上線後 PDF 無法生成)。只有自己實際走過一次流程,下次才會知道坑在哪裡。
常見問答 (FAQ)
Q1: 這套線上報價單系統適合哪些使用情境?
很適合接案工作者、小型工作室、數位服務公司,或是本來就有大量客製化報價需求的團隊。尤其當你常常需要反覆製作報價單、傳送給客戶確認,再追蹤簽署狀態時,這類系統能明顯減少來回溝通與人工整理文件的時間。
Q2: 電子簽署完成後,為什麼報價單不能再直接修改?
因為一旦完成簽署,這份文件就已經進入具有合意證明意義的狀態。如果簽完還能直接改內容,等於破壞文件的可信度。所以系統在簽署後會鎖定該筆報價單,若真的需要調整內容,正確做法是複製一份新的版本重新送出,這樣才能保留完整的歷程。
Q3: 為什麼系統要支援手寫、輸入姓名、上傳圖檔三種簽名方式?
因為不同客戶的習慣差很多。有些人偏好直接手寫簽名,有些人只想快速輸入姓名,也有些企業客戶會習慣蓋公司章或使用既有簽名圖檔。把三種方式都提供出來,可以降低客戶完成簽署的門檻,也比較符合真實商務場景。
Q4: PDF 匯出在本地正常,但部署到 Cloudflare 後出問題,常見原因是什麼?
最常見的問題不是程式本身完全不能跑,而是「本地環境和正式環境的執行條件不一樣」。像是 Cloudflare 的執行限制、函式支援差異、路由設定、資源存取方式,甚至字型與 PDF 生成流程都有可能不同。所以只要牽涉到 PDF、檔案處理、第三方服務或部署平台特殊功能,就一定要預留線上除錯時間。
Q5: 如果我也想做自己的報價單系統,最應該先做好哪幾件事?
我會建議先把流程想清楚,而不是一開始就追求功能很多。至少先定義好「客戶資料」、「產品/服務項目」、「報價單範本」、「公開頁面」、「簽署完成後的鎖定規則」這幾個核心模組。只要主流程先跑通,後續再慢慢補上通知、權限細分、更多匯出格式或 CRM 整合,會比一開始就做很大更實際。
希望這次的專案分享對大家有幫助!如果你對於 AI 自動化開發、AI 應用,或是如何規劃這類系統的架構有興趣,都歡迎提出來一起討論!