午前二時の更新ボタン
午前二時、決済サービスの監視画面が赤く染まった。
望月瑠璃の退職届は、その七時間後、午前九時に送信されるよう予約してある。けれど最後の夜勤は、静かに明けてはくれなかった。海外の年間契約者から、更新料金を二度引き落とされたという通知が連続している。今夜の当番は瑠璃一人。机には冷めた缶コーヒーと、三か月連続で埋まらなかった夜勤表があった。リーダーは「該当顧客だけ返金して、朝まで持たせて」と通話越しに言った。
一件ずつ返せば、朝には「対応済み」の数だけが残る。誰が午前二時に同じ画面を見たかは、また記録から消える。瑠璃が辞めると決めたのは、その繰り返しだった。
瑠璃は返金画面を閉じた。二重請求は結果で、原因ではない。
ログを時刻順ではなく契約更新日順に並べ直す。日付変更線をまたぐ地域だけ、〈更新日〉と〈処理日〉が別々に判定されていた。午前零時の一括処理と、各国の午前零時処理が同じ契約を拾っている。
「個別返金では止まりません。更新処理を巻き戻します」
「全地域を止めたら売上が落ちる」
「止めなければ、三十分ごとに対象が増えます」
瑠璃は直前版へロールバックし、二重処理の識別子を無効化した。返金対象を自動抽出するSQLを書き、同じ条件で件数が増えたら鳴る監視も追加する。新人の大地がチャットへ「何を見れば気づけましたか」と書き込んだ。
〈件数より、偏り。国が違うのに同じ分に集中していたら、時刻を疑って〉
三時十二分、赤い通知は止まった。被害件数は二百七件。個別対応だけを続けていれば、朝には千件を超えていた。
リーダーから、障害報告の下書きが届いた。原因欄には〈夜間当番が全地域を停止〉とだけある。
瑠璃は、二重実行を許した設計と、夜間に承認者が不在だった事実を書き戻した。監視手順にも、〈夜間の単独判断を禁止〉と追記する。個人の決断だけを原因にすれば、次の誰かがまた午前二時に同じ画面を見る。
報告書を保存し、九時を待たずに退職届の予約送信を解除した。
退職届を今すぐ送る。続けて、週四日勤務の開発会社から届いていた内定通知を開き、入社日の候補を選んだ。
午前二時を越えない働き方へ、更新ボタンを押した。