v1.0.0 の歴史資料当時の説明です。現在の仕様とは異なる箇所があります。現行版の対応記事 →資料一覧へ

DEEP GUIDE 02

入金・出金と帳簿のつながり

残高の増減を、管理者操作から仕訳まで追う。

このガイドで追う一件

管理者が口座へ1万円を入金し、その後3千円を出金する例です。数字だけを増減させた場合と、帳簿に根拠を残した場合を比べます。

コードを読む順番

以下は MiniBank v1.0.0 の確認先です。マイグレーションは順に適用されるため、関数の最終形を調べるときは後続の変更も確認してください。

  1. 1

    操作する人を確かめる

    入出金は一般顧客が外部口座から自由に実行する機能ではありません。管理者向けの admin_execute_deposit と admin_execute_withdrawal は、誰が実行するかを区別する入口です。

    確認するファイルsupabase/migrations/20260821100004_create_admin_execute_wrappers.sql

  2. 2

    入金を一件の取引にする

    最終的な core.deposit は対象口座をロックし、仕訳、financial_operations の行、残高キャッシュ、監査イベントを一連の処理として扱います。

    確認するファイルsupabase/migrations/20260821100003_move_step8_operations_to_core_schema.sql

  3. 3

    出金時の残高を再確認する

    core.withdrawal はロック後に残高不足を判定します。画面に表示した残高を根拠にして先に出金を確定させるわけではありません。

    確認するファイルsupabase/migrations/20260821100003_move_step8_operations_to_core_schema.sql

  4. 4

    帳簿へ戻って確かめる

    仕訳行と業務上の取引行を照らし、入金・出金の理由と金額が後から説明できるか確認します。

    確認するファイルdocs/ledger-design.md

失敗時・範囲外の確認

残高不足や口座状態の不一致なら出金を拒否します。外部銀行や決済網との資金移動は実装していないため、ここでいう入金・出金は学習用の内部処理です。

ここまでで説明できること

残高が変わった理由を、管理者操作・業務上の取引・仕訳の三つを結んで説明できます。