学習・技術検証用デモ — 本システムは実際の銀行サービスではありません。

公開情報をもとに構築した教育目的のシステムです。実在する個人情報・口座情報・機密情報・認証情報等を入力しないでください。

ミニ銀行ACADEMY SYSTEM LEARNING
教材メニュー
学習進捗0 / 134
あと134項目
BEGINNER · 入門COURSE 09 · BANKING ENGINEERING

銀行エンジニアリング 27:預金の価格は「版」で管理する(金利・見積り・契約時の固定)

金利を変えても、すでに結んだ契約は変えません。価格を版として提案・承認し、契約の瞬間に条件を契約へ固定します。MiniBank v15の定期預金で、その仕組みを確かめます。

34 / 55
BANKING ENGINEERING · 銀行エンジニアリング

v8以降に実装した台帳・記帳エンジンなどを実際に動かし、正常時と異常時の両方から銀行システムの構造を学ぶ。

Prerequisite: BANKING SYSTEM

LEARNING GOALS

このページで学ぶこと

  • 価格を版で管理する理由
  • 見積りと契約時の固定(snapshot)
  • 旧契約(legacy)を推測で書き換えない理由

PLAIN LANGUAGE

まず、ここだけつかむ

1

価格(金利・手数料・中途解約)は版として提案・承認し、未来の契約にだけ適用します。

2

契約を結ぶ瞬間に、その時点の条件を契約へ固定します。あとから価格が変わっても契約は変わりません。

3

見積りと契約の間で条件が変わったときは、契約を止めて見積りをやり直します。

DIFFICULT PARTS, STEP BY STEP

難しいポイントを、順番にほどく

専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。

01

価格の版

やさしく言うと

ある期間に有効な金利や手数料の一式です。

なぜ必要?

いつ、誰の承認で価格が決まったかを残すためです。

Minibankでは

pricing.product_versions。発行後は書き換え不可(PR012)。

02

契約時の固定(snapshot)

やさしく言うと

契約を結んだ時点の条件を契約に写すことです。

なぜ必要?

価格表が変わっても、利息を契約だけで再計算できるようにするためです。

Minibankでは

time_deposits の interest_rate_bps・early_rate_bps・pricing_version_id。

03

legacy(従来の契約)

やさしく言うと

新しい仕組みの前に結ばれた契約です。

なぜ必要?

過去の契約を推測で書き換えないためです。

Minibankでは

pricing_version_id が空の契約。従来の式のまま。

Level 1 基礎:昨日結んだ契約の金利が、今日変わってはいけない

預金の金利や手数料は、経営の判断で変わります。しかし、すでに結んだ契約の条件まで一緒に変わると、顧客は約束と違う利息を受け取り、銀行は過去の会計を説明できなくなります。

そこで価格を『版』として持ち、新しい版は未来の契約にだけ適用し、契約には結んだ時点の条件を写して残します。

  1. 01価格の版を提案(maker)
  2. 02別の管理責任者が承認(checker)
  3. 03有効開始日(未来の営業日)に有効になる
  4. 04見積り → 契約で条件を契約へ固定

Level 2 銀行業務:MiniBankの価格と版の項目

利息の計算は『元本 × 年利bps × 日数 ÷ (10,000 × 365)』を1円未満切り捨てです。日数は、開始日から満期日までのJST暦日の差で数えます。

項目内容例
商品・期間普通預金、または定期預金の3/6/12/24/36か月定期預金 12か月
年利(bps)1bp=0.01%。契約時に固定される80(0.80%)→ 120(1.20%)
中途解約の年利満期前に解約したときの利息の利率0(元本のみ)→ 50(0.50%)
最低預入額これ未満は見積りも契約もできない10,000円
口座維持手数料と免除残高普通預金の月次手数料。残高が免除残高以上なら請求しない550円/100,000円
有効開始日承認日の翌営業日以降。過去や当日の遡及はできない2027-02-01

Level 3 システム:MiniBankでの実装

  • pricing.propose_version が版を提案し、pricing.decide_version が別の管理責任者の承認を記録する。提案者本人は PR005、承認済みの版の書き換えは PR012
  • 有効開始日が営業日以前なら PR004。承認するときにも再確認するので、提案したあとに日付が過ぎた版は承認できない
  • 見積り(pricing.quote_time_deposit)は保存され、発行と同じJST日のうちで、かつ発行の翌営業日まで有効。契約の直前に、期限・版が今も有効かを確かめる(切り替わっていれば PR003)
  • 契約(public.create_time_deposit)は、営業日に有効な版の年利・中途解約の利率・版IDを time_deposits へ写す。あとから書き換えようとすると PR013
  • v15より前の契約は版を持たない(legacy)。金利は従来の値のまま、満期の計算式も従来のまま。推測で版に結びつけない

異常時:見積りのあとで金利が変わった

段階内容
症状見積りは1.20%だったのに、契約しようとすると PR003 で拒否される
原因見積りの翌日に別の版が有効になった(または見積りの期限が過ぎた)
確認契約は1件も作られていない。見積りは使用済みにならず、そのまま残る
対応見積りをやり直し、新しい条件を確認してから契約する

Level 4 アーキテクチャ:条件を契約に持たせる

契約が自分の条件を持っていれば、価格表が何度変わっても、満期の利息は契約の値だけで再計算できます。MiniBankは満期や中途解約の利息を契約の写しから計算し、実行記録と仕訳を突き合わせて照合します(pricing.reconcile)。

どこを確認すればよいか

  • 管理画面「預金価格」:版の一覧、提案と承認、有効開始日
  • 顧客画面「定期預金」:見積り(年利・満期利息・中途解約の目安)と契約

CHECK YOUR UNDERSTANDING

3問で理解チェック

答えを頭の中で考えてから、各項目を開いて確認してください。

Q1新しい金利は、いつから、どの契約に適用されますか?
答え

有効開始日以降に結ぶ新しい契約だけです。既存の契約は変わりません。

Q2提案した人が自分で承認できますか?
答え

できません。別の管理責任者が承認します(PR005)。

Q3見積りのあとで版が切り替わったら契約できますか?
答え

できません。PR003 で拒否され、見積りをやり直します。

ここまで読めましたか?

完全に暗記する必要はありません。大切な考え方を説明できそうなら押してください。

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提案者と決裁者の分離(v14)
  • CURRENT IMPLEMENTATIONsupabase/migrations/20260930110000_v15_pricing.sqlpricing.propose_version / pricing.decide_version / pricing.version_on価格の版の提案・別人の承認と、営業日に有効な版の選択
  • CURRENT IMPLEMENTATIONsupabase/migrations/20260930110000_v15_pricing.sqlpricing.quote_time_deposit / pricing.open_from_quote見積りの保存と、見積りからの契約(失効・版の切替を検出)
  • CURRENT IMPLEMENTATIONsupabase/migrations/20260930110000_v15_pricing.sqlpublic.create_time_deposit / public.cancel_time_deposit契約時に価格の版と金利を固定し、中途解約は契約時の利率で計算
  • CURRENT IMPLEMENTATIONscripts/banking/v15-pricing.test.mjs版の承認、遡及の拒否、契約時の固定、見積りの失効、日次残高の利息、手数料、中途解約、照合のDBテスト