失敗時只回錯誤集合,讓使用者就地修正

主張:大批次提交失敗時,不要叫使用者「重跑整個流程」,也不要回一份完整的新資料——只回一份最小的錯誤集合,讓前端合併回手上那份資料。

做法

後端偵測到列級驗證失敗時:先把一份只含錯誤表的產物上傳到物件儲存,再丟出例外並把路徑塞進失敗資訊;客戶端拿到 { status: FAILED, failedRowCount } 後去下載那份錯誤集合,合併進本地資料,畫面上直接標紅、就地修改、再提交。

好處是手上那份資料從頭到尾沒被換掉——沒有「新舊兩份要合併」的問題,也不用重跑前面的解析與驗證。

兩個設計細節

  • 錯誤集合用跟主資料一樣的格式(同一種檔案格式的縮小版),前端可以用同一套工具讀,不必為錯誤另外寫一條解析路徑
  • 合併的 key 要想清楚:用 (sheet, rowNo) 這種一定存在的座標,不要用可能為空的業務 id;也要決定是先清掉舊錯誤再灌還是 upsert——後者在反覆提交時會累積過期的錯誤

相關:前端的即時驗證是 UX,後端重驗才是 gate用二進位 artifact 當 API 的傳輸格式