Skip to content

[潜在バグ修正] API取得時の早期終了およびoffset加算漏れによるデータ欠落リスクの解消 (GetOrdersByShipDate) #15

Description

@Hide-JZX100

概要

別のプロジェクト GetShipmentCompletionSlip で発生・修正した「APIデータ取得時の早期終了およびデータスキップ(歯抜け)」と同様の古いコードが、本プロジェクトの 03_受注情報取得.gs 内にも残っているため、予防的メンテナンスとして修正を行います。

現時点で本番データとCSVでの件数差異は確認されていませんが、将来的にデータ漏れが発生する潜在的リスクがあります。


潜在的リスクと発生条件

以下のいずれかの条件が満たされた場合、1日あたりの取得データに「数件〜数百件のデータ漏れ」が発生する可能性があります。

  1. 繁忙期などの出荷急増:
    • 1日(出荷日)あたりのデータ件数が 1,000 件 を超えた場合。
  2. APIサーバー高負荷時のレスポンス切り詰め:
    • データ件数が 1,000 件未満であっても、ネクストエンジンAPIが負荷等により 1,000 件未満(例: 995件など)でデータを返してきた場合、プログラムが「全件取得完了」と誤判定して途中でループを終了してしまう。
    • また、次のリクエストで offset が固定値(LIMIT = 1000)で加算され、差分(例: 5件)がスキップ(歯抜け)されてしまう。

修正・対応方針

03_受注情報取得.gs にあるデータ取得関数(および関連するキャンセル情報取得処理等)に対して、以下の修正を適用します。

  1. 早期終了の防止(終了判定の変更)
    • 取得件数が LIMIT(1000)未満であることによる終了判定を廃止。
    • データが完全に空(data.length === 0)で返ってくるまで取得ループを回すように変更。
  2. offset加算の修正(歯抜け防止)
    • offset += LIMIT(固定値)から offset += data.length(実際の取得件数)に変更。
  3. データ整合性チェックの導入(SRE対応)
    • 取得完了時に、APIの総件数(json.count)と実際に取得できた件数が一致しているか(不足していないか)を確認し、不整合があれば console.warn で警告ログを出力する。
  4. テストの実施
    • 修正後、テスト用シート等への書き出し実験を行い、本番データと件数が正しく一致することを確認する。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions