我們如何先列出一批匯入資料的問題

5 分鐘閱讀
以唯讀 JSON 檢查器一次收集約定規則內的問題,附教學輸入、實際輸出、程式碼及八項驗收。

我們在整理 JSON 匯入教學例子時,留意到原有的檢查邏輯遇到第一處錯誤就會停止。這樣容易定位當前問題,但如果同一批資料有多處錯誤,便要修改後再次執行,才能看到後面的問題。

這次我們試了另一個做法:先建立唯讀檢查器,把它認識的批次內問題一起列出。它不負責匯入,也不修改資料;真正寫入前,仍需要另外檢查及確認。

我們用甚麼資料測試

以下是自建教學資料,並非真實庫存:

[
  {"sku": "A-001", "stock": 0},
  {"sku": "A-002", "stock": -1},
  {"sku": "A-003", "stock": ""},
  {"sku": "A-002", "stock": 3},
  {"sku": "A-004", "stock": true}
]

我們為樣例訂下的規則是:編號必須是非空、首尾沒有空白的字串;同一批次內,有效編號不能重複。庫存必須是非負整數,0 是有效值,布林值不算有效庫存。

檢查器列出 4 處問題:第 2 條庫存為負、第 3 條庫存為空、第 4 條編號重複、第 5 條庫存類型不正確。第 1 條庫存為 0,沒有被當成漏填。序號從 1 開始,指 JSON 陣列中的記錄,並非檔案的實際行號。

我們交代給 Codex 的要求

我們把想保留的行為及不應執行的操作一併寫清楚:

讀取自建 JSON 陣列,逐條收集約定規則內的問題。
每個問題包含記錄序號、欄位和錯誤代碼。
庫存 0 有效,布林值不能當作庫存整數。
只比較本批次有效編號,不查詢外部庫存。
檢查器不匯入、不修改輸入、不自動修復。
測試多處錯誤、無效頂層結構及輸入檔案沒有被修改。

這些規則由我們為教學例子訂立,不代表適用於其他項目。「同批重複」沒有與現有庫存對照;用於業務前,應先按實際資料補充規則。

如何重現

下載檢查器、三份教學輸入、實際輸出及驗收測試

需要 Python 3.10 或以上,無第三方相依套件。解壓到新資料夾後,在該資料夾開啟 PowerShell 執行:

python -B test_check_batch.py
python -B check_batch.py fixtures/mixed.json
$LASTEXITCODE
python -B check_batch.py fixtures/valid.json
$LASTEXITCODE
python -B check_batch.py fixtures/not-array.json
$LASTEXITCODE

混合錯誤樣例退出 1,有效樣例退出 0,頂層不是陣列退出 2。1 表示發現檢查問題;2 表示輸入無法讀取、JSON 無法解析或頂層結構不符合要求。檢查通過也只代表符合本例規則,不能據此保證真實業務可安全寫入。

我們實際驗證了甚麼

2026 年 11 月 1 日,我們在 Windows 本地執行了 8 項驗收及上述 3 個教學場景;輸入樣例與程式碼在執行前後的雜湊值一致。程式碼由 Codex 輔助完成;教學檢查器不呼叫 API,也沒有檢查真實庫存、外部編號、任意格式、併發或效能。

我們把 JSON 解析與應用規則分開理解:能解析為 JSON,不代表符合匯入要求。參考 Python json 文件及 unittest 文件。

官方 Codex 提示指南建議交代期望行為、相關背景、限制及驗證方式。上述檢查規則由我們為樣例訂立,並非 Codex 的官方檢查格式。

2026 年 11 月 2 日,網站下載包經獨立解壓,再執行 8 項驗收及 3 個指令場景;全部得到預期結果,輸入與程式碼的雜湊值未變。官方資料於同日複查。教學程式碼與文章含 AI 輔助;下載包的說明已整理為香港繁體中文,技術識別字保留原樣。

查看 AI Coding 系列全部文章

相關文章