TOP / WORKS

ITと業務の企画 サービス事業者

報酬計算を二重で検算する自動集計システム

お金を出す集計を、機械が「合っている」と証明できる形にした

速くしたのではありません。同じ計算を、互いの計算式を共有しない2つの処理にやらせて、答えが合ったときだけ先へ進むようにしました。会計の二重チェックを、そのまま仕組みにしています。

01どんな状況だったか

紹介した人・された人に報酬ポイントを出すための集計です。毎週、紹介の明細とアンケートの回答を突き合わせて、誰に何ポイント出すかを決めていました。難しい作業ではありませんが、お金が動くので間違えられません。

02何が問題だったか

03仕組み

以前|毎月くり返していた5工程CSVを開く名寄せする計算する台帳へ転記目で確認する手順は担当者の頭の中にしかないいま|手順をプログラムに書き出したコマンドを1回実行する全部やる結果が出る人が確認手順が文書(プログラム)になったので、担当者が変わっても同じ結果が出る
減ったのは工程の数ではなく、人がやる工程の数。5つのうち4つが機械に移り、人には確認だけが残った。

図は横にスクロールできます →

04何をしたか

  1. まず入力を検査する

    列の不足、IDの重複、期間外の回答などを先に見ます。おかしければ、そこで止めて先へ進みません。

  2. 同じ計算を、2つの処理に別々にやらせた

    ここが設計の中心です。集計する処理と検算する処理を別々に作り、計算のしかたを一切共有していません。片方が勘違いをしていても、もう片方が同じ勘違いをしないので、突き合わせれば分かります。

  3. 答えが合ったときだけ先へ進む

    人数・合計ポイント・有効な紹介関係・期間内の回答数を突き合わせ、1つでも差があれば差し戻しにします。入力に不備が残っていれば「人が確認」で止めます。

  4. 全部一致したときだけ、支給データを書き出す

    合計が0のときも書き出しません。何も出ないはずの週に何かが出る、という事故を防ぎます。

  5. 毎回、記録を残す

    入力・期間・各処理の結果・最終判定・開始と終了の時刻を残します。あとから「あの週は何だったか」を追えます。

05システム構成

紹介の明細(CSV)アンケート回答(CSV)入力をまず検査するおかしければ、ここで止める同じ計算を2回、別々に集計する担当検算する担当おたがいの計算式をまったく共有しない結果を突き合わせる判定差が1件でもあれば差し戻し入力に不備があれば人が確認すべて一致したときだけ支給データを確定毎週、同じデータを2つの担当がそれぞれ計算し、答えが合ったときだけ先へ進むお金を出す処理なので、「合っていること」を機械が証明できる形にしてある
会計の二重チェックを、そのまま仕組みにしたもの。集計する側と検算する側は計算式を共有しないので、片方の勘違いがそのまま通ることがない。

図は横にスクロールできます →

集計と検算は別のプログラムとして動かしています。同じ関数を呼び回すと、間違いも一緒に共有されてしまうためです。実行の前には、用意してあるテストを全部通します。1つでも落ちれば、集計そのものを始めません。
Python pytest CSV/Excel

06出来上がったもの

週次レポート_2026-08-13紹介報酬 週次処理レポート対象期間 2026-08-04 〜 2026-08-10 / 実行 2026-08-13 02:00最終判定APPROVED付与対象128人合計ポイント128,000入力エラー0件2つの処理の突き合わせ確認した項目集計する担当検算する担当付与対象の人数1281280合計ポイント128,000128,0000有効な紹介関係1311310期間内の回答1,0421,0420入力の検査必須の列はすべて揃っています。ID の重複・空欄・期間外の回答はありません。未突合の回答が 14 件ありますが、これは承認を妨げません(件数のみ記録)。この判定にもとづき、支給データを approved/ へ書き出しました。

※ 数値はすべて、この説明のために作ったサンプルです

毎週こう出る。2つの処理の数字が1つでも食い違えば APPROVED にならず、支給データは書き出されない。

図は横にスクロールできます →

07どう変わったか

この仕組みで一番時間をかけたのは、速くすることではなく「間違えたときに、間違えたと分かる」ようにすることでした。自動化して速くなっても、静かに間違い続ける仕組みは、手作業より危ないと考えています。

事例の一覧へ