DEEP GUIDE 09
一つの変更の影響を見積もる
仮の「送金上限」追加を、要件からテストまで通して考える。
このガイドで追う一件
ここだけは新機能の実装例ではなく、設計の練習です。「一回の送金は10万円まで」という新しい要件が来たら、どこを変える必要があるでしょうか。
コードを読む順番
以下は MiniBank v1.0.0 の確認先です。マイグレーションは順に適用されるため、関数の最終形を調べるときは後続の変更も確認してください。
- 1
約束を具体的にする
1回あたりの上限か、1日合計の上限かを分けます。対象者、通貨、上限の変更方法、超過時の返答も決めないと、コードの条件を書けません。
確認するファイル
docs/requirements.md - 2
入力と API の境界を探す
送金の入力スキーマと API 応答を読み、利用者が誤入力に気付ける場所を探します。ただし画面だけの制限で実行を止めたことにはなりません。
確認するファイル
src/domain/transfer/schema.ts - 3
確定時の条件を考える
execute_transfer で金額と現在の状態を確認する位置を探します。日次合計なら、同時実行でも上限を超えない集計とロックの設計が必要です。
確認するファイル
supabase/migrations/20260819163038_create_execute_transfer_function.sql - 4
境界値と再送を試す
上限ちょうど、1円超過、同じキーの再送、同時送金をテスト候補にします。変更が仕訳や監査の記録を壊していないことも確かめます。
確認するファイル
scripts/regression/suites/transfer.mjs
失敗時・範囲外の確認
この「10万円の上限」は MiniBank v1.0.0 に実装済みだと主張するものではありません。変更するなら、要件・API・データベース・テストにどんな影響が及ぶかを考える題材です。
ここまでで説明できること
一つの新しい条件を、画面だけでなく確定処理とテストまで通して設計できます。