企業把 Excel 或紙本改成系統時,需求表常寫成「登入、訂單管理、報表、匯出、API 串接」。這種頁面清單看似完整,卻沒有說明資料何時改變、誰能改、重複操作會怎樣,以及外部服務失敗後如何恢復。開發團隊只能各自假設,最後容易出現畫面都有、流程卻接不起來的落差。
比較可執行的方法,是用「事件、狀態、權限、例外」四個欄位描述每一條流程。頁面只是操作入口;真正需要驗收的是一次業務事件發生後,系統是否得到正確且可追蹤的結果。
從業務事件開始,不從選單開始
先挑出每天最常發生、出錯代價最高的事件,例如建立訂單、確認付款、完成揀貨、車輛送修、證件到期或主管核准。每個事件寫清楚觸發者、必要資料、原本狀態、完成後狀態、通知對象,以及是否需要留下操作紀錄。
以「鮮達 FRESHDA 訂貨系統」案例來看,買方下單與賣方出貨不是兩個互不相關的頁面,而是同一筆訂單在雙端同步。若只列出買方端、賣方端與訂單後台三頁,仍不知道賣方缺貨時如何調整、買方能否取消、狀態改變要不要通知。規格應沿著一筆代表訂單走完建立、確認、調整、出貨與結案,再補上取消及重複送出的情境。
把狀態轉移寫成可驗收規則
每筆資料都應有允許的狀態與轉移條件。例如維修單可能是待確認、已指派、處理中、待驗收與已結案,但不是每個角色都能跳過中間步驟。驗收案例可以寫成:「門市建立待確認維修單,區域主管指派廠商後才進入已指派;廠商不能自行標記驗收完成。」這比「有維修管理」更明確。
「馳安 FleetOps 車隊管理」案例集中車輛履歷、維修成本與證件到期提醒。套用事件規格時,可以把新增維修、更新里程、上傳單據、設定到期日與完成覆核分開,並定義哪些變更要留在車輛履歷。如此一來,儀表板上的異常提示才有可追溯來源;案例本身不代表其他車隊能獲得相同效益。
API 串接要先處理重試,避免重複資料
外部 API 不可能只測成功一次。網路逾時時,呼叫端常不知道請求究竟沒有送到,還是已處理但回應遺失。MDN 對冪等性的說明指出,同一請求執行一次或多次,若對伺服器的預期效果相同,就具有冪等性;文件也說明 POST 與 PATCH 並不保證冪等。對訂單、付款、庫存或派工而言,這提醒團隊不能假設「重送就好」。
需求書應明確要求每筆外部事件有唯一識別值,重複收到時不再建立第二筆資料;還要記錄最後成功時間、錯誤原因、重試次數與人工補送結果。驗收時可模擬同一事件送兩次、回應逾時後再送,以及外部服務暫停後恢復,確認系統不會重複扣庫存、重複派工或產生兩張相同單據。
權限不是隱藏按鈕,而是每次存取都要判斷
後台常把權限理解成不同角色看到不同選單,但直接輸入網址、呼叫 API 或匯出資料時仍要進行相同檢查。數位發展部的零信任架構說明提到,存取企業資源時需要透過政策決策與落實機制確認身分及權限,並把身分鑑別、設備鑑別與信任推斷列為核心。一般企業系統不必照搬政府部署模型,但可採用同一個重要原則:不要因為使用者已登入,就默認他可以存取所有資源。
規格可用「角色 × 資料範圍 × 動作」矩陣表示。例如門市人員只能建立與查看本店訂單,區域主管能跨店查看但不能改付款資料,財務能匯出對帳資料卻不能修改商品。另要定義敏感操作是否需要再次確認、主管覆核或完整稽核紀錄。驗收時除了測試允許的操作,也要測試越權查看、直接呼叫 API 與離職帳號失效。
把 Excel 欄位改成資料規則
既有試算表只是現況樣本,不一定是新系統的資料模型。盤點時應逐欄標示名稱、格式、是否必填、允許值、來源、維護人與歷史資料品質。自由輸入的門市名、車號或供應商名稱,可能需要轉成受控選項;計算欄位則要說明公式與生效時間。重複資料、空值和錯誤格式要在移轉前訂處理規則,而不是匯入後才人工猜測。
建議先取一小批去識別化資料做試匯,產出成功、略過與待人工處理三類清單,再由業務負責人確認。正式切換還要決定舊表何時停止編輯、切換期間新增資料怎麼補入,以及回復失敗時使用哪份備份。這些都是後台開發範圍的一部分,不是上線前臨時處理的雜務。
最後用一條端到端流程驗收
選一個跨角色、跨系統的代表情境,從第一筆輸入走到結案。例如門市建立叫貨、總部確認、倉庫出貨、物流回傳結果、門市簽收、財務匯出對帳。每一步都要檢查狀態、權限、通知、稽核紀錄與錯誤補救,再測一次重複送出和中途失敗。
當每條流程都能回答「發生什麼、由誰處理、資料如何改變、失敗怎麼恢復」,開發團隊才有條件估價,企業也才有明確的驗收依據。後台管理系統的價值不在頁面數量,而在把原本靠記憶、群組訊息與人工補救的規則,轉成一致、可追蹤且可安全重試的作業流程。