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

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

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

銀行エンジニアリング 18:営業日・EOD・BOD — 銀行の1日の区切り

銀行システムには「今日は何日の業務か」という営業日(Business Date)があり、日の終わり(EOD)と始まり(BOD)に特別な手順があります。MiniBank v7の営業日管理と、v8以降の機能との関係を学びます。

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

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

Prerequisite: BANKING SYSTEM

LEARNING GOALS

このページで学ぶこと

  • Business Date とカレンダー日付の違い
  • v7の営業日の状態とEOD/BOD
  • 営業日外に記帳が止まる理由

PLAIN LANGUAGE

まず、ここだけつかむ

1

営業日(Business Date)は、取引をどの日の業務として扱うかを決める日付です。

2

v7の営業日は OPEN → EOD → CLOSED → BOD → 翌日の OPEN と進み、要所で独立した確認が入ります。

3

営業日が OPEN でない間は、v8以降の記帳も含めて金融操作が BD001 で止まります。

DIFFICULT PARTS, STEP BY STEP

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

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

01

Business Date

やさしく言うと

業務上の日付です。

なぜ必要?

締め処理と取引の日付を一致させるためです。

Minibankでは

ops.business_day_state.business_date。

02

EOD / BOD

やさしく言うと

日の終わりと始まりの処理です。

なぜ必要?

その日の数字を確定し、翌日を正しく始めるためです。

Minibankでは

v7の営業日管理(start_eod・close・start_bod・open_next)。

03

Business Day Gate

やさしく言うと

営業日外の記帳を止める仕組みです。

なぜ必要?

締め中に数字が動かないようにするためです。

Minibankでは

仕訳テーブルのトリガー ops.require_business_day_open。

Level 1 基礎:暦の日付と業務の日付

夜中の0時を過ぎても、銀行の中では前日の締め処理が続いていることがあります。取引をどの日の業務として扱うかを決めるのが営業日(Business Date)です。

Level 2 銀行業務:v7の営業日の状態

  1. 01OPEN(通常営業)
  2. 02EOD_RUNNING(日の終わりの処理中)
  3. 03EOD_REVIEW(結果の確認中)
  4. 04CLOSED(締め完了)
  5. 05BOD_RUNNING(翌日の開始処理)
  6. 06OPEN(営業日を1日進めて再開)
  • EODの開始・中止、締め、BODの開始・翌日オープンは管理責任者が行い、締めと翌日オープンなどは開始した人とは別の人が行う(独立した確認)
  • 締めには、日次処理の完了と、未解決の照合調査がないことが必要
  • 営業日が OPEN でない間は、v7の金融操作は BD001 で拒否される

Level 3 システム:v8〜v11との関係

  • v8のBusiness Eventと、すべての仕訳は同じ営業日ゲートを通るため、営業日が OPEN でない間は v8の記帳・v9の他行送金の受付・v10の仮受金なども BD001 で止まる(DBテストで確認)
  • Operations Center の Core Banking は、営業日が OPEN でなければ AMBER になる
  • v10の会計の日次締め(gl.daily_close)は、v7の営業日(EOD/BOD)とは独立した「会計の検査と記録」。両者を連動させる処理はMiniBankにはない

異常時:EOD中に未処理の取引が見つかった

段階内容
症状EOD_REVIEW 中に、結果不明の他行送金や照合差異が見つかった
判断照合の調査が未解決のままでは v7 の締めは通らない。v10の会計締めでも補助元帳の差異は BLOCKED になる
対応調査を解決してから締める。日次処理が失敗・未開始の場合に限り、開始者とは別の管理責任者がEODを中止して OPEN に戻せる
注意EOD中は新しい記帳ができないため、照会などで状態を進める操作も止まることがある

Level 4 アーキテクチャ:1本のゲートで守る

営業日の判定を各機能に実装すると、新しい機能を追加したときに漏れが生じます。MiniBankは仕訳テーブルそのものにゲート(ops.require_business_day_open)を掛けているため、v8以降に追加した機能も自動的に同じ規則に従います。

どこを確認すればよいか

  • 管理画面「日次処理・調査」(v7の営業日管理)
  • Operations Center の Core Banking と EOD/Incident

CHECK YOUR UNDERSTANDING

3問で理解チェック

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

Q1EOD中にv9の他行送金を受け付けられますか?
答え

受け付けられません(BD001)。

Q2v10の会計締めはv7のEODと連動していますか?
答え

していません。独立した検査と記録です。

Q3EODを開始した本人が締めを完了できますか?
答え

できません。別の管理責任者が行います。

ここまで読めましたか?

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

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-closing会計の日次締め(v10)
  • HISTORICAL IMPLEMENTATIONsupabase/migrations/20260919103649_add_business_day_control.sqlv7の営業日管理(EOD/BOD)の導入
  • CURRENT IMPLEMENTATIONscripts/banking/v12-operations.test.mjs例外・照合差異・承認キュー、追跡、インシデント、営業日外の停止のDBテスト