1. 於 `StaffCardImportService` 中,將讀取自 Excel 的員工編號(employee_id)與卡片 UID(card_uid)使用 `trim()` 去除前後空白字元,防止因複製貼上夾帶空格導致後續比對與搜尋失效。 2. 同步將姓名(name)與備註(notes)也進行去空白處理,提升資料的一致性與品質。
1. 修改 StaffCardImportService,將 updateOrCreate 的比對欄位從 card_uid 改為 employee_id。 2. 這樣當員工補發新卡時,透過 Excel 匯入相同的員工編號即可直接更新其卡號。
1. 新增 StaffCardImportService,整合 OpenSpout 5.x 處理解析與批量更新邏輯。 2. 在 StaffCardController 加入匯入與範例下載 API 端點。 3. 更新員工識別卡 index 視圖,新增「匯入 Excel」按鈕與 Alpine.js 異步匯入彈窗。 4. 註冊相關 Web 路由。 5. 補全繁中、日文、英文多語系翻譯,並修復重複鍵值。 6. 修復 OpenSpout 5.x 相容性問題 (Row::getCells -> Row::toArray)。