← 所有文章2026.10.23 · COMMERCE · 正式環境電商系統

文件簽署:保存內容與事件依據

以範本版本、文件指紋、限時連結與序列化狀態變更,保留簽署流程的查核依據。

一張簽名圖片無法單獨說明使用者接受了哪份文件,也無法交代請求如何完成。我實作的簽署流程會記錄文件版本、驗證填寫欄位,並產出包含相關事件紀錄的完成版 PDF。

以下說明工程設計,省略客戶文件、實際欄位與身分資訊。

將請求綁定到文件

簽署請求參照範本版本及原始文件雜湊。接受簽名前,伺服器載入文件,將雜湊與當時紀錄比對;不一致就停止操作。

這將編輯範本與變更待簽文件分開。每次簽署對應一份明確文件,不依賴相同檔名目前指向什麼內容。

把簽署連結當作憑證

應用產生帶有期限的隨機連結,資料庫保存簽署 token 的雜湊。接受欄位內容或簽名圖片前,伺服器會檢查請求目前的有效狀態及簽署人狀態。

欄位驗證限制每位簽署人能填寫的內容,拒絕未知的簽名欄位、不合法格式與缺少的必填值。介面協助使用者填寫,伺服器決定哪些輸入可以被接受。

將競爭操作序列化

簽署、拒簽與作廢可能同時發生。實作以一致順序鎖定請求及簽署人紀錄,再改變狀態。

每次操作因此能讀到目前狀態,避免兩個呼叫各自完成已被處理的步驟。收齊所需簽署後,再產生最終文件。

串連事件紀錄

同意、簽署與完成等事件以雜湊鏈保留順序。每個事件的雜湊包含前一筆雜湊,以及目前事件的標準化內容。

測試會修改事件或移除中間事件,再驗證檢查能找出斷點。文件雜湊則分別將原始檔與完成檔連到各自保存的指紋。

這些機制支援流程內的完整性檢查,與獨立身分驗證或憑證式數位簽章是不同能力。清楚界定證據能證明什麼,後續查核才有可靠的基礎。

最後留下的是可供檢視的內容、完成版 PDF,以及產生它的事件紀錄。