用 Codex 做批量匯入:先檢查整批,再寫入檔案

4 分鐘閱讀
一批資料有一行不合格時,怎樣確認原檔案沒有被部分覆蓋?用自建 JSON 樣例演練預覽、整批檢查及寫入後複查。

批量匯入時,有時問題不是報錯,而是報錯之前已經寫入了一半。怎樣讓 Codex 把「原檔案沒有被部分覆蓋」也納入驗收?

這裏沿用庫存 0 檢查的教學例子,用自建 JSON 檔案演練:原檔案一條記錄,待匯入兩條。它不是真實庫存或客戶事故。

先約定甚麼時候可以寫入

本例只追加新 SKU。原檔案和匯入批次都必須是陣列;每條記錄需要有效的 SKU 和非負整數庫存,數值 0 有效。批內重複或與原資料撞號時拒絕整批。這些是本例的約定,實際欄位和範圍應按業務決定。

預設指令只作唯讀預覽,明確加入 --commit 才替換指定檔案。程式先檢查整批,寫入時使用同一資料夾的暫存檔,再以 os.replace 替換目標。寫入前會再檢查一次原檔案有沒有變化,但沒有檔案鎖,不能視作併發安全保證。Python:os.replace

把驗收條件寫給 Codex

這是 JSON 庫存匯入教學項目,先在可替換的測試副本演練。
只追加新 SKU,檢查根結構、每條記錄的類型及範圍、批內重複和原資料撞號。
預設唯讀預覽;明確 --commit 才寫入指定副本,整批通過後再寫。
保留輸入,不邊讀取邊覆蓋;檢查失敗後核對原檔案雜湊值不變。
合法寫入後重新讀取,核對舊記錄、新記錄和數值 0。
保留指令、退出碼、實際結果及未覆蓋範圍。

JSON 能解析,只代表語法可接受,不代表結構符合本例。Python 預設把 JSON 物件解成 dict、陣列解成 list,因此仍要檢查根結構。Python:JSON 解碼

下載後用副本操作

下載教學程式碼、樣例及測試

解壓後在項目資料夾開啟 PowerShell,先複製一份可以替換的測試檔案:

Copy-Item fixtures/store.json test-store.json
Get-FileHash test-store.json -Algorithm SHA256
python -B test_import.py
python -B import_stock.py --store test-store.json --input fixtures/good-batch.json
$LASTEXITCODE
Get-FileHash test-store.json -Algorithm SHA256

預覽應回傳 mode: dry_run、退出碼 0;兩次雜湊值應相同。接着試第二條記錄庫存為負數的批次。即使加入 --commit,也應拒絕並保持測試副本不變:

python -B import_stock.py --store test-store.json --input fixtures/bad-batch.json --commit
$LASTEXITCODE
Get-FileHash test-store.json -Algorithm SHA256

最後提交合法批次,然後重新讀取測試副本:

python -B import_stock.py --store test-store.json --input fixtures/good-batch.json --commit
$LASTEXITCODE
Get-Content test-store.json -Raw

這一步會替換 test-store.json。結果應有原來一條及新增兩條記錄,當中 NEW01 的庫存仍是 0;不要把示範指令指向真實業務檔案。

原實測結果與範圍

2026 年 10 月 26 日,Windows / Python 3.13.5 的自建樣例完成 8 項測試及 4 個指令場景:唯讀預覽退出 0,檔案雜湊值不變;第二條負庫存和合法 JSON 但根結構是物件的兩種情況均退出 2,檔案不變;合法提交退出 0,重新讀取後有 3 條記錄並保留庫存 0。程式碼與原始樣例雜湊值不變。執行腳本不呼叫 API。

本文沿用原執行證據,官方文件於 2026 年 10 月 28 日複查;沒有驗證真實庫存、Excel/CSV、併發匯入、磁碟故障或斷電恢復。檔案替換成功,不能推斷這些場景也安全。Python:unittest

下載包的說明及程式註解已整理為香港繁體中文,指令、欄位名稱與錯誤代碼保留原樣。

2026 年 10 月 28 日另在 Windows / Python 3.13.5 複查繁體下載版:8 項測試及上述 4 個指令場景通過;測試副本以外的程式和樣例檔案保持不變。

查看 AI Coding 系列全部文章

相關文章