銀行エンジニアリング Lab 07:Lending Lab(申込 → 審査 → 決裁 → 実行 → 返済)
顧客と銀行の両方の画面で1件の融資を最後まで進め、利息・仕訳・GLの一致を確かめます。自分の提案を自分で決裁しようとして止められる体験もします。
v8以降に実装した台帳・記帳エンジンなどを実際に動かし、正常時と異常時の両方から銀行システムの構造を学ぶ。
Prerequisite: BANKING SYSTEMLEARNING GOALS
このページで学ぶこと
- 申込から返済までの実操作
- 職務分離の拒否を自分で体験する
- 利息の手計算と画面の一致
PLAIN LANGUAGE
まず、ここだけつかむ
顧客と銀行の画面で、1件の融資を申込から返済まで進めます。
チェック不足や自己決裁が止められることを、自分の操作で確かめます。
利息を手計算し、画面の金額・仕訳・GLが一致することを確認します。
DIFFICULT PARTS, STEP BY STEP
難しいポイントを、順番にほどく
専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。
役割の切り替え
同じ画面でも、担当する人によって操作できる範囲が違うことです。
職務の分離を、拒否される体験で理解するためです。
operator(審査)・manager(決裁・実行)・顧客。
手計算との照合
システムの数字を、自分の計算で確かめることです。
計算ルールを理解し、異常な数字に気づけるようになるためです。
日割り・切捨て・元金均等。
結果不明への対応
応答が消えたとき、新しい操作ではなく元の操作を確かめることです。
二重の実行を避けるためです。
「結果を照会」と冪等キー。
準備
seed で、alice に実行済みの融資(120,000円)、bob に審査待ちの申込が作られています。審査の担当は operator、決裁と実行は管理責任者(manager)です。
open 'http://localhost:54336/local/login?as=operator&next=/admin/lending'演習
| 演習 | 操作 | 観察すること |
|---|---|---|
| 1. 審査を引き受ける | operator:bob の申込を claim | 状態が「審査中」。お金は動かない |
| 2. チェック不足で提案する | 確認項目を外したまま「承認を提案」 | DBが拒否し理由が表示される(LN008) |
| 3. 提案する | 4項目にチェックして提案 | 提案 r1。決裁待ちのキューに入る |
| 4. 自分で決裁してみる | operator のまま決裁を試す | 権限がない、または提案者本人として拒否される |
| 5. 決裁する | manager:承認 | 承認済み(実行前)。期限は承認日+14日。仕訳はまだない |
| 6. 実行する | manager:融資を実行 | 貸付金と預金が同時に増え、GL 1300 と補助元帳が一致 |
| 7. 返済する | alice:約定日以降に「返済する」 | 利息を手計算した額と一致(例:30日で591円) |
| 8. 結果不明を体験する | ブラウザの開発者ツールでネットワークをオフラインにして返済を押し、通信が切れたあとに「結果を照会」(このボタンは通信が実際に切れたときだけ出る) | 同じ操作として確認でき、二重に引き落とされない |
振り返り
- 承認と実行が別の記録であることを、画面のどこで確認できたか
- 提案した人が決裁できないことを、権限と人の同一性のどちらが止めたか
- 利息の手計算と画面が一致したか。1円の差が出るならどの丸めが原因か
CHECK YOUR UNDERSTANDING
3問で理解チェック
答えを頭の中で考えてから、各項目を開いて確認してください。
Q1承認した直後に口座残高は変わりますか?
変わりません。実行したときに初めて預金が増えます。
Q230日分の利息を手計算で求めるには?
元本×600×30÷3,650,000の小数を切り捨てます(120,000円なら591円)。
Q3応答が消えたとき、まず何をしますか?
新しく返済せず、元のキーで結果を照会します。
完全に暗記する必要はありません。大切な考え方を説明できそうなら押してください。
SOURCE TRAIL
根拠と関連教材
CURRENT IMPLEMENTATIONは確認したrepository内の実装です。HISTORICAL IMPLEMENTATIONは導入・修正の履歴で、後続migrationによる再定義があり得ます。RELATED LESSONは教材への案内で、実装の一次Sourceではありません。ASSUMPTIONは仮定、UNKNOWNは未確認を表します。
確認基点: d02eae8914f39cbf06bfe422dc39c71886f82b3e / 2026-09-11。稼働環境への適用確認: UNKNOWN。パス実在の自動検査と、記述した技術的事実の確認は別です。
Implementation Status: IMPLEMENTED IN MINIBANK(この教材が扱うコードの範囲)
- RELATED LESSON/docs/be-lending-basics申込から実行まで
- RELATED LESSON/docs/be-lending-interest-repayment利息と返済
- CURRENT IMPLEMENTATION
src/app/admin/(protected)/lending/page.tsxLendingPage()管理画面 融資・与信(表示は LendingAdminView) - CURRENT IMPLEMENTATION
scripts/banking/v14-lending.test.mjs審査・決裁・実行・利息・返済・延滞・分類・訂正・競合・権限のDBテスト