# バス業務標準化プロジェクト - 標準データモデル（テーブル定義書）

## 前提事項

### コードとIDの使い分けについての考え方

- 便コードなどの `コード` は、業務機能要件などに基づき管理対象のデータを一意に識別する規則性のある値を明示的に決めて登録することを想定したカラムである
  - 各社の統一した規格を定めて体系的な10～20桁程度の文字列で採番することを推奨する
    - 採番例
      - 系統コード: [路線コード] + [系統グループコード] + [連番] (例: R001100101, R01101-01)
      - 便コード: `T` + [路線コード] + [改正年月] + [連番] (例: T0012025100123)
  - 該当エンティティのデータを登録するAPIでは原則としてリクエストボディに含める
    - 既存コードと重複した値を登録しようとするとエラー（`409: Conflict`）となるためレコード作成単位に一意になるように採番ルールを設計する

- 勤務計画IDなどの `ID` は、業務担当者または業務システム運用者が意識せずサロゲートキー（代理キー）としてシステム側で自動採番することを想定したカラムである
  - IDカラムの値は `UUID v7`（時刻順序を考慮したユニーク識別子）で採番することを想定して定義している
  - IDカラムの値を数字の連番とする場合は `INTEGER`（数値型）に置き換えても問題ありません
  - 該当エンティティのデータを登録するAPIではリクエストボディに含める必要がない

### 区分値についての考え方

- 原則としてそれぞれの区分値を示す英単語（`weekday`, `sunday_and_holiday` など）の文字列で定義することを推奨する
  - `01`,`02`...などの値で代替するとそれぞれの値がどういう意味を持つかをデータから読み取れないため
- 追加・削除などの更新頻度が高い区分値は区分マスタとして切り出すことが一般的であるが、事業者の運用方針に依存するため標準データモデルでは最低限に必要と考える区分マスタのみ定義する

### レコードの削除についての考え方

- 各テーブルのレコード削除は論理削除ではなく物理削除を推奨するが、各社の実装方針に依存するため削除フラグなどのカラムは標準データモデルでは定義しない
  - 物理削除で実装する場合は、必要に応じてアーカイブテーブルを同一データベースか別ストレージに用意して削除データをバックアップしておくなど復元可能な状態を保つことが推奨される
  - 論理削除で実装する場合は、対象のテーブルに削除日時 `deleted_at` や削除フラグ `is_deleted` などを追加する前に業務的に意味を持つカラム（例：退職フラグ `is_retired`）を設計することを推奨する

### システム運用等に使用する共通カラムについての考え方

- 一般的に全てのテーブルに 作成日時 `created_at` や更新日時 `updated_at` 、排他制御のためにロック番号 `lock_no` などの共通カラムを持たせることがあるが、各社の実装方針に依存するため標準データモデルでは定義しない
- マスタデータ運用管理のために適用期間の開始日 `start_date` や終了日 `end_date` やバージョン（世代番号）`version` を持つことがあるが業務的な意味がある場合を除いて標準データモデルでは定義しない

### 導出属性についての考え方

- 導出属性とは同じテーブルの中で「その値が他のカラムから計算可能である」値のことを指すが、各社の実装方針に依存するためそのようなカラムは原則として標準データモデルでは定義しない
  - 例えば、`始点距離` 「始点停留所から特定の停留所までの距離」は `区間距離` 「特定の停留所から次の停留所までの距離」の累計で計算されるため `区間距離` のみを定義する、など

### GTFS-JPとの互換性についての考え方

- 標準データモデルは、国土交通省が公開している [静的バス情報フォーマット（GTFS-JP)仕様書（第３版）　（2021年７月30日）](https://www.mlit.go.jp/sogoseisaku/transport/content/001419163.pdf) で必須とされているファイルや項目との互換性を担保します
  - 標準仕様としての一貫性を担保するため、物理名やデータ型がGTFS-JPの仕様と一致していない項目が存在します（GTFSデータの抽出時にはETL等による変換処理が必要となっています）
  - GTFS-JPと互換性のあるカラムには、備考列に `[GTFS: agency.txt > agency_id]` の記載されているため参考としてください

---

## 1.事業計画管理

### テーブル名: 事業者 （M17-ENTITY-101）

- **テーブル物理名**: `operators`
- **テーブル説明**: サービスを提供するバス事業者の基本情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 事業者コード | `operator_code` | PK | VARCHAR(20) | ○ | | [GTFS: agency.txt > agency_id] 事業者の法人番号を設定 |
| 事業者名 | `operator_name` | | VARCHAR(100) | ○ | | [GTFS: agency.txt > agency_name] 旅客が交通機関を識別しやすい名称を設定 |
| 事業者正式名称 | `operator_official_name` | | VARCHAR(100) | ○ | | [GTFS: agency_jp.txt > agency_official_name] 申請等に必要な正式名称を設定 |
| 郵便番号 | `zip_number` | | VARCHAR(7) | | | [GTFS: agency_jp.txt > agency_zip_number] ハイフンなしの半角数字７桁で設定 |
| 住所 | `address` | | VARCHAR(255) | | | [GTFS: agency_jp.txt > agency_zip_number] 都道府県から住居表示通りに略さずに全角で設定 |
| 代表者肩書 | `president_post` | | VARCHAR(50) | | | [GTFS: agency_jp.txt > agency_president_pos] 申請者の肩書を設定 |
| 代表者氏名 | `president_name` | | VARCHAR(50) | | | [GTFS: agency_jp.txt > agency_president_name] 姓と名の間は、全角スペース１文字を挿入 |
| 事業者URL | `agency_url` | | VARCHAR(255) | ○ | | [GTFS: agency.txt > agency_url] 原則として、事業者HPのトップページのURLを設定 |
| 代表電話番号 | `phone_number` | | VARCHAR(20) | | | [GTFS: agency.txt > agency_phone] 全社の窓口となる電話番号（本社代表電話、運輸部門代表電話、お客様センター等）を設定 |
| オンライン購入URL | `online_fare_url` | | VARCHAR(255) | | | [GTFS: agency.txt > agency_fare_url] 利用者が乗車券等をオンラインで購入な場合に、そのURLを設定（オンラインで購入不可の場合は省略） |
| メールアドレス | `email` | | VARCHAR(255) | | | [GTFS: agency.txt > agency_email] 利用者が問合せ等で利用可能なEメールアドレスを設定 |

### テーブル名: 営業所 （M17-ENTITY-102）

- **テーブル物理名**: `offices`
- **テーブル説明**: 事業者が保有する営業所の情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 営業所コード | `office_code` | PK | VARCHAR(20) | ○ | | 営業所の一意な識別子 |
| 事業者コード | `operator_code` | | VARCHAR(20) | ○ | | operatorsテーブルへの外部キー |
| 営業所名 | `office_name` | | VARCHAR(100) | ○ | | |
| 住所 | `address` | | VARCHAR(255) | | | |
| 電話番号 | `phone_number` | | VARCHAR(20) | | | |

### テーブル名: 運行管理者 （M17-ENTITY-103）

- **テーブル物理名**: `operation_managers`
- **テーブル説明**: 運行管理者資格証または基礎講習修了など、運行管理者または運行管理補助者となる資格を持つ社員を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 社員番号 | `employee_number` | PK | VARCHAR(20) | ○ | | |
| 営業所コード | `office_code` | | VARCHAR(20) | ○ | | officesテーブルへの外部キー（現職で選任されている営業所） |
| 氏名 | `manager_name` | | VARCHAR(20) | ○ | | |
| 資格者証番号 | `certificate_number` | | VARCHAR(20) | ○ | | 運行管理者資格者証の番号 |
| 資格種別 | `certificate_type` | | VARCHAR(20) | ○ | | 区分値（例）: '一般乗合', '一般貸切' 等 |
| 交付年月日 | `issue_date` | | DATE | ○ | | 資格者証の交付日 |
| 基礎講習修了日 | `basic_training_completion_date` | | DATE | | | 資格者証未取得で補助者になる場合の要件 |
| 最終選任時講習受講日 | `last_training_date` | | DATE | | | 選任前または選任後の定期受講の直近実績日 |

### テーブル名: 運行管理者選任履歴 （M17-ENTITY-104）

- **テーブル物理名**: `operation_manager_appointments`
- **テーブル説明**: 営業所ごとに法令に基づき選任された運行管理者および補助者の履歴

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 選任履歴ID | `appointment_id` | PK | VARCHAR(36) | ○ | | |
| 営業所コード | `office_code` | | VARCHAR(20) | ○ | | officesテーブルへの外部キー |
| 社員番号 | `employee_number` | | VARCHAR(20) | ○ | | operation_manager_holdersへの外部キー |
| 選任区分 | `appointment_type` | | VARCHAR(20) | ○ | | 区分値（例）: '統括運行管理者', '運行管理者', '運行管理補助者' |
| 選任年月日 | `appointment_date` | | DATE | ○ | | 社内辞令および届出上の選任日 |
| 解任年月日 | `dismissal_date` | | DATE | | | 解任された日（未設定の場合は現職） |
| 届出年月日 | `notification_date` | | DATE | | | 運輸支局へ届け出た日 |
| 兼務フラグ | `is_concurrent` | | BOOLEAN | ○ | false | 他職務（運転手等）との兼務有無（補助者の場合） |

### テーブル名: 車両保管場所 （M17-ENTITY-105）

- **テーブル物理名**: `vehicle_storage_locations`
- **テーブル説明**: 事業者が車両を留め置くために保有または契約している全ての場所（車庫、営業所内駐車場、隔地駐車場など）の情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 保管場所コード | `storage_location_code` | PK | VARCHAR(20) | ○ | | 場所を一意に識別するコード |
| 保管場所名 | `storage_location_name` | | VARCHAR(100) | ○ | | 例：渋谷車庫 |
| 保管場所区分 | `storage_type` | | VARCHAR(20) | ○ | | 区分値（例）: '営業所併設車庫', '独立車庫', '契約駐車場', '折返場' |
| 営業所コード | `office_code` | | VARCHAR(20) | ○ | | 管轄する営業所のコード |
| 住所 | `address` | | VARCHAR(255) | | | |
| 収容可能台数 | `capacity` | | INTEGER | | | 施設全体のキャパシティ |
| 所有形態区分 | `ownership_type` | | VARCHAR(20) | | | 区分値（例）: '自社保有', '賃貸' |
| 契約開始日 | `contract_start_date` | | DATE | | | 賃貸の場合 |
| 契約終了日 | `contract_end_date` | | DATE | | | 賃貸の場合 |
| 緯度 | `latitude` | | NUMERIC(9, 6) | | | 地図表示や配車システムでの位置計算用 |
| 経度 | `longitude` | | NUMERIC(9, 6) | | | 地図表示や配車システムでの位置計算用 |

### テーブル名: 許認可申請管理 （M17-ENTITY-106）

- **テーブル物理名**: `regulatory_applications`
- **テーブル説明**: 運輸局等への許認可申請・届出案件の進捗管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 許認可申請ID | `regulatory_application_id` | PK | VARCHAR(36) | ○ | | |
| 許認可申請区分 | `regulatory_application_type` | | VARCHAR(20) | ○ | | 区分値（例）: '事業計画変更', '運賃設定', '路線新設' 等 |
| 申請件名 | `subject` | | VARCHAR(100) | ○ | | 例: ○○線新設に伴う事業計画変更 |
| 申請手続種別 | `procedure_type` | | VARCHAR(20) | ○ | | 区分値（例）: '許可', '認可', '届出' |
| 提出先機関 | `submission_destination` | | VARCHAR(50) | ○ | | 例: 関東運輸局長, ○○運輸支局長 |
| 申請日 | `submission_date` | | DATE | | | 実際に提出した日付 |
| 処理日 | `processing_date` | | DATE | | | 申請が認可された日付または届出が受理された日付 |
| 実施予定日 | `implementation_date` | | DATE | | | ダイヤ改正日や運賃改定日 |
| ステータス | `status` | | VARCHAR(20) | ○ | '作成中' | 区分値（例）: '事前相談中', '申請中', '補正中', '完了' |
| 備考 | `remarks` | | TEXT | | | |

### テーブル名: 許認可申請明細 （M17-ENTITY-107）

- **テーブル物理名**: `regulatory_application_details`
- **テーブル説明**: 1つの申請案件に含まれる具体的な変更対象（路線、停留所、車両など）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 申請明細ID | `application_detail_id` | PK | VARCHAR(36) | ○ | | |
| 許認可申請ID | `regulatory_application_id` | | VARCHAR(36) | ○ | | regulatory_applicationsテーブルへの外部キー |
| 対象種別 | `target_type` | | VARCHAR(20) | ○ | | 区分値（例）: '路線', '系統', '停留所', '車両', '運賃' |
| 営業所コード | `office_code` | | VARCHAR(20) | | | officesテーブルへの外部キー（営業所に関連する申請の場合） |
| 保管場所コード | `storage_location_code` | | VARCHAR(20) | | | vehicle_storage_locationsへの外部キー（営業所の車庫や駐車場に関連する申請の場合） |
| 系統コード | `line_code` | | VARCHAR(20) | | | linesテーブルへの外部キー（系統に関連する申請の場合） |
| 停留所コード | `stop_code` | | VARCHAR(20) | | | stopsテーブルへの外部キー（停留所に関連する申請の場合） |
| 標柱コード | `stop_pole_code` | | VARCHAR(20) | | | stop_polesテーブルへの外部キー（標柱に関連する申請の場合） |
| 車両番号 | `vehicle_number` | | VARCHAR(20) | | | vehiclesテーブルへの外部キー（車両に関連する申請の場合） |
| 運賃改定ID | `fare_revision_id` | | VARCHAR(36) | | | fare_revisionsテーブルへの外部キー（運賃改定に関連する申請の場合） |
| 選任履歴ID | `appointment_id` | | VARCHAR(36) | | | operation_manager_appointmentsテーブルへの外部キー（運転管理者配置に関連する申請の場合） |
| 変更概要 | `change_summary` | | VARCHAR(255) | | | 例: 停留所の移設(○○m移動) |

### テーブル名: 補助金制度 （M17-ENTITY-108）

- **テーブル物理名**: `subsidy_programs`
- **テーブル説明**: 国や自治体の補助金制度（地域公共交通確保維持事業など）の定義

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 補助制度コード | `subsidy_program_code` | PK | VARCHAR(20) | ○ | | |
| 補助制度名 | `program_name` | | VARCHAR(100) | ○ | | 例: 地域間幹線系統確保維持費補助金 |
| 実施主体 | `organizer` | | VARCHAR(50) | ○ | | 国、県、市町村 |
| 補助区分 | `subsidy_category` | | VARCHAR(20) | ○ | | 区分値（例）: '欠損補助', '車両購入', '利用支援' |
| 補助率・限度額 | `subsidy_rate_description` | | VARCHAR(100) | | | 1/2, 定額 等の説明 |

### テーブル名: 補助金申請 （M17-ENTITY-109）

- **テーブル物理名**: `subsidy_applications`
- **テーブル説明**: 年度ごとの補助金申請・請求の基本情報を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 補助金申請ID | `subsidy_application_id` | PK | VARCHAR(36) | ○ | | |
| 補助制度コード | `subsidy_program_code` | | VARCHAR(20) | ○ | | subsidy_programsテーブルへの外部キー |
| 対象年度 | `fiscal_year` | | INTEGER | ○ | | |
| 申請ステータス | `status` | | VARCHAR(20) | ○ | | 区分値（例）: '予算協議', '申請中', '交付決定', '実績報告', '額確定' |
| 申請金額 | `applied_amount` | | INTEGER | | | |
| 確定金額 | `confirmed_amount` | | INTEGER | | | |
| 交付決定日 | `decision_date` | | DATE | | | |

### テーブル名: 補助金算出明細 （M17-ENTITY-110）

- **テーブル物理名**: `deficit_subsidy_calculations`
- **テーブル説明**: 運行経費補助申請のための路線ごとの計算詳細（地域キロ当たり標準経常費用の適用計算など）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 算出明細ID | `calculation_id` | PK | VARCHAR(36) | ○ | | |
| 補助金申請ID | `subsidy_application_id` | | VARCHAR(36) | ○ | | subsidy_applicationsテーブルへの外部キー |
| 系統コード | `line_code` | | VARCHAR(20) | ○ | | linesテーブルへの外部キー |
| 計画運行回数 | `planned_trip_count` | | INTEGER | | | |
| 実績運行回数 | `actual_trip_count` | | INTEGER | | | |
| 補助対象キロ | `eligible_km` | | NUMERIC(10,2) | | | |
| 適用キロ単価 | `applied_cost_per_km` | | INTEGER | | | 実績単価とブロック単価の小さい方 |
| 認定経常費用 | `certified_expenses` | | INTEGER | | | 補助対象キロ × 適用キロ単価 |
| 認定経常収益 | `certified_revenues` | | INTEGER | | | 運賃収入等 |
| 補助対象欠損額 | `eligible_deficit_amount` | | INTEGER | | | |

### テーブル名: 補助金申請車両明細 （M17-ENTITY-111）

- **テーブル物理名**: `vehicle_subsidy_details`
- **テーブル説明**: 車両購入補助やノンステップバス導入促進など、車両に紐づく補助申請の詳細

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 車両補助明細ID | `vehicle_subsidy_detail_id` | PK | VARCHAR(36) | ○ | | |
| 補助金申請ID | `subsidy_application_id` | | VARCHAR(36) | ○ | | subsidy_applicationsテーブルへの外部キー |
| 車両番号 | `vehicle_number` | | VARCHAR(20) | ○ | | vehiclesテーブルへの外部キー |
| 車両購入額 | `purchase_price` | | INTEGER | | | 税抜等の規定による |
| 補助対象額 | `eligible_amount` | | INTEGER | | | 査定後の対象額 |
| 処分制限期間満了日 | `restriction_expiry_date` | | DATE | | | 財産処分制限期間（減価償却期間等） |

## 2.運行計画管理

### テーブル名: 停留所 （M17-ENTITY-201）

- **テーブル物理名**: `stops`
- **テーブル説明**: バスの停留所の位置情報や名称

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 停留所コード | `stop_code` | PK | VARCHAR(20) | ○ | | [GTFS: stops.txt > stop_id (location_type=1)] |
| 停留所名 | `stop_name` | | VARCHAR(100) | ○ | | [GTFS: stops.txt > stop_name] |
| よみがな | `stop_name_kana` | | VARCHAR(100) | | | |
| 設置場所 | `location_description` | | VARCHAR(255) | | | [GTFS: stops.txt > stop_desc] 停留所に隣接する施設等に関する付加情報を設定 |
| 緯度 | `latitude` | | NUMERIC(9, 6) | ○ | | [GTFS: stops.txt > stop_lat] |
| 経度 | `longitude` | | NUMERIC(9, 6) | ○ | | [GTFS: stops.txt > stop_lon] |
| ターミナルフラグ | `is_terminal_stop` | | BOOLEAN | | | 路線における始発点や終着点または乗継地点などになっている停留所の場合 `true` |
| 折り返し時分 | `turnaround_minutes` | | INTEGER | | | ターミナルフラグが `true` である停留所で折り返す場合に停車する時間の基準値 |
| 設置状態区分 | `installation_status` | | VARCHAR(20) | ○ | | 区分値（例）: '候補', '申請中', '設置済', '廃止' など |
| 利用開始年月日 | `valid_from_date` | | DATE | ○ | | |
| 利用終了年月日 | `valid_to_date` | | DATE | | 9999/12/31 | |

### テーブル名: 標柱 （M17-ENTITY-202）

- **テーブル物理名**: `stop_poles`
- **テーブル説明**: 停留所に設置される具体的な「のりば」（ポール）の情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 標柱コード | `stop_pole_code` | PK | VARCHAR(20) | ○ | | [GTFS: stops.txt > stop_id (location_type=0)] |
| 停留所コード | `stop_code` | | VARCHAR(20) | ○ | | [GTFS: stops.txt > parent_station] stopsテーブルへの外部キー |
| 標柱名 | `stop_pole_name` | | VARCHAR(100) | | | [GTFS: stops.txt > platform_code（「番」「のりば」のような語句があればトリミング）] のりば情報を設定（例: 渋谷駅東口 51番のりば） |
| 緯度 | `latitude` | | NUMERIC(9, 6) | ○ | | [GTFS: stops.txt > stop_lat] |
| 経度 | `longitude` | | NUMERIC(9, 6) | ○ | | [GTFS: stops.txt > stop_lon] |
| 設置場所 | `location_description` | | VARCHAR(255) | | | [GTFS: stops.txt > stop_desc] 標柱に隣接する施設等に関する付加情報を設定 |
| 停車可能台数 | `stopping_capacity` | | INTEGER | | | 運行中に同時に乗下車のために停車可能な車両台数 |
| 待機可能台数 | `parking_capacity` | | INTEGER | | | 運行前や経由地、乗継地点として待機する場合に待機可能な台数 |
| 上屋有無 | `has_shelter` | | BOOLEAN | | true | |
| 占有フラグ | `is_exclusive` | | BOOLEAN | | true | 特定系統専用の標柱かどうかを示すフラグ |
| 設置状態区分 | `installation_status` | | VARCHAR(20) | ○ | | 区分値（例）: '候補', '申請中', '設置済', '廃止' |
| 利用開始年月日 | `valid_from_date` | | DATE | ○ | | |
| 利用終了年月日 | `valid_to_date` | | DATE | | 9999/12/31 | |
| 地帯コード | `zone_code` | | VARCHAR(20) | | | [GTFS: stops.txt > zone_id] fare_zonesテーブルへの外部キー（運賃が地帯制の場合、対応する運賃エリアを設定） |

### テーブル名: 路線 （M17-ENTITY-203）

- **テーブル物理名**: `routes`
- **テーブル説明**: 営業所が管轄する路線の基本情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 路線コード | `route_code` | PK | VARCHAR(20) | ○ | | [GTFS: routes.txt > route_id] 路線の一意な識別子 |
| 営業所コード | `office_code` | | VARCHAR(20) | ○ | | [GTFS: routes.txt > office_id] officesテーブルへの外部キー |
| 路線名 | `route_name` | | VARCHAR(100) | ○ | | |
| 営業開始年月日 | `operation_start_date` | | DATE | ○ | | 路線の営業運行を開始する日 |
| 営業終了年月日 | `operation_end_date` | | DATE | | 9999/12/31 | 路線の廃止日 |

### テーブル名: 系統 （M17-ENTITY-204）

- **テーブル物理名**: `lines`
- **テーブル説明**: 路線を構成する具体的な運行系統（往路・復路、経由違い、途中止まり等を区別する経路の単位）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 系統コード | `line_code` | PK | VARCHAR(20) | ○ | | [GTFS: trips.txt > jp_pattern_id] 運行系統を一意に識別するコード |
| 路線コード | `route_code` | | VARCHAR(20) | ○ | | [GTFS: routes.txt > jp_parent_route_id] routesテーブルへの外部キー |
| 系統グループコード | `line_group_code` | | VARCHAR(20) | | | 同経路の「上り（往路）」や「下り（復路）」などの系統を同一のグループとして識別するためのコード |
| 系統名 | `line_long_name` | | VARCHAR(100) | | | [GTFS: routes.txt > route_long_name] 例: 東京駅八重洲口～月島駅前～東京ビッグサイト |
| 系統略称 | `line_short_name` | | VARCHAR(50) | | | [GTFS: routes.txt > route_short_name (系統番号がない場合)] 例: 新橋駅前行 |
| 系統番号 | `line_number` | | VARCHAR(20) | | | [GTFS: routes.txt > route_short_name] 例: [渋88] |
| 系統情報 | `line_description` | | TEXT | | | [GTFS: routes.txt > route_desc] 不定期の運行等を説明する必要がある場合に使用（例：「学校休業日に一部運休となる便があります」等） |
| 出発待機場所コード | `departure_wait_location_code` | | VARCHAR(20) | | | 始発の出発待機を行う車庫や停留所、営業所などのコード |
| 経由名 | `via_name` | | VARCHAR(100) | | | |
| 経由地情報 | `via_description` | | TEXT | | | |
| 方向詳細区分 | `direction_detail_type` | | VARCHAR(20) | | | 区分値（例）: '上り', '下り', '循環（右回り）', '循環（左回り）' |
| 走行可能最大車格コード | `max_vehicle_size_class_code` | | VARCHAR(20) | | | 系統を走行可能な最大サイズ |
| 運行開始年月日 | `service_start_date` | | DATE | | | 認可を受けて系統の運行を開始（新設）する日付 |
| 運行終了年月日 | `service_end_date` | | DATE | | | 認可を受けて系統の運行を終了（廃止）する日 |
| 休廃止申請年月日 | `suspension_application_date` | | DATE | | | 系統の休止または廃止を申請した日 |
| 休止開始年月日 | `suspension_start_date` | | DATE | | | 運行を一時的に休止する期間の開始日 |
| 休止終了年月日 | `suspension_end_date` | | DATE | | | 運行を再開する予定日（休止終了日） |
| 系統色 | `route_color` | | VARCHAR(6) | | | [GTFS: routes.txt > route_color] 16進数カラーコード |
| 系統文字色 | `route_text_color` | | VARCHAR(6) | | '000000' | [GTFS: routes.txt > route_text_color] |
| 系統URL | `route_url` | | VARCHAR(255) | | | [GTFS: routes.txt > route_url] 系統に特化した情報を案内するための特定のURLがある場合設定する |

### テーブル名: 系統停留所 （M17-ENTITY-205）

- **テーブル物理名**: `line_stops`
- **テーブル説明**: 系統が経由する停留所の順序、距離、所要時間

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 系統停留所ID | `line_stop_id` | PK | VARCHAR(36) | ○ | | |
| 系統コード | `line_code` | UK | VARCHAR(20) | ○ | | linesテーブルへの外部キー |
| 停留所コード | `stop_code` | UK | VARCHAR(20) | ○ | | stopsテーブルへの外部キー |
| 標柱コード | `stop_pole_code` | | VARCHAR(20) | ○ | | [GTFS: stop_times.txt > stop_id] stop_polesテーブルへの外部キー |
| 順序 | `stop_sequence` | UK | INTEGER | ○ | | [GTFS: stop_times.txt > stop_sequence] 停留所（標柱）を通過する順番 |
| 乗車区分 | `pickup_type` | | VARCHAR(20) | | | [GTFS: stop_times.txt > pickup_type] 区分値（例）: '通常', '乗車不可', 'デマンド予約必須' |
| 降車区分 | `drop_off_type` | | VARCHAR(20) | | | [GTFS: stop_times.txt > drop_off_type] 区分値（例）: '通常', '降車不可', 'デマンド予約必須' |
| 区間キロ | `section_distance_km` | | NUMERIC(5, 2) | | | [GTFS: stop_times.txt > shape_dist_traveled（起点からの累計距離を算出）] 直前停留所からの距離(km) |
| 主要経由地フラグ | `is_major_stop` | | BOOLEAN | | | その停留所が主要な経由地であるかどうか |
| 運行経路ID | `operation_route_id` | | VARCHAR(36) | | | [GTFS: trips.txt > shape_id（系統として経路が一意の場合に使用）] operation_routesテーブルへの外部キー（直前停留所から本停留所までの運行経路） |

### テーブル名: 基準区間時分 （M17-ENTITY-206）

- **テーブル物理名**: `standard_travel_times`
- **テーブル説明**: 区間（系統における指定の停留所と次の停留所までの経路）における曜日や特定の条件・期間などの運行条件と時間帯毎の標準走行時間を管理するマスタ

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 基準区間ID | `standard_section_id` | PK | VARCHAR(36) | ○ | | 曜日や時間帯単位に対象の区間を特定するID |
| ダイヤ改正ID | `revision_id` | UK | VARCHAR(36) | ○ | | timetable_revisionsテーブルへの外部キー（ダイヤ改正のタイミングで見直しをかける前提） |
| 系統停留所ID | `line_stop_id` | UK | VARCHAR(36) | ○ | | line_stopsテーブルへの外部キー（対象の系統における区間基準となる停留所となり、この停留所から次の停留所までを1区間とする） |
| 運行日区分コード | `operation_day_type_code` | UK | VARCHAR(20) | ○ | | operation_day_typesテーブルへの外部キー |
| 運行時間帯区分コード | `operation_time_slot_type_code` | UK | VARCHAR(20) | ○ | | operation_time_slot_typesテーブルへの外部キー |
| 所要走行時間_秒 | `required_travel_seconds` | | INTEGER | ○ | | 対象の停留所から次の停留所までの間の区間を走行する基準時間 |
| 所要停車時間_秒 | `required_stop_seconds` | | INTEGER | | | 対象の停留所で乗客の乗降のために停車すべき基準時間（ターミナル停留所の場合は折り返し時分を利用する） |

### テーブル名: 系統別運行計画 （M17-ENTITY-207）

- **テーブル物理名**: `line_operation_plans`
- **テーブル説明**: 系統において運行日、時間帯の単位での運行本数（便数）の目標値や始発・終発時間を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 系統別運行計画ID | `line_operation_plan_id` | PK | VARCHAR(36) | ○ | | |
| 系統コード | `line_code` | UK | VARCHAR(20) | ○ | | linesテーブルへの外部キー |
| 運行日区分コード | `operation_day_type_code` | UK | VARCHAR(20) | ○ | | operation_day_typesテーブルへの外部キー |
| 運行時間帯区分コード | `operation_time_slot_type_code` | UK | VARCHAR(20) | ○ | | operation_time_slot_typesテーブルへの外部キー |
| 計画通常運行便数 | `planned_normal_trip_count` | | INTEGER | | | その時間帯に確保すべき運行本数（便数）の目標値 |
| 計画臨時続行便数 | `planned_extra_trip_count` | | INTEGER | | | その時間帯に確保すべき臨時便・続行便の運行本数（便数）の目標値 |
| 始発時刻 | `first_trip_departure_time` | | TIME | | | 始発時間帯の場合に系統単位の始発時間を管理する |
| 終発時刻 | `last_trip_departure_time` | | TIME | | | 終発時間帯の場合に系統単位の終発時間を管理する |

### テーブル名: 運行日カレンダー （M17-ENTITY-208）

- **テーブル物理名**: `operation_calendars`
- **テーブル説明**: カレンダー上の日付とその日に適用するダイヤパターン（運行日区分）との紐づけの情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| カレンダー日付 | `calendar_date` | PK | DATE | ○ | | [GTFS: calendar_dates.txt > date] |
| 営業所コード | `office_code` | PK | VARCHAR(20) | ○ | | |
| 運行日区分コード | `operation_day_type_code` | | VARCHAR(20) | | | [GTFS: calendar_dates.txt > service_id] operation_day_typesテーブルへの外部キー |
| 適用仕業グループ | `duty_group_code` | | VARCHAR(20) | | | duty_groupsテーブルへの外部キー（対象の日付にどの仕業グループの仕業を計画化すべきかを定義） |

### テーブル名: 運行日区分 （M17-ENTITY-209）

- **テーブル物理名**: `operation_day_types`
- **テーブル説明**: 平日、土日、祝日、特別ダイヤなどのダイヤパターンを管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運行日区分コード | `operation_day_type_code` | PK | VARCHAR(20) | ○ | | 運行日区分を一意にするコード |
| 運行日区分名 | `operation_day_type_name` | | VARCHAR(20) | ○ | | [GTFS: calendar.txt > service_id] 平日、土曜、日祝、年末特別ダイヤ など |
| 月曜日 | `monday` | | BOOLEAN | ○ | | [GTFS: calendar.txt > monday] 月曜日に運行する運行パターンの場合は true を設定 |
| 火曜日 | `tuesday` | | BOOLEAN | ○ | | [GTFS: calendar.txt > tuesday] 火曜日に運行する運行パターンの場合は true を設定 |
| 水曜日 | `wednesday` | | BOOLEAN | ○ | | [GTFS: calendar.txt > wednesday] 水曜日に運行する運行パターンの場合は true を設定 |
| 木曜日 | `thursday` | | BOOLEAN | ○ | | [GTFS: calendar.txt > thursday] 木曜日に運行する運行パターンの場合は true を設定 |
| 金曜日 | `friday` | | BOOLEAN | ○ | | [GTFS: calendar.txt > friday] 金曜日に運行する運行パターンの場合は true を設定 |
| 土曜日 | `saturday` | | BOOLEAN | ○ | | [GTFS: calendar.txt > saturday] 土曜日に運行する運行パターンの場合は true を設定 |
| 日曜日 | `sunday` | | BOOLEAN | ○ | | [GTFS: calendar.txt > sunday] 日曜日に運行する運行パターンの場合は true を設定 |
| 説明 | `description` | | TEXT | | | |
| 適用開始日 | `valid_from_date` | | DATE | | | [GTFS: calendar.txt > start_date] |
| 適用終了日 | `valid_to_date` | | DATE | | | [GTFS: calendar.txt > end_date] |

### テーブル名: 運行時間帯区分 （M17-ENTITY-210）

- **テーブル物理名**: `operation_time_slot_types`
- **テーブル説明**: 朝ラッシュ、日中、夕ラッシュ、夜間・深夜帯などの時間帯区分を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運行時間帯区分コード | `operation_time_slot_type_code` | PK | VARCHAR(20) | ○ | | |
| 運行時間帯区分名 | `operation_time_slot_type_name` | | VARCHAR(20) | | | 朝ラッシュ、日中、夕ラッシュ、夜間・深夜帯 など |
| 時間帯開始時刻 | `start_time` | | TIME | ○ | | 運行時間帯の開始時刻のHH:MM (例：04:00) |
| 時間帯終了時刻 | `end_time` | | TIME | ○ | | 運行時間帯の終了時刻のHH:MM (例：06:59) |

### テーブル名: ダイヤ改正履歴 （M17-ENTITY-211）

- **テーブル物理名**: `timetable_revisions`
- **テーブル説明**: 複数の「便」や「仕業」を改正単位で束ねるダイヤのバージョンを管理する情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| ダイヤ改正ID | `revision_id` | PK | VARCHAR(36) | ○ | | |
| ダイヤ改正名 | `revision_name` | | VARCHAR(50) | ○ | | |
| 適用開始日 | `valid_from_date` | | DATE | ○ | | |
| 適用終了日 | `valid_to_date` | | DATE | | | |
| 承認ステータス | `approval_status` | | VARCHAR(20) | ○ | | 区分値（例）: '作成中', '承認待ち', '承認済み', '公開' |

### テーブル名: 便 （M17-ENTITY-212）

- **テーブル物理名**: `trips`
- **テーブル説明**: 系統における具体的な運行スケジュール

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 便コード | `trip_code` | PK | VARCHAR(20) | ○ | | [GTFS: trips.txt > trip_id] ダイヤ内での便の通し番号 |
| ダイヤ改正ID | `revision_id` | | VARCHAR(36) | ○ | | timetable_revisionsテーブルへの外部キー |
| 系統コード | `line_code` | | VARCHAR(20) | ○ | | [GTFS: trips.txt > route_id] linesテーブルへの外部キー |
| 便名 | `trip_name` | | VARCHAR(50) | ○ | | [GTFS: trips.txt > trip_short_name] 業務上便を特定可能な名称を設定 |
| 行先表示 | `trip_headsign` | | VARCHAR(100) | | | [GTFS: trips.txt > trip_headsign] 行先と経由を設定、急行・直通等の種別がある場合は、行先に加えて種別を併記（例：急行 東京ビッグサイト（月島駅経由）） |
| 運行日区分コード | `operation_day_type_code` | | VARCHAR(20) | ○ | | [GTFS: trips.txt > service_id] operation_day_typesテーブルへの外部キー |
| 運行便区分 | `service_type` | | VARCHAR(20) | ○ | | 区分値（例）: '通常', '臨時', '続行' |
| 往復区分 | `direction` | | VARCHAR(20) | | | [GTFS: trips.txt > direction_id] 区分値（例）: '往路', '復路'（系統で上り下りが区別されている場合や循環バスでは不要） |
| 必須車両要件区分 | `required_vehicle_spec_code` | | VARCHAR(20) | | | 区分値（例）: 'スクールバス限定', '中型以下', '大型限定'（対象の便を走行すべき車格等が限定されている場合に設定） |
| 起点出発時刻 | `start_time` | | TIME | ○ | | [GTFS: stop_times.txt] この起点出発時刻と基準区間時分から全停留所の到着予定時刻を算出する |
| 終点到着時刻 | `end_time` | | TIME | ○ | | |
| 前行程回送系統コード | `prev_deadhead_line_code` | | VARCHAR(20) | | | 便の前行程に接続する回送系統が固定で決められる場合に設定 |
| 後行程回送系統コード | `post_deadhead_line_code` | | VARCHAR(20) | | | 便の後行程に接続する回送系統が固定で決められる場合に設定 |
| 車いす利用区分 | `wheelchair_accessible` | | VARCHAR(20) | | 0 | [GTFS: trips.txt > wheelchair_accessible] 区分値（例）: '情報なし', '乗車可', '乗車不可'（車両の「バリアフリー区分」とは別に便として保証する） |

### テーブル名: 回送系統 （M17-ENTITY-213）

- **テーブル物理名**: `deadhead_lines`
- **テーブル説明**: 回送運行や便乗回送の起点・終点場所や所要時間などの情報を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 回送系統コード | `deadhead_line_code` | PK | VARCHAR(20) | ○ | | |
| ダイヤ改正ID | `revision_id` | | VARCHAR(36) | ○ | | timetable_revisionsテーブルへの外部キー |
| 回送区分 | `deadhead_line_type` | | VARCHAR(20) | ○ | | 区分値（例）: '運行回送', '便乗回送' など |
| 回送起点コード | `origin_code` | | VARCHAR(20) | ○ | | 回送起点区分に応じた各テーブルのコード値 |
| 回送起点区分 | `origin_type` | | VARCHAR(20) | ○ | | 区分値（例）: '営業所', '車庫', '停留所' など |
| 回送終点コード | `destination_code` | | VARCHAR(20) | ○ | | 回送終点区分に応じた各テーブルのコード値 |
| 回送終点区分 | `destination_type` | | VARCHAR(20) | ○ | | 区分値（例）: '営業所', '車庫', '停留所' など |
| 回送所要時間_分 | `deadhead_line_minutes` | | INTEGER | | | 回送系統の運行にかかる標準時間 |
| 回送キロ | `deadhead_km` | | NUMERIC(5, 2) | | | 回送区分の場合に設定(km) |

### テーブル名: 仕業グループ （M17-ENTITY-214）

- **テーブル物理名**: `duty_groups`
- **テーブル説明**: 曜日や特定の条件・期間などの運行条件で仕業をまとめて基本交番の出力単位を決めるグループ

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 仕業グループコード | `duty_group_code` | PK | VARCHAR(20) | ○ | | |
| 営業所コード | `office_code` | | VARCHAR(20) | ○ | | officesテーブルへの外部キー |
| 仕業グループ名 | `duty_group_name` | | VARCHAR(50) | | | |
| 回転周期_日 | `rotation_cycle_days` | | INTEGER | | | 交番が何日で一巡するか（例：5日サイクル、1ヶ月サイクル） |
| 対象仕業数 | `duty_count` | | INTEGER | | | 1つの基本交番表に含まれるべき仕業数 |
| 適用開始日 | `valid_from_date` | | DATE | ○ | | |
| 適用終了日 | `valid_to_date` | | DATE | | | |

### テーブル名: 仕業 （M17-ENTITY-215）

- **テーブル物理名**: `duties`
- **テーブル説明**: 特定の運転手または車両の1日の勤務パターン（棒ダイヤ）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 仕業ID | `duty_id` | PK | VARCHAR(36) | ○ | | |
| 仕業番号 | `duty_number` | UK | VARCHAR(20) | ○ | | 仕業を一意にする番号で各社の採番ルールに従い設定（仕業作成時の並び替え等で更新するケースがあるためPKにしない） |
| 営業所コード | `office_code` | UK | VARCHAR(20) | ○ | | officesテーブルへの外部キー |
| 仕業グループコード | `duty_group_code` | | VARCHAR(20) | ○ | | duty_groupsテーブルへの外部キー |
| ダイヤ改正ID | `revision_id` | UK | VARCHAR(36) | ○ | | timetable_revisionsテーブルへの外部キー |
| 仕業名 | `duty_name` | | VARCHAR(50) | ○ | | 例: 早番A, 中休B |
| 仕業種別 | `duty_category` | | VARCHAR(20) | ○ | | 区分値（例）: '運転手仕業', '車両仕業' |
| 仕業区分 | `duty_type` | | VARCHAR(20) | | | 区分値（例）: '本務', '予備', '待機', '回送専属' |
| 出社時刻 | `work_start_time` | | TIME | | | |
| 退社時刻 | `work_end_time` | | TIME | | | |
| 出庫時刻 | `duty_start_time` | | TIME | ○ | | |
| 入庫時刻 | `duty_end_time` | | TIME | ○ | | |
| 拘束時間_分 | `total_work_minutes` | | INTEGER | | | 出勤から退勤までの全時間の総計（分） |
| 運転時間_分 | `total_driving_minutes` | | INTEGER | | | 回送運転時間含む運転時間（ハンドル時間）の総計（分） |
| 休憩時間_分 | `total_rest_time_minutes` | | INTEGER | | | 中休みを含めた休憩時間の総計（分） |
| 中休時間_分 | `total_long_rest_time_minutes` | | INTEGER | | | 中休みのみの休憩時間の総計（分） |
| 深夜労働時間_分 | `midnight_work_minutes` | | INTEGER | | | 深夜帯の労働時間の総計（分） |
| 承認ステータス | `approval_status` | | VARCHAR(20) | ○ | | 区分値（例）: '作成中', 'ダイヤ承認済', '交番承認済' |

### テーブル名: 仕業構成 （M17-ENTITY-216）

- **テーブル物理名**: `duty_compositions`
- **テーブル説明**: 1つの仕業がどの便（営業・回送）やその他の構成要素（仕業構成要素で定義される休憩時間など）で構成されるか

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 仕業構成ID | `duty_composition_id` | PK | VARCHAR(36) | ○ | | 仕業における構成要素を一意にする識別子 |
| 仕業番号 | `duty_number` | UK | VARCHAR(20) | ○ | | dutiesテーブルへの外部キー |
| 順序 | `sequence_order` | UK | INTEGER | ○ | | 仕業内での便またはその他の構成要素の順番 |
| 仕業項目コード | `duty_item_code` | | VARCHAR(20) | ○ | | duty_composition_itemsテーブルへの外部キー |
| 便コード | `trip_code` | | VARCHAR(20) | | | tripsテーブルへの外部キー（営業の場合） |
| 回送系統コード | `deadhead_line_code` | | VARCHAR(20) | | | deadhead_linesテーブルへの外部キー（回送の場合） |
| 所要時間_分 | `required_minutes` | | INTEGER | ○ | | |

### テーブル名: 仕業構成要素 （M17-ENTITY-217）

- **テーブル物理名**: `duty_composition_items`
- **テーブル説明**: 仕業を構成する便やその他の付帯労働の要素を管理するマスタ

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 仕業項目コード | `duty_item_code` | PK | VARCHAR(20) | ○ | | 仕業に割り当てる構成要素を一意にする識別子 |
| 仕業項目区分 | `duty_item_type` | | VARCHAR(20) | ○ | | 区分値（例）: '点呼', '営業便', '回送系統', '車内点検', '発車待機' など |
| 労働時間詳細区分 | `work_time_detail_type` | | VARCHAR(20) | ○ | | 区分値（例）: '運転時間', '中休時間', '休憩時間', '付帯労働時間' など |
| 基準所要時間_分 | `standard_required_minutes` | | INTEGER | | | 各仕業項目に必要となる基準時間を定義しておく（始発時の発車待機は5分確保すべきなど） |
| 業務説明 | `description` | | TEXT | | | |

### テーブル名: 運行経路 （M17-ENTITY-218）

- **テーブル物理名**: `operation_routes`
- **テーブル説明**: 標柱（停留所）間の物理的な走行ルート情報（複数の系統で共有される経路の単位）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運行経路ID | `operation_route_id` | PK | VARCHAR(36) | ○ | | |
| 経路名称 | `route_name` | | VARCHAR(100) | | | 管理用名称（例: 渋谷-六本木_246号経由） |
| 起点標柱コード | `origin_stop_pole_code` | | VARCHAR(20) | ○ | | stop_polesテーブルへの外部キー（経路の起点地点となる標柱） |
| 終点標柱コード | `destination_stop_pole_code` | | VARCHAR(20) | ○ | | stop_polesテーブルへの外部キー（経路の終了地点となる標柱） |
| 総距離_m | `total_distance_m` | | INTEGER | ○ | | 構成リンクの距離合計 |
| 最小道路幅員_m | `min_road_width_m` | | NUMERIC(3,1) | | | 大型車通行可否判定用などに利用 |
| 最大勾配_% | `max_gradient_percent` | | NUMERIC(4,1) | | | EVバス電力消費計算用などに利用 |
| 高さ制限_m | `height_limit_m` | | NUMERIC(3,1) | | | ガード下等の制限値 |
| 重量制限_t | `weight_limit_t` | | NUMERIC(4,1) | | | 橋梁等の制限値 |
| 危険箇所フラグ | `has_hazard_point` | | BOOLEAN | | | 事故多発地点等を含むか |

### テーブル名: 運行経路構成リンク （M17-ENTITY-219）

- **テーブル物理名**: `operation_route_links`
- **テーブル説明**: 運行経路を構成する、地理情報システム（GIS）上のリンク（ノードを繋ぐ経路）の順序付きリスト

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運行経路構成ID | `operation_route_link_id` | PK | VARCHAR(36) | ○ | | |
| 運行経路ID | `operation_route_id` | | VARCHAR(36) | ○ | | |
| 順序 | `sequence_order` | UK | INTEGER | ○ | | 通行順序 |
| 外部リンクID | `external_link_id` | | VARCHAR(50) | ○ | | DRM等の外部地図DBのリンクID |
| 始点ノードID | `start_node_id` | | VARCHAR(50) | | | 外部地図DBのノードID |
| 終点ノードID | `end_node_id` | | VARCHAR(50) | | | 外部地図DBのノードID |
| リンク距離_m | `link_distance_m` | | INTEGER | | | |
| 道路幅員_m | `road_width_m` | | NUMERIC(3,1) | | | GISから取得した幅員 |
| 交通規制情報 | `traffic_regulation_info` | | VARCHAR(100) | | | 一方通行、時間規制など |

## 3.商品計画管理

### テーブル名: 運賃改定履歴 （M17-ENTITY-301）

- **テーブル物理名**: `fare_revisions`
- **テーブル説明**: 運賃や商品設計のバージョンを管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運賃改定ID | `fare_revision_id` | PK | VARCHAR(36) | ○ | | |
| 運賃改定名 | `revision_name` | | VARCHAR(50) | ○ | | 例: 2025年10月運賃改定 |
| 適用開始日 | `valid_from_date` | | DATE | ○ | | |
| 適用終了日 | `valid_to_date` | | DATE | ○ | | |
| 承認ステータス | `approval_status` | | VARCHAR(20) | ○ | | 区分値（例）: '作成中', '申請中', '認可済', '届出済' |

### テーブル名: 運賃属性停留所 （M17-ENTITY-302）

- **テーブル物理名**: `fare_stop_attributes`
- **テーブル説明**: 運賃計算において、特定の系統における停留所の役割（区界、指定など）を定義

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運賃属性停留所ID | `fare_stop_attribute_id` | PK | VARCHAR(36) | ○ | | |
| 運賃改定ID | `fare_revision_id` | UK | VARCHAR(36) | ○ | | fare_revisionsテーブルへの外部キー |
| 系統コード | `line_code` | UK | VARCHAR(20) | ○ | | linesテーブルへの外部キー |
| 停留所コード | `stop_code` | UK | VARCHAR(20) | ○ | | stopsテーブルへの外部キー |
| 運賃停留所区分 | `fare_stop_type` | | VARCHAR(20) | ○ | '一般' | 区分値（例）: '一般', '区界', '指定', '特区' |
| 親区界停留所コード | `parent_boundary_stop_code` | | VARCHAR(20) | | | 系統固有の区分が'指定'の場合、同一とみなす区界停留所のコードを設定 |
| 所属地帯コード | `zone_code` | | VARCHAR(20) | | | [GTFS: fare_rules.txt > origin_id / destination_id（運賃三角表と結合して出力）] fare_zonesテーブルへの外部キー（地帯制の場合に所属する地帯コードを設定） |

### テーブル名: 運賃地帯 （M17-ENTITY-303）

- **テーブル物理名**: `fare_zones`
- **テーブル説明**: 特殊区間制や地帯制運賃における「区間」または「地帯（ゾーン）」の定義

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 地帯コード | `zone_code` | PK | VARCHAR(20) | ○ | | 事業者が定めるゾーン識別コード |
| 運賃改定ID | `fare_revision_id` | | VARCHAR(36) | ○ | | |
| 地帯名 | `zone_name` | | VARCHAR(50) | ○ | | 例: 宇都宮市内地帯, 1区 |
| 地帯区分 | `zone_type` | | VARCHAR(20) | ○ | | 区分値（例）: '地帯制ゾーン', '特殊区間' |

### テーブル名: 基準運賃規則 （M17-ENTITY-304）

- **テーブル物理名**: `standard_fare_rules`
- **テーブル説明**: 系統別に運賃計算のベースとなる運賃形態（対キロ区間制、特殊区間制など）と運賃商品種別（片道運賃、定期券運賃など）ごとの基礎情報を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 基準運賃規則ID | `standard_fare_rule_id` | PK | VARCHAR(36) | ○ | | |
| 運賃改定ID | `fare_revision_id` | UK | VARCHAR(36) | ○ | | fare_revisionsテーブルへの外部キー |
| 系統コード | `line_code` | UK | VARCHAR(20) | ○ | | |
| 運賃商品区分 | `fare_product_type` | UK | VARCHAR(20) | ○ | | 区分値（例）: '片道', '通勤定期', '通学定期', '回数券', '往復' |
| 運賃形態区分 | `fare_system_type` | UK | VARCHAR(20) | ○ | | 区分値（例）: '対キロ区間制', '特殊区間制', '地帯制', '均一制', '率計算(定期用)' など |
| 支払い方法区分 | `payment_method_type` | | VARCHAR(20) | ○ | | [GTFS: fare_attributes.txt > payment_method] 区分値（例）: '乗車時支払い', '降車時支払い' |
| 乗換許容回数 | `transfers` | | INTEGER | | | [GTFS: fare_attributes.txt > transfers] 同一料金で許可される乗換（乗継）回数を設定する（未設定の場合はの乗換回数制限なし） |
| 乗換有効期限_秒 | `transfer_duration` | | INTEGER | | | [GTFS: fare_attributes.txt > transfer_duration] 乗換が可能な場合、乗換期限が切れるまでの時間を秒数で設定する |
| 基準賃率 | `standard_fare_rate` | | NUMERIC(6,2) | | | 対キロ区間制における1kmあたりの認可単価（例: 40円50銭） |
| 基準運賃額 | `base_fare_amount` | | INTEGER | | | 均一制や特殊区間制の初乗り運賃や回数券の発売額ベース |
| 基準日数 | `calculation_basis_days` | | NUMERIC(4,2) | | | 定期券計算用（例: 30日） |
| 基準回数 | `calculation_basis_trips` | | NUMERIC(4,2) | | | 定期/回数券計算用（例: 1日2回） |
| 計算式区分 | `formula_type` | | VARCHAR(20) | | | 区分値（例）: '標準(片道)', '定期(基準×日数×回数×率)', '回数券(束)' |
| 上限運賃額 | `maximum_fare_amount` | | INTEGER | | | 運輸局に認可された上限運賃の額 |
| 承認ステータス | `approval_status` | | VARCHAR(20) | ○ | | 区分値（例）: '作成中', '申請中', '認可済' |

### テーブル名: 基準運賃適用区分 （M17-ENTITY-305）

- **テーブル物理名**: `standard_fare_brackets`
- **テーブル説明**: 基準運賃規則に対して、商品種別や距離帯、区間数ごとに適用される具体的な「値（係数、加算額、固定額、割引率）」を定義

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 基準運賃区分ID | `standard_fare_bracket_id` | PK | VARCHAR(36) | ○ | | |
| 基準運賃規則ID | `standard_fare_rule_id` | UK | VARCHAR(36) | ○ | | standard_fare_rulesテーブルへの外部キー |
| 順序 | `sequence_order` | UK | INTEGER | ○ | | 適用順序 |
| 適用下限値 | `lower_limit_value` | | NUMERIC(6,2) | ○ | | 距離(km)または区間数・地帯数の下限 |
| 適用上限値 | `upper_limit_value` | | NUMERIC(6,2) | | | 距離(km)または区間数・地帯数の上限 |
| 適用値 | `applied_value` | | NUMERIC(8,2) | ○ | | その範囲に適用する数値（円、倍率など） |
| 適用値区分 | `applied_value_type` | | VARCHAR(20) | ○ | | 区分値（例）: '遠距離逓減率', '区間単価', '地帯単価' |

### テーブル名: 割引割増規則 （M17-ENTITY-306）

- **テーブル物理名**: `discount_rules`
- **テーブル説明**: 小人運賃、身障者割引、乗継割引、深夜割増など、運賃計算時に適用される補正ルールを定義する

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 割引規則ID | `discount_rule_id` | PK | VARCHAR(36) | ○ | | |
| 運賃改定ID | `fare_revision_id` | UK | VARCHAR(36) | ○ | | fare_revisionsテーブルへの外部キー |
| 割引区分 | `discount_category` | UK | VARCHAR(20) | ○ | | 区分値（例）: '属性割引', '乗継割引', '時間帯割増', 'IC割引' |
| 規則名 | `rule_name` | | VARCHAR(50) | ○ | | 例: 身障者割引, 乗継割引, 深夜割増 |
| 計算方法区分 | `calculation_method_type` | | VARCHAR(20) | ○ | | 区分値（例）: '率計算', '定額減算', '定額適用', '上限設定' |
| 適用値 | `applied_value` | | NUMERIC(8,2) | ○ | | 0.5(50%引), 100(100円引), 1.2(2割増)など |
| 端数処理区分 | `rounding_mode_type` | | VARCHAR(20) | ○ | | 区分値（例）: '切り上げ', '切り捨て', '四捨五入' |
| 端数単位 | `rounding_unit` | | INTEGER | ○ | | 10円単位, 1円単位など |
| 適用優先順位 | `priority_order` | | INTEGER | ○ | | 複数の割引が適用される場合の計算順序 |

### テーブル名: 運賃三角表 （M17-ENTITY-307）

- **テーブル物理名**: `fare_triangular_tables`
- **テーブル説明**: 系統ごとの乗車・降車停留所の組み合わせによる運賃額を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運賃三角表ID | `fare_triangular_table_id` | PK | VARCHAR(36) | ○ | | [GTFS: fare_attributes.txt / fare_rules.txt > fare_id] |
| 運賃改定ID | `fare_revision_id` | UK | VARCHAR(36) | ○ | | fare_revisionsテーブルへの外部キー |
| 系統コード | `line_code` | UK | VARCHAR(20) | ○ | | [GTFS: fare_rules.txt > route_id] linesテーブルへの外部キー |
| 運賃商品区分 | `fare_product_type` | UK | VARCHAR(20) | ○ | | 区分値（例）: '片道', '通勤定期', '通学定期', '回数券', '往復' |
| 適用期間 | `validity_period_value` | UK | INTEGER | ○ | 0 | 定期の月数(1,3,6)や回数券の枚数、片道は0を設定する |
| 乗車停留所コード | `origin_stop_code` | UK | VARCHAR(20) | ○ | | stopsテーブルへの外部キー(原則として区界または指定停留所) |
| 降車停留所コード | `destination_stop_code` | UK | VARCHAR(20) | ○ | | stopsテーブルへの外部キー(原則として区界または指定停留所) |
| 通常現金運賃 | `normal_cash_fare` | | INTEGER | ○ | | 大人現金運賃に等しい |
| 通常IC運賃 | `normal_ic_fare` | | INTEGER | | | 大人IC運賃に等しい |
| 営業キロ | `operation_distance_km` | | NUMERIC(6,2) | | | |
| 調整適用フラグ | `is_adjusted` | | BOOLEAN | | false | 対キロ区間制などで計算ロジックで算出される運賃から手動で調整したことを示すフラグ |

### テーブル名: 特別運賃商品 （M17-ENTITY-308）

- **テーブル物理名**: `special_fare_products`
- **テーブル説明**: 区間（OD）に依存しないフリーきっぷや路線全体で適用される企画商品など特別運賃が適用される商品を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 特別運賃ID | `special_fare_product_id` | PK | VARCHAR(36) | ○ | | |
| 運賃改定ID | `fare_revision_id` | | VARCHAR(36) | ○ | | fare_revisionsテーブルへの外部キー |
| 商品名 | `product_name` | | VARCHAR(100) | ○ | | 例: 全線一日乗車券, 都心エリアフリー定期 |
| 発売金額 | `sales_amount` | | INTEGER | ○ | | |
| 適用地帯コード | `valid_zone_code` | | VARCHAR(20) | | | fare_zonesテーブルへの外部キー（特定のゾーン限定の場合に地帯コードを設定） |

### テーブル名: 運賃原価単価 （M17-ENTITY-309）

- **テーブル物理名**: `unit_operating_costs`
- **テーブル説明**: 原価計算によって算出されたキロ当たりの運行コスト単価

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 原価単価ID | `unit_cost_id` | PK | VARCHAR(36) | ○ | | |
| 対象年度 | `fiscal_year` | UK | INTEGER | ○ | | |
| 集計期間開始日 | `period_start_date` | | DATE | ○ | | |
| 集計期間終了日 | `period_end_date` | | DATE | ○ | | |
| 総運行コスト | `total_operating_cost` | | INTEGER | ○ | | |
| 実車総走行キロ | `total_revenue_km` | | NUMERIC(10,2) | ○ | | |
| キロ当たりコスト | `cost_per_km` | | INTEGER | ○ | | |

### テーブル名: 収益性試算 （M17-ENTITY-310）

- **テーブル物理名**: `profitability_simulations`
- **テーブル説明**: 設定した運賃と需要予測に基づき、系統単位での収益性を試算した結果

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 収益性試算ID | `simulation_id` | PK | VARCHAR(36) | ○ | | |
| 運賃改定ID | `fare_revision_id` | UK | VARCHAR(36) | ○ | | |
| 系統コード | `line_code` | UK | VARCHAR(20) | ○ | | linesテーブルへの外部キー |
| 原価単価ID | `unit_cost_id` | | VARCHAR(36) | ○ | | |
| 予測年間利用者数 | `forecasted_annual_passengers` | | INTEGER | | | |
| 予測年間運賃収入 | `forecasted_fare_revenue` | | INTEGER | | | |
| 予測年間運行コスト | `forecasted_operating_cost` | | INTEGER | | | |
| 予測収支 | `forecasted_profit` | | INTEGER | | | |
| 予測収支率 | `forecasted_profit_margin` | | NUMERIC(5,2) | | | |

## 4.勤務計画管理

### テーブル名: 配車計画 （M17-ENTITY-401）

- **テーブル物理名**: `vehicle_assignments`
- **テーブル説明**: 勤務計画作成プロセスにおいて、特定の仕業に対してどの車両を割り当てるかを計画する情報（車両運用パターンに応じて管理方法が異なる）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 配車計画ID | `vehicle_assignment_id` | PK | VARCHAR(36) | ○ | | |
| 車両番号 | `vehicle_number` | | VARCHAR(20) | | | １仕業内で単一車両で運行する場合に利用。vehiclesテーブルへの外部キー |
| 社員番号 | `employee_number` | | VARCHAR(20) | | | 車両に対して一人または複数の担当運転手を決める担当者制（持車制）の場合に利用。driversテーブルへの外部キー |
| 仕業番号 | `duty_number` | | VARCHAR(20) | | | 車両が運行する仕業を固定またはローテーションする運用パターンの場合に利用。dutiesテーブルへの外部キー |
| 運行年月日 | `operation_date` | | DATE | | | 車両が運行する仕業をローテーションする運用パターンの場合に利用 |

### テーブル名: 配車別担当便 （M17-ENTITY-402）

- **テーブル物理名**: `vehicle_assignment_trips`
- **テーブル説明**: 1つの配車計画において、仕業を構成する便ごとにどの車両が担当するかを特定する情報（1仕業を複数車両で担当する場合に使用される）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 配車別担当便ID | `vehicle_assignment_trip_id` | PK | VARCHAR(36) | ○ | | |
| 配車計画ID | `vehicle_assignment_id` | UK | VARCHAR(20) | | | vehicle_assignmentsテーブルへの外部キー |
| 担当便コード | `trip_code` | UK | VARCHAR(20) | | | |
| 車両番号 | `vehicle_number` | | VARCHAR(20) | | | vehiclesテーブルへの外部キー |

### テーブル名: 勤務計画表 （M17-ENTITY-403）

- **テーブル物理名**: `planned_work_schedules`
- **テーブル説明**: 運転手の日々の勤務割り当て（仕業、休日など）の計画

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 勤務計画ID | `planned_work_schedule_id` | PK | VARCHAR(36) | ○ | | |
| 社員番号 | `employee_number` | UK | VARCHAR(20) | ○ | | driversテーブルへの外部キー |
| 勤務予定年月日 | `duty_date` | UK | DATE | ○ | | |
| 仕業番号 | `duty_number` | | VARCHAR(20) | | | dutiesテーブルへの外部キー |
| 勤務区分 | `work_type` | | VARCHAR(20) | ○ | | 区分値（例）: '仕業', '公休', '有給', '乗務外勤務' |
| 承認ステータス | `approval_status` | | VARCHAR(20) | ○ | | 区分値（例）: '作成中', '労働組合承認済', '営業所長承認済' |
| バージョン | `version` | | INTEGER | | | |

### テーブル名: 計画仕業構成 （M17-ENTITY-404）

- **テーブル物理名**: `planned_duty_compositions`
- **テーブル説明**: 勤務計画作成プロセスにおける仕業（計画仕業）が、どの便（営業、回送）やどんな付帯条件（車内点検、休憩など）で構成されているかを示す情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 計画仕業構成ID | `planned_duty_composition_id` | PK | VARCHAR(36) | ○ | | |
| 勤務計画ID | `planned_work_schedule_id` | UK | VARCHAR(20) | ○ | | |
| 順序 | `sequence_order` | UK | INTEGER | ○ | | |
| 仕業項目コード | `duty_item_code` | | VARCHAR(20) | ○ | | duty_composition_itemsテーブルへの外部キー |
| 便コード | `trip_code` | | VARCHAR(20) | | | 営業便の場合 |
| 回送系統コード | `deadhead_line_code` | | VARCHAR(20) | | | 回送系統の場合 |
| 車両番号 | `vehicle_number` | | VARCHAR(20) | | | |
| 所要時間_分 | `required_minutes` | | INTEGER | | | |

### テーブル名: 計画運行便 （M17-ENTITY-405）

- **テーブル物理名**: `planned_operation_trips`
- **テーブル説明**: 勤務・配車計画作成時に策定された、運行する予定の個別の便のルート情報（便に対するルート変更などの調整を反映する）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 計画運行便ID | `planned_operation_trip_id` | PK | VARCHAR(36) | ○ | | |
| 計画仕業構成ID | `planned_duty_composition_id` | UK | VARCHAR(36) | ○ | | 仕業項目コードが「営業便」である計画仕業構成レコードのID。planned_duty_compositionsテーブルの外部キー |
| 停留所順序 | `stop_order` | UK | INTEGER | | | |
| 停留所コード | `stop_code` | | VARCHAR | | | |
| 休止停留所フラグ | `is_suspended_stop` | | BOOLEAN | ○ | false | |

### テーブル名: 労働制約 （M17-ENTITY-406）

- **テーブル物理名**: `labor_constraints`
- **テーブル説明**: 仕業・交番作成や勤務計画作成・調整時のチェックロジックとなるパラメータ（最大拘束時間、最小休憩時間など）を管理する

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 制約コード | `constraint_code` | PK | VARCHAR(20) | ○ | | |
| 制約名 | `constraint_name` | | VARCHAR(50) | ○ | | |
| 閾値 | `threshold_value` | | INTEGER | | | |
| 単位 | `unit` | | VARCHAR(20) | | | |
| 比較演算子 | `comparison_operator` | | VARCHAR(5) | | | |
| 適用開始日 | `valid_from_date` | | DATE | ○ | | |
| 適用終了日 | `valid_to_date` | | DATE | ○ | 2099/12/31 | |

### テーブル名: 勤務計画調整履歴 （M17-ENTITY-407）

- **テーブル物理名**: `planned_work_schedule_adjustment_history`
- **テーブル説明**: 労働制約の検証の結果や運転手や車両、運行ルート変更などによる勤務計画の調整業務の修正履歴を管理する

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 勤務計画調整履歴ID | `history_id` | PK | VARCHAR(36) | ○ | | |
| 勤務計画ID | `planned_work_schedule_id` | | VARCHAR(36) | ○ | | |
| 調整日時 | `adjusted_at` | | TIMESTAMP WITH TIME ZONE | ○ | | |
| 調整理由区分 | `adjustment_reason_type` | | VARCHAR(20) | | | 区分値（例）: '病欠', '車両故障', '臨時ダイヤ' |
| 調整理由詳細 | `adjustment_reason_detail` | | TEXT | | | |
| 調整内容詳細 | `adjustment_details` | | TEXT | | | |
| 制約コード | `constraint_code` | | VARCHAR(20) | | | |
| 適用制約詳細 | `constraint_detail` | | TEXT | | | |
| 調整項目 | `adjustment_item` | | VARCHAR | | | |
| 調整前値 | `previous_value` | | VARCHAR | | | |
| 調整後値 | `adjusted_value` | | VARCHAR | | | |

### テーブル名: 調整仕業 （M17-ENTITY-408）

- **テーブル物理名**: `adjustment_duties`
- **テーブル説明**: 運行計画の直前または当日の調整（仕業の圧縮または分割）で発生した、元の仕業とは異なり日付単位に調整された仕業の情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 調整仕業番号 | `adjusted_duty_number` | PK | VARCHAR(20) | ○ | | 調整後に新たに採番された番号（例: 902-1）。日次の勤務計画・勤務表において仕業番号と同様に取り扱う |
| 運行年月日 | `operation_date` | | DATE | ○ | | |
| 営業所コード | `office_code` | | VARCHAR(20) | ○ | | officesテーブルへの外部キー |
| 仕業グループコード | `duty_group_code` | | VARCHAR(20) | ○ | | duty_groupsテーブルへの外部キー |
| 仕業名 | `duty_name` | | VARCHAR(50) | ○ | | 例: 早番A, 中休B |
| 仕業区分 | `duty_type` | | VARCHAR(50) | ○ | | 区分値（例）: '本務', '予備', '待機', '回送専属' |
| 出社時刻 | `work_start_time` | | TIME | ○ | | |
| 退社時刻 | `work_end_time` | | TIME | ○ | | |
| 出庫時刻 | `duty_start_time` | | TIME | ○ | | |
| 入庫時刻 | `duty_end_time` | | TIME | ○ | | |
| 拘束時間_分 | `total_work_minutes` | | INTEGER | | | 出勤から退勤までの全時間の総計（分） |
| 運転時間_分 | `total_driving_minutes` | | INTEGER | | | 回送運転時間含む運転時間（ハンドル時間）の総計（分） |
| 休憩時間_分 | `total_rest_time_minutes` | | INTEGER | | | 中休みを含めた休憩時間の総計（分） |
| 中休時間_分 | `total_long_rest_time_minutes` | | INTEGER | | | 中休みのみの休憩時間の総計（分） |
| 深夜労働時間_分 | `midnight_work_minutes` | | INTEGER | | | 深夜帯の労働時間の総計（分） |

### テーブル名: 調整仕業構成 （M17-ENTITY-409）

- **テーブル物理名**: `adjustment_duty_compositions`
- **テーブル説明**: 調整仕業がどの便（営業・回送）やその他の構成要素（仕業構成要素で定義される休憩時間など）で構成されているかを示す情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 調整仕業構成ID | `adjustment_duty_composition_id` | PK | VARCHAR(36) | ○ | | |
| 調整仕業番号 | `adjusted_duty_number` | UK | VARCHAR(20) | ○ | | adjustment_dutiesテーブルへの外部キー |
| 順序 | `sequence_order` | UK | INTEGER | ○ | | |
| 仕業項目コード | `duty_item_code` | | VARCHAR(20) | ○ | | duty_composition_itemsテーブルへの外部キー |
| 元仕業番号 | `original_duty_number` | | VARCHAR(20) | ○ | | dutiesテーブルへの外部キー（分割・圧縮前の元の仕業番号） |
| 便コード | `trip_code` | | VARCHAR(20) | | | tripsテーブルへの外部キー |
| 回送系統コード | `deadhead_line_code` | | VARCHAR(20) | | | deadhead_linesテーブルへの外部キー |
| 所要時間_分 | `required_minutes` | | INTEGER | ○ | | |

## 5.運行実行管理

### テーブル名: 勤務表 （M17-ENTITY-501）

- **テーブル物理名**: `daily_operation_charts`
- **テーブル説明**: 前日に確定する実際に当日運行する際の担当運転手、車両、仕業の確定情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 勤務表ID | `operation_chart_id` | PK | VARCHAR(36) | ○ | | |
| 運行年月日 | `operation_date` | UK | DATE | ○ | | |
| 営業所コード | `office_code` | UK | VARCHAR(20) | ○ | | |
| 社員番号 | `employee_number` | UK | VARCHAR(20) | ○ | | |
| 仕業番号 | `duty_number` | | VARCHAR(20) | ○ | | |
| 勤務区分 | `work_type` | | VARCHAR(20) | ○ | | |
| 出社時刻 | `work_start_time` | | TIME | | | |
| 退社時刻 | `work_end_time` | | TIME | | | |
| 出庫時刻 | `duty_start_time` | | TIME | ○ | | |
| 入庫時刻 | `duty_end_time` | | TIME | ○ | | |
| 拘束時間_分 | `total_work_minutes` | | INTEGER | | | 出勤から退勤までの全時間の総計（分） |
| 運転時間_分 | `total_driving_minutes` | | INTEGER | | | 回送運転時間含む運転時間（ハンドル時間）の総計（分） |
| 休憩時間_分 | `total_rest_time_minutes` | | INTEGER | | | 中休みを含めた休憩時間の総計（分） |
| 中休時間_分 | `total_long_rest_time_minutes` | | INTEGER | | | 中休みのみの休憩時間の総計（分） |
| 深夜労働時間_分 | `midnight_work_minutes` | | INTEGER | | | 深夜帯の労働時間の総計（分） |
| 承認ステータス | `approval_status` | | VARCHAR(20) | | | |

### テーブル名: 実行仕業構成 （M17-ENTITY-502）

- **テーブル物理名**: `daily_duty_compositions`
- **テーブル説明**: 運行当日における仕業（実行仕業）が、どの便（営業、回送）やその他の付帯労働（点呼、洗車など）等で構成されているかを示す情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 実行仕業構成ID | `daily_duty_composition_id` | PK | VARCHAR(36) | ○ | | |
| 仕業番号 | `duty_number` | UK | VARCHAR(20) | ○ | | |
| 運行年月日 | `operation_date` | UK | DATE | ○ | | |
| 順序 | `sequence_order` | UK | INTEGER | ○ | | |
| 仕業項目コード | `duty_item_code` | | VARCHAR(20) | ○ | | duty_composition_itemsテーブルへの外部キー |
| 便コード | `trip_code` | | VARCHAR(20) | | | tripsテーブルへの外部キー |
| 回送系統コード | `deadhead_line_code` | | VARCHAR(20) | | | deadhead_linesテーブルへの外部キー |
| 車両番号 | `vehicle_number` | | VARCHAR(20) | | | vehiclesテーブルへの外部キー |
| 所要時間_分 | `required_minutes` | | INTEGER | | | 仕業の各構成要素で予定される所要時間 |

### テーブル名: 実行運行便 （M17-ENTITY-503）

- **テーブル物理名**: `daily_operating_trips`
- **テーブル説明**: 運行当日において異常事態等がなければ実際に運行される個別の便のルート情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 実行便ID | `daily_trip_id` | PK | VARCHAR(36) | ○ | | |
| 実行仕業構成ID | `daily_duty_composition_id` | UK | VARCHAR(36) | ○ | | 仕業項目コードが「営業便」である実行仕業構成レコードのID。daily_duty_compositionsテーブルへの外部キー |
| 到着予定時刻 | `arrival_time` | | TIME | | | 各停留所に到着する予定の時刻 |
| 発車予定時刻 | `departure_time` | | TIME | | | 各停留所を発車する予定の時刻（通過の場合は到着と同時刻） |
| 停留所順序 | `stop_order` | UK | INTEGER | ○ | | |
| 停留所コード | `stop_code` | | VARCHAR(20) | ○ | | |
| 休止停留所フラグ | `is_suspended_stop` | | BOOLEAN | ○ | false | |

### テーブル名: 点呼簿 （M17-ENTITY-504）

- **テーブル物理名**: `roll_call_records`
- **テーブル説明**: 運転手の出勤・退勤時の点呼情報（体調、アルコール検知結果など法定要件のチェック結果）を記録

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 点呼ID | `roll_call_id` | PK | VARCHAR(36) | ○ | | |
| 勤務表ID | `operation_chart_id` | UK | VARCHAR(36) | ○ | | daily_operation_chartsへの外部キー |
| 点呼区分 | `roll_call_type` | UK | VARCHAR(20) | ○ | | 区分値（例）: '業務前点呼', '中間点呼', '業務後点呼' |
| 点呼実施日時 | `roll_call_datetime` | UK | TIMESTAMP WITH TIME ZONE | | | |
| 点呼執行者社員番号 | `executor_employee_number` | | VARCHAR(20) | ○ | | 点呼を実行する運行管理者の社員番号（遠隔点呼の場合は点呼実施前の割当業務時に登録される） |
| 点呼実施場所 | `roll_call_location` | | VARCHAR(100) | | | 点呼執行者が点呼を実施した場所（遠隔点呼の場合に利用する） |
| アルコール検知結果 | `alcohol_check_result` | | NUMERIC(3, 2) | | | 呼気中アルコール濃度（mg/l） |
| 免許証確認 | `is_license_verified` | | BOOLEAN | | | 点呼時の有効期限・不携帯確認を行って問題がなかったか |
| 携行品授受確認 | `is_equipment_verified` | | BOOLEAN | | | 乗務前点呼時の携行品の貸与と乗務後点呼時の受領確認を行ったか |
| 車両点検完了確認 | `is_inspection_verified` | | BOOLEAN | | | 車両日常点検の完了確認を行ったか |
| 疾病・疲労申告有無 | `has_health_issue_report` | | BOOLEAN | | | |
| 睡眠不足申告有無 | `is_sleep_deprived` | | BOOLEAN | | | |
| 自主健康項目確認結果 | `original_health_check_status` | | VARCHAR(20) | | | 区分値（例）: '良好', '注意', '乗務不可' |
| 運行前指示事項 | `pre_instructions` | | TEXT | | | 業務前点呼において、安全上の注意事項や気象・道路状況等によるチェーン装着の要否や経路変更などの具体的な指示内容 |
| 運行後指導事項 | `post_instructions` | | TEXT | | | 業務後点呼において、運行上のトラブル等に対して運転手に行った安全運転指導などの指導内容 |

### テーブル名: 点呼携行品管理 （M17-ENTITY-505）

- **テーブル物理名**: `roll_call_equipment_logs`
- **テーブル説明**: 点呼時に貸与・回収する携行品（金庫、無線機、ICカード等）の記録

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 携行品管理ID | `equipment_log_id` | PK | VARCHAR(36) | ○ | | |
| 点呼ID | `roll_call_id` | UK | VARCHAR（36） | ○ | | roll_call_recordsへの外部キー |
| 携行品区分 | `item_category` | UK | VARCHAR(20) | ○ | | 区分値（例）: '金庫', '無線機', '物販カード', '運行端末' |
| 機器・物品コード | `item_identifier` | UK | VARCHAR(50) | ○ | | 金庫番号や端末IDなど携行品を特定可能にするコード |
| 貸与数量 | `loan_quantity` | | INTEGER | | | カード枚数などの場合に使用する |
| 回収数量 | `return_quantity` | | INTEGER | | | 乗務後点呼時に記録する |
| 貸出回収ステータス | `status` | | VARCHAR(20) | ○ | | 区分値（例）: '貸出中', '返却済', '紛失' |

### テーブル名: 車両日常点検記録 （M17-ENTITY-506）

- **テーブル物理名**: `daily_vehicle_inspections`
- **テーブル説明**: 乗務前に行われる車両の法定の日常点検（タイヤ、ライト、ブレーキ等の確認）の結果記録

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 日常点検ID | `daily_vehicle_inspection_id` | PK | VARCHAR(36) | ○ | | |
| 点呼ID | `roll_call_id` | UK | VARCHAR（36） | ○ | | roll_call_recordsへの外部キー |
| 車両番号 | `vehicle_number` | UK | VARCHAR(20) | ○ | | |
| 点検実施日時 | `inspected_at` | | TIMESTAMP WITH TIME ZONE | ○ | | |
| 点検者社員番号 | `inspector_employee_number` | | VARCHAR(20) | ○ | | 通常は運転手が行う |
| 総合判定 | `overall_judgment` | | VARCHAR(20) | ○ | | 区分値（例）: '良', '不良(運行可)', '不良(運行不可)' |
| 特記事項 | `remarks` | | TEXT | | | 不良箇所の詳細など |

### テーブル名: 日次納金記録 （M17-ENTITY-507）

- **テーブル物理名**: `daily_operation_cash_remittances`
- **テーブル説明**: 業務後点呼時に行われる現金、ICカード売上、乗車券類の納金・精算実績

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 日次納金記録ID | `daily_remittance_id` | PK | VARCHAR(36) | ○ | | |
| 点呼ID | `roll_call_id` | UK | VARCHAR(36) | ○ | | roll_call_recordsへの外部キー |
| 金庫番号 | `cashbox_number` | | VARCHAR(50) | | | 金庫を識別する番号がある場合に利用 |
| 現金納金額 | `cash_remittance_amount` | | INTEGER | ○ | | |
| ICカード売上額 | `ic_card_sales_amount` | | INTEGER | ○ | | |
| 乗車券類売上額 | `ticket_sales_amount` | | INTEGER | ○ | | |

### テーブル名: 運行異常事象 （M17-ENTITY-508）

- **テーブル物理名**: `operation_incidents`
- **テーブル説明**: 運行中に発生した事故、故障、遅延、苦情などのインシデント情報（事故記録簿や自動車事故報告書の元データ）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 異常事象ID | `incident_report_id` | PK | VARCHAR(36) | ○ | | |
| 実行便ID | `daily_trip_id` | UK | VARCHAR(36) | ○ | | daily_operating_tripsへの外部キー |
| 事象発生日時 | `incident_datetime` | UK | TIMESTAMP WITH TIME ZONE | ○ | | |
| 事象区分 | `incident_type` | | VARCHAR(20) | ○ | | 区分値（例）: '交通事故', '車内事故', '苦情', '車両故障', '大幅な遅延', '道路規制' |
| 発生場所 | `incident_location` | | VARCHAR(255) | ○ | | 住所または交差点、停留所付近など発生箇所が特定できる情報 |
| 事象概要 | `incident_summary` | | VARCHAR(255) | ○ | | |
| 事象詳細 | `incident_description` | | TEXT | | | |
| 遅延理由区分 | `delay_reason_type` | | VARCHAR(20) | | | 区分値（例）: '自然渋滞', '事故渋滞', '天候', '乗客対応' |
| 遅延時間_分 | `delay_minutes` | | INTEGER | | | 事象区分が大幅な遅延などの場合に利用する |
| 対応状況区分 | `response_status` | | VARCHAR(20) | ○ | '初動対応中' | 区分値（例）: '初動対応中', '復旧済', '継続対応中' |
| 運休打切フラグ | `is_operation_aborted` | | BOOLEAN | | | その便が運行前または運行途中で打ち切りになったか |
| 代務要否フラグ | `is_substitution_needed` | | BOOLEAN | | | その便において運転手の代務が必要であったかどうか |
| 報告受付者社員番号 | `receiver_employee_number` | | VARCHAR(20) | | | 報告を受けた運行管理者の社員番号 |

### テーブル名: 運行異常対応記録 （M17-ENTITY-509）

- **テーブル物理名**: `operation_incident_responses`
- **テーブル説明**: 異常事象に対して運行管理者が行った指示や手配（迂回、運休、代車手配等）の記録

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 対応記録ID | `response_record_id` | PK | VARCHAR(36) | ○ | | |
| 異常事象ID | `incident_report_id` | UK | VARCHAR(36) | | ○ | operation_incidentsへの外部キー |
| 対応種別 | `response_type` | UK | VARCHAR(20) | ○ | | 区分値（例）: '迂回指示', '部分運休', '代車手配', '警察等連携' |
| 対応詳細 | `response_details` | | TEXT | | | |
| 代車車両番号 | `replacement_vehicle_number` | | VARCHAR(20) | | | vehiclesへの外部キー（代車手配の場合） |
| 指示日時 | `instruction_datetime` | | TIMESTAMP WITH TIME ZONE | ○ | | |
| 指示者社員番号 | `instructor_employee_number` | | VARCHAR(20) | | | 対応指示をした運行管理者の社員番号 |

### テーブル名: 運行管理者勤務計画 （M17-ENTITY-510）

- **テーブル物理名**: `operation_manager_schedules`
- **テーブル説明**: 営業所における運行管理者・補助者の日々の勤務計画（点呼執行体制の確保用）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運行管理者勤務計画ID | `manager_schedule_id` | PK | VARCHAR(36) | ○ | | |
| 勤務予定年月日 | `schedule_date` | UK | DATE | ○ | | |
| 社員番号 | `employee_number` | UK | VARCHAR(20) | ○ | | operation_managersテーブルへの外部キー |
| 営業所コード | `office_code` | | VARCHAR(20) | ○ | | officesテーブルへの外部キー |
| 勤務区分 | `work_type` | | VARCHAR(20) | ○ | | 区分値（例）: '日勤', '泊り', '明け', '公休' |
| 勤務開始時刻 | `start_time` | | TIME | | | |
| 勤務終了時刻 | `end_time` | | TIME | | | |
| 点呼執行フラグ | `is_roll_call_executor` | | BOOLEAN | | | その勤務で点呼執行を担当するかどうか |

### テーブル名: 日次車両配置計画 （M17-ENTITY-511）

- **テーブル物理名**: `daily_parking_assignments`
- **テーブル説明**: 翌日の始発時刻や仕業開始時間を加味して、どの車両をどの駐車枠に配置するかを決定する計画情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 車両配置計画ID | `assignment_id` | PK | VARCHAR(36) | ○ | | |
| 配置対象日 | `target_date` | UK | DATE | ○ | | 車両を停めておく日付（夜間滞泊日） |
| 駐車枠ID | `parking_slot_id` | UK | VARCHAR(36) | ○ | | parking_slotsテーブルへの外部キー |
| 車両番号 | `vehicle_number` | UK | VARCHAR(20) | ○ | | vehiclesテーブルへの外部キー |
| 次運行日 | `next_operation_date` | | DATE | ○ | | その車両が次に運行する日付（翌朝の出庫順判断に利用） |
| 次仕業番号 | `next_duty_number` | | VARCHAR(20) | | | dutiesテーブルへの外部キー（翌朝の出庫順判断に利用） |
| 入庫予定時刻 | `planned_entry_time` | | TIME | | | 当日の仕業終了予定時刻に基づく時刻 |
| 出庫予定時刻 | `planned_exit_time` | | TIME | | | 翌日の仕業開始予定時刻に基づく時刻 |

### テーブル名: 車両入出庫記録 （M17-ENTITY-512）

- **テーブル物理名**: `vehicle_movement_logs`
- **テーブル説明**: 車両が実際に駐車枠へ入庫、または出庫した際の移動履歴を記録

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 入出庫記録ID | `movement_id` | PK | VARCHAR(36) | ○ | | |
| 駐車枠ID | `parking_slot_id` | UK | VARCHAR(36) | ○ | | parking_slotsテーブルへの外部キー |
| 車両番号 | `vehicle_number` | UK | VARCHAR(20) | ○ | | vehiclesテーブルへの外部キー |
| 入出庫区分 | `movement_type` | UK | VARCHAR(20) | ○ | | 区分値（例）：'入庫', '出庫', '枠移動' |
| 発生日時 | `occurrence_datetime` | | TIMESTAMP WITH TIME ZONE | ○ | | その車両が次に運行する日付（翌朝の出庫順判断に利用） |
| 社員番号 | `employee_number` | | VARCHAR(20) | | | 車両の入庫または出庫を行った運転手または係員 |

## 6.運転手管理

### テーブル名: 運転手 （M17-ENTITY-601）

- **テーブル物理名**: `drivers`
- **テーブル説明**: 運転手の勤務情報や乗務情報の基礎となるマスタ

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 社員番号 | `employee_number` | PK | VARCHAR(20) | ○ | | 社員コード等 |
| 所属営業所コード | `office_code` | | VARCHAR(20) | | | officesテーブルへの外部キー |
| 勤務形態区分 | `working_style_type` | | VARCHAR(20) | | | 区分値（例）：'全日4勤2休', '早番専任', '事務員兼任' |

### テーブル名: 運転手台帳 （M17-ENTITY-602）

- **テーブル物理名**: `driver_ledgers`
- **テーブル説明**: 法令で事業者に管理が定められている運転手台帳に関する情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運転手台帳番号 | `driver_ledger_number` | PK | VARCHAR(20) | ○ | | |
| 事業者コード | `operator_code` | | VARCHAR(20) | ○ | | |
| 社員番号 | `employee_number` | | VARCHAR(20) | ○ | | |
| 氏名 | `driver_name` | | VARCHAR(100) | | | |
| 住所 | `address` | | VARCHAR(255) | | | |
| 雇用年月日 | `hire_date` | | DATE | | | |
| 選任年月日 | `appointment_date` | | DATE | | | 運転手として選任された日 |
| 連絡先電話番号 | `phone_number` | | VARCHAR(20) | | | |
| 緊急連絡先 | `emergency_phone_number` | | VARCHAR(20) | | | |
| 写真 | `` | | VARCHAR(20) | | | |
| 退職年月日 | `retirement_date` | | DATE | | | |
| 退職理由 | `retirement_reason` | | TEXT | | | |
| 台帳作成年月日 | `ledger_creation_date` | | DATE | | | |

### テーブル名: 運転手法定免許 （M17-ENTITY-603）

- **テーブル物理名**: `driver_licenses`
- **テーブル説明**: 運転手が所持する法定免許についての情報を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 免許ID | `driver_license_id` | PK | VARCHAR(36) | ○ | | |
| 運転手台帳番号 | `driver_ledger_number` | UK | VARCHAR(20) | ○ | | |
| 免許区分 | `license_type` | UK | VARCHAR(20) | ○ | | 区分値（例）: 'large_class_2'等 |
| 免許番号 | `license_number` | | VARCHAR(50) | ○ | | |
| 取得日 | `acquisition_date` | | DATE | ○ | | |
| 有効期限 | `expiry_date` | | DATE | ○ | | |
| 条件等 | `conditions` | | VARCHAR(100) | | | '眼鏡等'等 |

### テーブル名: 運転手認定資格 （M17-ENTITY-604）

- **テーブル物理名**: `driver_certifications`
- **テーブル説明**: 社内資格や特定路線の運転許可に関する資格情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 認定資格ID | `driver_certification_id` | PK | VARCHAR(36) | ○ | | |
| 運転手台帳番号 | `driver_ledger_number` | UK | VARCHAR(20) | ○ | | |
| 資格名称 | `certification_name` | UK | VARCHAR(50) | ○ | | 例: 特定路線習熟資格 |
| 認定日 | `certified_date` | | DATE | ○ | | |

### テーブル名: 運転手健康管理 （M17-ENTITY-605）

- **テーブル物理名**: `driver_health_records`
- **テーブル説明**: 運転手が受診した健康診断の履歴を管理

| カラム名(論理) | カラム名(補助名) | PK | VARCHAR(36) | ○ | | |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運転手健康管理ID | `driver_health_record_id` | PK | VARCHAR(36) | ○ | | |
| 運転手台帳番号 | `driver_ledger_number` | | VARCHAR(20) | ○ | | |
| 受診年月日 | `examination_date` | | DATE | ○ | | |
| 診断種別区分 | `examination_type` | | VARCHAR(20) | | | 区分値（例）: 'periodic', 'temporary'等 |
| 検査名 | `examination_name` | | TEXT | | | |
| 診断結果所見 | `findings` | | TEXT | | | |

### テーブル名: 運転手適性診断履歴 （M17-ENTITY-606）

- **テーブル物理名**: `driver_aptitude_test_records`
- **テーブル説明**: 運転手が受診した適性診断の履歴を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運転手適性診断履歴ID | `driver_aptitude_test_record_id` | PK | VARCHAR(36) | ○ | | |
| 運転手台帳番号 | `driver_ledger_number` | | VARCHAR(20) | ○ | | |
| 診断実施年月日 | `test_date` | | DATE | ○ | | |
| 診断種別区分 | `test_type` | | VARCHAR(20) | ○ | | 'initial', 'periodic', 'special'等 |
| 適性診断名 | `test_name` | | VARCHAR(20) | | | |
| 診断結果 | `test_result` | | TEXT | | | |

### テーブル名: 運転手教習履歴 （M17-ENTITY-607）

- **テーブル物理名**: `driver_training_records`
- **テーブル説明**: 運転手が受講した教習の履歴を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運転手教習履歴ID | `driver_training_record_id` | PK | VARCHAR(36) | ○ | | |
| 運転手台帳番号 | `driver_ledger_number` | | VARCHAR(20) | ○ | | |
| 教習実施年月日 | `training_date` | | DATE | ○ | | |
| 教習種別区分 | `training_type` | | VARCHAR(20) | ○ | | 区分値例： '新人教習', '熟練' |
| 教習実施社員番号 | `trainer_employee_number` | | VARCHAR(20) | | | 教官の社員番号 |
| 内容 | `content` | | TEXT | | | |

### テーブル名: 運転手事故違反履歴 （M17-ENTITY-608）

- **テーブル物理名**: `driver_incident_records`
- **テーブル説明**: 運転手の事故や違反の履歴を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運転手事故違反履歴ID | `driver_incident_record_id` | PK | VARCHAR(36) | ○ | | |
| 運転手台帳番号 | `driver_ledger_number` | | VARCHAR(20) | ○ | | |
| 発生年月日 | `incident_date` | | DATE | ○ | | |
| 発生場所 | `incident_location` | | VARCHAR(255) | | | |
| 事故区分 | `accident_type` | | VARCHAR(20) | | | 区分値（例）: 居眠り, 追突等 |
| 違反区分 | `violation_type` | | VARCHAR(20) | | | 区分値（例）: 速度超過, 違法駐車等 |
| 概要 | `summary` | | TEXT | | | |

### テーブル名: 運転手兼務営業所 （M17-ENTITY-609）

- **テーブル物理名**: `driver_concurrent_offices`
- **テーブル説明**: 運転手単位に兼務可能な営業所を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 兼務営業所ID | `concurrent_office_id` | PK | VARCHAR(36) | ○ | | |
| 社員番号 | `employee_number` | UK | VARCHAR(20) | ○ | | |
| 営業所コード | `office_code` | UK | VARCHAR(20) | ○ | | 兼務先の営業所コード、officesテーブルへの外部キー |
| 適用開始日 | `valid_from_date` | | DATE | ○ | | |
| 適用終了日 | `valid_to_date` | | DATE | ○ | | |

### テーブル名: 勤務グループ編成 （M17-ENTITY-610）

- **テーブル物理名**: `driver_operation_groups`
- **テーブル説明**: 運転手ごとに担当する仕業グループとななめ交番等で仕業を割り当てる際の順序などの情報を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 勤務グループ編成ID | `driver_operation_group_id` | PK | VARCHAR(36) | ○ | | |
| 営業所コード | `office_code` | | VARCHAR(20) | ○ | | officesテーブルへの外部キー |
| 社員番号 | `employee_number` | UK | VARCHAR(20) | ○ | | |
| 仕業グループコード | `duty_group_code` | UK | VARCHAR(20) | ○ | | |
| 仕業割当順序 | `duty_group_order` | | INTEGER | | | 仕業グループ内で仕業をローテーションして割り当てる際の順序 |
| 適用開始日 | `valid_from_date` | | DATE | ○ | | |
| 適用終了日 | `valid_to_date` | | DATE | ○ | | |

### テーブル名: 運転手稼働計画 （M17-ENTITY-611）

- **テーブル物理名**: `driver_availability_plans`
- **テーブル説明**: 運転手としての稼働可否情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 社員番号 | `employee_number` | PK | VARCHAR(20) | ○ | | |
| 対象年月日 | `target_date` | PK | DATE | ○ | | |
| 稼働可否 | `is_available` | | BOOLEAN | ○ | | |
| 営業所コード | `office_code` | | BOOLEAN | | | 所属営業所以外の営業所で勤務することが計画されている場合に利用、officesテーブルへの外部キー |
| 非稼働区分 | `unavailability_type` | | VARCHAR(20) | ○ | | 区分値（例）: '休日', '有給', '教習'等 |
| 非稼働理由詳細 | `unavailability_reason` | | TEXT | ○ | | |

### テーブル名: 運転手乗務可能車種 （M17-ENTITY-612）

- **テーブル物理名**: `driver_drivable_vehicle_types`
- **テーブル説明**: 運転手がどの車格（大型・中型等）の車両を運転可能かを管理する情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 社員番号 | `employee_number` | PK | VARCHAR(20) | ○ | | `drivers`テーブルへの外部キー |
| 適用車両種別 | `vehicle_type_class` | PK | VARCHAR(20) | ○ | | 区分値（例）: '大型', '中型', '小型', '連節' |
| 乗務許可ステータス | `suitability_type` | | VARCHAR(20) | ○ | | 区分値（例）: '許可', '講習中', '停止中' |
| 乗務許可認定日 | `authorized_date` | | DATE | ○ | | |
| 技能レベル | `skill_level` | | INTEGER | | | 1-5段階評価など技能評価値 |

### テーブル名: 運転手系統別乗務制約 （M17-ENTITY-613）

- **テーブル物理名**: `driver_route_constraints`
- **テーブル説明**: 系統ごとの運転手の習熟度や乗務の可否を管理する情報

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 社員番号 | `employee_number` | PK | VARCHAR(20) | ○ | | driversテーブルへの外部キー |
| 系統コード | `line_code` | PK | VARCHAR(20) | ○ | | linesテーブルへの外部キー |
| 乗務適性区分 | `suitability_type` | | VARCHAR(20) | ○ | | 区分値（例）: '乗務可', '乗務不可', '条件付可', '優先割当' |
| 習熟度区分 | `proficiency_level_type` | | VARCHAR(20) | | | 区分値（例）: '見習い', '一般', '指導員クラス' |
| 制約理由 | `constraint_reason` | | VARCHAR(255) | | | 例: '狭隘路経験不足', '居住地考慮' |

## 7.車両管理

### テーブル名: 車両 （M17-ENTITY-701）

- **テーブル物理名**: `vehicles`
- **テーブル説明**: 車両の基本情報を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 車両番号 | `vehicle_number` | PK | VARCHAR(20) | ○ | | 車両固有の管理番号（社番） |
| 所属営業所コード | `office_code` | | VARCHAR(20) | ○ | | officesテーブルへの外部キー |
| 車名 | `vehicle_name` | | VARCHAR(50) | | | 事業者や営業所における呼称や号車名 |
| 稼働ステータス | `status` | | VARCHAR(20) | ○ | | 区分値（例）: '稼働中', '休止中', '除籍' |
| 車両登録番号 | `license_plate` | | VARCHAR(20) | ○ | | ナンバープレート情報 |
| 車台番号 | `vin` | | VARCHAR(50) | | | 車両識別番号（Vehicle Identification Number） |
| 登録区分 | `registration_classification` | | VARCHAR(20) | | | 区分値（例）: '事業用', '自家用', '貸渡用' |
| 登録種別 | `registration_type` | | VARCHAR(20) | | | 区分値（例）: '普通', '小型', '大型特殊' |
| 初度登録年月 | `initial_registration_date` | | DATE | | | 新車として最初に登録された年月 |
| 許認可番号 | `permit_number` | | VARCHAR(50) | | | 道路運送法に基づく事業許可番号等 |
| 許認可有効期限 | `permit_expiry_date` | | DATE | | | 許可または車検の有効期間満了日 |
| 必須免許区分 | `required_license_type` | | VARCHAR(20) | | | 運転に必要な免許（例: '大型二種'） |
| メーカー名 | `manufacturer_name` | | VARCHAR(50) | | | |
| 車種名 | `model_name` | | VARCHAR(50) | | | |
| 年式 | `model_year` | | VARCHAR(20) | | | |
| 型式 | `model_type` | | VARCHAR(50) | | | |
| バリアフリー区分 | `barrier_free_type` | | VARCHAR(20) | | | 区分値（例）: 'ノンステップ', 'ワンステップ' |
| 全長_m | `length_m` | | NUMERIC(5, 2) | | | |
| 全幅_m | `width_m` | | NUMERIC(5, 2) | | | |
| 全高_m | `height_m` | | NUMERIC(5, 2) | | | |
| 車両重量_kg | `vehicle_weight_kg` | | INTEGER | | | |
| 総重量_kg | `gross_vehicle_weight_kg` | | INTEGER | | | |
| 乗車定員_座席 | `seat_capacity` | | INTEGER | | | |
| 乗車定員_立席 | `standing_capacity` | | INTEGER | | | |
| 最大積載量_kg | `max_load_capacity_kg` | | INTEGER | | | |
| ラッピング有無 | `is_wrapped` | | BOOLEAN | | | |
| 導入年月日 | `introduction_date` | | DATE | | | |
| 稼働開始日時 | `service_start_datetime` | | TIMESTAMP WITH TIME ZONE | | | |
| 稼働終了日時 | `service_end_datetime` | | TIMESTAMP WITH TIME ZONE | | | |

### テーブル名: 車載機器 （M17-ENTITY-702）

- **テーブル物理名**: `onboard_equipment_items`
- **テーブル説明**: バスに搭載可能な機器のカタログ情報（運賃箱、整理券発行機、デジタコ、ドラレコ、行先表示器など）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 機器品目コード | `equipment_item_code` | PK | VARCHAR(20) | ○ | | 機器の種類を一意に識別するコード |
| 機器名称 | `equipment_name` | | VARCHAR(100) | ○ | | 例: ICカードリーダーA型 |
| 機器種別区分 | `equipment_type` | | VARCHAR(20) | ○ | | 区分値（例）: '運賃収受', '運行記録', '表示器', '通信機' |
| メーカー名 | `manufacturer_name` | | VARCHAR(50) | | | |
| 型式 | `model_number` | | VARCHAR(50) | | | メーカー型番 |
| 仕様詳細 | `specification_details` | | TEXT | | | 通信規格、電圧など |

### テーブル名: 車両装備機器 （M17-ENTITY-703）

- **テーブル物理名**: `vehicle_equipments`
- **テーブル説明**: 車両に搭載されている機器のシリアル番号や個体ごとの設定などの構成情報を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 車両装備ID | `vehicle_equipment_id` | PK | VARCHAR(36) | ○ | | 車両に装備されている機器を一意に識別する識別子 |
| 車両番号 | `vehicle_number` | | VARCHAR(20) | ○ | | vehiclesテーブルへの外部キー |
| 機器品目コード | `equipment_item_code` | | VARCHAR(20) | ○ | | onboard_equipment_itemsへの外部キー |
| シリアル番号 | `serial_number` | | VARCHAR(50) | | | 機器個体の製造番号 |
| 資産管理番号 | `asset_management_number` | | VARCHAR(50) | | ○ | 社内で管理する固定資産番号やリース番号 |
| 設置年月日 | `installation_date` | | DATE | ○ | | |
| 設置位置 | `installation_location` | | VARCHAR(50) | | | 例: '運転席背面', '運賃箱横', '天井前方' |
| 接続インタフェース | `connection_interface` | | VARCHAR(50) | | | 例: 'CAN1', 'RS232C', 'ACC電源', 'USBポート1' |
| ファームウェアVer | `firmware_version` | | VARCHAR(20) | | | 現在適用されているFWバージョン |
| 稼働ステータス | `status` | | VARCHAR(20) | ○ | | 区分値（例）: '稼働中', '故障中', '休止中' |
| 通信SIM番号 | `sim_card_number` | | VARCHAR(20) | | | 通信機器の場合のSIM情報 |

### テーブル名: 車載機器更新履歴 （M17-ENTITY-704）

- **テーブル物理名**: `vehicle_equipment_history`
- **テーブル説明**: 機器の取り付け、取り外し、故障交換、アップデートなどのライフサイクルイベントを記録

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 機器履歴ID | `equipment_history_id` | PK | VARCHAR(36) | ○ | | |
| 車両装備ID | `vehicle_equipment_id` | | VARCHAR(36) | ○ | | vehicle_equipmentsテーブルへの外部キー |
| イベント発生日時 | `event_datetime` | | TIMESTAMP WITH TIME ZONE | ○ | | 作業が行われた日時 |
| イベント区分 | `event_type` | | VARCHAR(20) | ○ | | 区分値（例）: '新規設置', '撤去', '故障交換', 'FW更新' |
| 作業内容 | `description` | | TEXT | | | 作業の詳細や交換理由など |
| 作業担当者ID | `worker_id` | | VARCHAR(20) | | | 社員番号または業者コード |
| 更新前バージョン | `previous_version` | | VARCHAR(100) | | | FW更新前のバージョンや、交換前のシリアル番号など |
| 更新後バージョン | `updated_version` | | VARCHAR(100) | | | FW更新後のバージョンや、交換後のシリアル番号など |

### テーブル名: 車両税務記録 （M17-ENTITY-705）

- **テーブル物理名**: `vehicle_tax_records`
- **テーブル説明**: 車両に関連する税金（自動車税、重量税など）の納付義務と実績を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 税務記録ID | `tax_record_id` | PK | VARCHAR(36) | ○ | | 車両に関する税務処理を一意に識別する識別子 |
| 車両番号 | `vehicle_number` | UK | VARCHAR(20) | ○ | | vehiclesテーブルへの外部キー |
| 年度 | `fiscal_year` | UK | INTEGER | ○ | | 課税年度（例: 2025） |
| 税種別区分 | `tax_type` | UK | VARCHAR(20) | ○ | | 区分値（例）: '自動車税', '自動車重量税', '環境性能割' |
| 納付期限日 | `payment_due_date` | | DATE | ○ | | |
| 納付額 | `payment_amount` | | INTEGER | ○ | | |
| 納付完了日 | `payment_date` | | DATE | | | 実際に納付した日 |
| 納付ステータス | `payment_status` | | VARCHAR(20) | ○ | '未納' | 区分値（例）: '未納', '納付済', '免除' |
| 備考 | `remarks` | | TEXT | | | 領収書番号や特記事項など |

### テーブル名: 車両保険契約 （M17-ENTITY-706）

- **テーブル物理名**: `vehicle_insurance_contracts`
- **テーブル説明**: 車両が加入している保険契約（任意保険・自賠責保険）の情報を履歴管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 保険契約ID | `insurance_contract_id` | PK | VARCHAR(36) | ○ | | 車両が加入している保険を一意に識別する識別子 |
| 車両番号 | `vehicle_number` | UK | VARCHAR(20) | ○ | | vehiclesテーブルへの外部キー |
| 保険種別区分 | `insurance_category` | | VARCHAR(20) | ○ | | 区分値（例）: '任意保険', '自賠責保険' |
| 保険会社名 | `insurance_company_name` | | VARCHAR(100) | ○ | | |
| 証券番号 | `policy_number` | UK | VARCHAR(50) | ○ | | |
| 契約開始日 | `contract_start_date` | | DATE | ○ | | 保険期間の始期 |
| 契約終了日 | `contract_end_date` | | DATE | ○ | | 保険期間の満期 |
| 対人賠償内容 | `bodily_injury_coverage` | | VARCHAR(100) | | | 例: '無制限' |
| 対物賠償内容 | `property_damage_coverage` | | VARCHAR(100) | | | 例: '無制限（免責5万）' |
| 搭乗者傷害内容 | `passenger_coverage` | | TEXT | | | |
| 車両保険内容 | `vehicle_coverage` | | TEXT | | | 車両保険の有無や免責金額など |
| 特約事項 | `special_clauses` | | TEXT | | | 弁護士特約、ロードサービス等 |
| 契約ステータス | `contract_status` | | VARCHAR(20) | ○ | | 区分値（例）: '有効', '満期', '解約' |

### テーブル名: 車両点検整備記録 （M17-ENTITY-707）

- **テーブル物理名**: `vehicle_maintenance_records`
- **テーブル説明**: 車両に対する点検・整備の実施実績を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 整備記録ID | `maintenance_record_id` | PK | VARCHAR(36) | ○ | | 車両に対する点検・整備イベントを一意に識別する識別子 |
| 車両番号 | `vehicle_number` | UK | VARCHAR(20) | ○ | | vehiclesテーブルへの外部キー |
| 整備区分 | `maintenance_type` | UK | VARCHAR(20) | ○ | | 区分値（例）: '車検', '3ヶ月点検', '臨時修理' |
| 実施開始日 | `start_date` | UK | DATE | ○ | | |
| 実施終了日 | `completion_date` | | DATE | ○ | | |
| 実施時走行距離 | `odometer_value` | | INTEGER | ○ | | 整備時点のオドメーター値(km) |
| 実施場所区分 | `location_type` | | VARCHAR(20) | ○ | | 区分値（例）: '自社工場', '外注工場' |
| 実施場所名 | `location_name` | | VARCHAR(100) | | | 具体的な工場名やディーラー名 |
| 作業責任者社員番号 | `supervisor_employee_number` | | VARCHAR(50) | | | 整備主任者などの責任者の社員番号 |
| 総合判定結果 | `overall_result` | | VARCHAR(20) | | | 区分値（例）: '合格', '不合格' |
| 総整備費用 | `total_cost` | | INTEGER | | | 部品代・工賃の合計 |
| 整備伝票番号 | `slip_number` | | VARCHAR(50) | | | 外部業者の請求書番号など |
| 備考 | `remarks` | | TEXT | | | |

### テーブル名: 車両点検整備明細 （M17-ENTITY-708）

- **テーブル物理名**: `vehicle_maintenance_details`
- **テーブル説明**: 1つの点検・整備イベント内で行われた具体的な作業内容や特定箇所の点検結果を記録

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 整備明細ID | `maintenance_detail_id` | PK | VARCHAR(36) | ○ | | 車両に対する点検・整備イベントの明細を一意に識別する識別子 |
| 整備記録ID | `maintenance_record_id` | UK | VARCHAR(36) | ○ | | vehicle_maintenance_recordsへの外部キー |
| 順序 | `sequence_order` | | INTEGER | ○ | UK | 帳票上の並び順 |
| 作業カテゴリ | `task_category` | | VARCHAR(20) | | | 例: 'エンジン', 'ブレーキ' |
| 作業内容 | `task_description` | | VARCHAR(200) | ○ | | 例: 'エンジンオイル交換' |
| 点検結果区分 | `inspection_result` | | VARCHAR(20) | | | 区分値（例）: '良', '要交換' |
| 測定値 | `measured_value` | | VARCHAR(50) | | | 例: 'ブレーキ残厚 5.0mm' |
| 処置内容 | `action_taken` | | TEXT | | | 具体的に行った処置 |
| 作業担当者ID | `worker_id` | | VARCHAR(20) | | | 実際に手を動かした担当者 |

### テーブル名: 車両交換部品記録 （M17-ENTITY-709）

- **テーブル物理名**: `vehicle_maintenance_parts`
- **テーブル説明**: 整備において交換または使用された部品の情報を記録

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 交換部品ID | `replaced_part_id` | PK | VARCHAR(36) | ○ | | 整備において交換または使用された部品を一意にする |
| 整備記録ID | `maintenance_record_id` | UK | VARCHAR(36) | ○ | | vehicle_maintenance_recordsへの外部キー |
| 部品名 | `part_name` | | VARCHAR(100) | ○ | | |
| 部品番号 | `part_number` | | VARCHAR(50) | UK | | メーカー品番など |
| 数量 | `quantity` | | NUMERIC(6, 2) | ○ | 1 | |
| 単位 | `unit` | | VARCHAR(20) | | | 個, L, 式 等 |
| 単価 | `unit_price` | | INTEGER | | | |
| 金額 | `total_price` | | INTEGER | | | 数量×単価 |
| 部品供給元 | `supplier_name` | | VARCHAR(100) | | | |

### テーブル名: 車両点検整備計画 （M17-ENTITY-710）

- **テーブル物理名**: `vehicle_maintenance_plans`
- **テーブル説明**: 車両ごとの法定点検、車検、自主点検、および臨時の修理に関する実施計画

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 整備計画ID | `vehicle_maintenance_plan_id` | PK | VARCHAR(36) | ○ | | |
| 車両番号 | `vehicle_number` | | VARCHAR(20) | ○ | | vehiclesテーブルへの外部キー |
| 整備区分 | `maintenance_type` | | VARCHAR(20) | ○ | | 区分値（例）: '車検', '3ヶ月点検', '臨時修理' 等 |
| 計画ステータス | `plan_status` | | VARCHAR(20) | ○ | | 区分値（例）: '計画案', '調整中', '確定', '完了', 'キャンセル' |
| 整備開始予定年月日 | `scheduled_start_date` | | DATE | ○ | | |
| 整備終了予定年月日 | `scheduled_end_date` | | DATE | | | |
| 実施場所区分 | `facility_type` | | VARCHAR(20) | | | 区分値（例）: '自社工場', '外注工場' |
| 実施予定場所名 | `planned_facility_name` | | VARCHAR(100) | | | 具体的な工場名や業者名 |
| 総見積工数_分 | `total_estimated_minutes` | | INTEGER | | | 計画時点での想定所要時間 |
| 整備内容概要 | `description` | | TEXT | | | |

### テーブル名: 車両点検整備計画明細 （M17-ENTITY-711）

- **テーブル物理名**: `vehicle_maintenance_plan_details`
- **テーブル説明**: 1つの整備計画に含まれる具体的な作業項目（定例点検項目＋追加修理項目）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 整備計画明細ID | `plan_detail_id` | PK | VARCHAR(36) | ○ | | |
| 整備計画ID | `vehicle_maintenance_plan_id` | | VARCHAR(36) | ○ | | |
| 点検項目コード | `inspection_item_code` | | VARCHAR(20) | | | マスタにある定型項目の場合設定 |
| 作業内容詳細 | `task_description` | | VARCHAR(200) | ○ | | マスタにない修理等の場合ここに記述、ある場合は名称をコピーする |
| 見積工数_分 | `estimated_minutes` | | INTEGER | | | |
| 整備士社員番号 | `mechanic_employee_number` | | VARCHAR(20) | | | 計画段階で担当整備士を指定する場合に設定 |
| 備考 | `remarks` | | TEXT | | | 運行管理業務からの申し送り事項など |

### テーブル名: 車両点検整備項目 （M17-ENTITY-712）

- **テーブル物理名**: `vehicle_maintenance_inspection_items`
- **テーブル説明**: 法定点検や自主点検で実施すべき個々の点検項目と、その標準的な作業時間を定義するマスタ

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 点検項目コード | `inspection_item_code` | PK | VARCHAR(20) | ○ | | |
| 点検項目名 | `inspection_item_name` | | VARCHAR(100) | ○ | | 例: ブレーキパッド残量確認、エンジンオイル交換 |
| 点検区分 | `inspection_type` | | VARCHAR(20) | ○ | | 区分値（例）: '車検', '3ヶ月点検', '12ヶ月点検', '自主点検' |
| 作業カテゴリ | `task_category` | | VARCHAR(20) | | | 例: エンジン, 足回り, 電装系 |
| 基準作業時間_分 | `standard_work_minutes` | | INTEGER | | | この項目の実施にかかる標準的な工数 |
| 必須区分 | `is_mandatory` | | BOOLEAN | ○ | true | 法定点検などで必須実施かどうか |
| 説明 | `description` | | TEXT | | | |

### テーブル名: 車両点検整備工場 （M17-ENTITY-713）

- **テーブル物理名**: `vehicle_maintenance_facilities`
- **テーブル説明**: 車両の整備を実施する自社工場および外注工場の基本情報を管理するマスタ

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 整備工場コード | `facility_code` | PK | VARCHAR(20) | ○ | | |
| 整備工場名 | `facility_name` | | VARCHAR(100) | ○ | | |
| 工場区分 | `facility_type` | | VARCHAR(20) | ○ | | 区分値（例）: '自社', '外注' |
| 稼働ステータス | `status` | | VARCHAR(20) | ○ | | 区分値（例）: '稼働中', '休止中', '契約終了' |
| 住所 | `address` | | VARCHAR(255) | | | |
| 電話番号 | `phone_number` | | VARCHAR(20) | | | |
| 営業所コード | `office_code` | | VARCHAR(20) | | | 自社工場の場合、併設する営業所があれば紐付け |
| 最大受入台数 | `max_daily_capacity` | | INTEGER | | | 1日あたりの最大受入可能台数 |
| 受入可能車種区分 | `acceptable_vehicle_types` | | VARCHAR(100) | | | 例: '大型,中型'（カンマ区切り等で管理） |
| 繁忙期制約 | `peak_season_constraints` | | TEXT | | | 例: '3月は車検のみ受付' 等の制約条件 |
| 特定整備認証有無 | `has_specific_maintenance_cert` | | BOOLEAN | ○ | | 自動ブレーキ等の特定整備が可能か |
| ピット数 | `pit_count` | | INTEGER | | | （自社工場用）同時作業可能なピット数 |
| リフト数 | `lift_count` | | INTEGER | | | （自社工場用）設置されているリフトの数 |
| 大型車対応可否 | `is_large_vehicle_capable` | | BOOLEAN | ○ | | （自社工場用）大型バスの入庫・作業が可能か |
| 設備備考 | `facility_remarks` | | TEXT | | | （自社工場用）特殊工具の有無などを記載 |
| 予約リードタイム日数 | `booking_lead_time_days` | | INTEGER | | 3 | （外注工場用）予約に必要な事前の日数 |
| 受付単位 | `reception_unit` | | VARCHAR(20) | ○ | | （外注工場用）区分値（例）: '台数', '時間枠', '要相談' |
| 契約開始日 | `contract_start_date` | | DATE | | | （外注工場用） |
| 契約終了日 | `contract_end_date` | | DATE | | | （外注工場用） |

### テーブル名: 整備士 （M17-ENTITY-714）

- **テーブル物理名**: `mechanics`
- **テーブル説明**: 整備業務に従事する社員の専門情報を管理する

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 社員番号 | `employee_number` | PK | VARCHAR(20) | ○ | | driversテーブルへの外部キー |
| 所属整備工場コード | `facility_code` | | VARCHAR(20) | ○ | | 主務として所属する自社工場 |
| 整備士ランク | `mechanic_rank` | | VARCHAR(20) | | | 社内の技術レベル（例: '班長', '一般'） |
| 経験年数 | `years_of_experience` | | INTEGER | | | |

### テーブル名: 配車駐車枠 （M17-ENTITY-715）

- **テーブル物理名**: `parking_slots`
- **テーブル説明**: 車庫または駐車場における駐車位置と入出庫の順序を定義したマスタ

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 駐車枠ID | `parking_slot_id` | PK | VARCHAR(36) | ○ | | |
| 保管場所コード | `storage_location_code` | UK | VARCHAR(20) | ○ | | vehicle_storage_locationsへの外部キー |
| 入庫順序 | `parking_slot_order` | UK | INTEGER | | | 車両を入庫させる基準となる順序 |
| 駐車枠番号 | `slot_number` | | VARCHAR(20) | ○ | | 現場で駐車枠を識別するための番号（例: A-1, 10番） |
| 駐車枠サイズ区分 | `slot_size_class` | | VARCHAR(20) | ○ | | 区分値（例）: '大型', '中型', '小型' |
| 縦列駐車区分 | `tandem_type` | | VARCHAR(20) | | | 区分値（例）: '単独', '縦列(奥)', '縦列(手前)' |
| 支障駐車枠ID | `blocking_slot_id` | | VARCHAR(36) | | | 自身が出庫するために移動が必要な手前の枠ID（自己参照） |
| 屋根有無 | `has_roof` | | BOOLEAN | | false | |
| 充電設備有無 | `has_charging_station` | | BOOLEAN | | false | EVバス用 |

### テーブル名: 車両配車制約 （M17-ENTITY-716）

- **テーブル物理名**: `vehicle_dispatch_constraints`
- **テーブル説明**: ラッピング広告や補助金要件など、車両を特定の路線や系統に限定、あるいは優先させるための制約条件を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 配車制約ID | `dispatch_constraint_id` | PK | VARCHAR(36) | ○ | | |
| 車両番号 | `vehicle_number` | | VARCHAR(20) | ○ | | vehiclesテーブルへの外部キー |
| 制約種別区分 | `constraint_type` | | VARCHAR(20) | ○ | | 区分値（例）: '補助金', '車内広告', 'ラッピング', 'イベント専用' |
| 制約名称 | `constraint_name` | | VARCHAR(100) | ○ | | 例: '○○市コミュニティバス補助', '××不動産ラッピング' |
| 指定系統コード | `target_line_code` | | VARCHAR(20) | | | 特定の系統に限定される場合に設定 |
| 適用開始日 | `valid_from_date` | | DATE | ○ | | 広告契約期間の開始日など |
| 適用終了日 | `valid_to_date` | | DATE | ○ | | |
| 優先度 | `priority_level` | | INTEGER | | | 配車ロジック上の優先順位（高いほど優先的に割り当て） |

### テーブル名: 車両運用属性 （M17-ENTITY-717）

- **テーブル物理名**: `vehicle_operational_attributes`
- **テーブル説明**: 営業所で定める車両単位の運用ルール（固定制・ローテーション制、乗継ルールなど）を管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 車両番号 | `vehicle_number` | PK | VARCHAR(20) | ○ | | vehiclesテーブルへの外部キー |
| 担当方式区分 | `assignment_method` | | VARCHAR(20) | ○ | | 区分値（例）: '担当者固定制', 'ローテーション制', '仕業固定制' |
| 乗継運用可否 | `is_relay_capable` | | BOOLEAN | ○ | true | 複数運転手が乗り継ぐ運用（中休・長時間稼働）に使用可能か |
| 予備車区分 | `spare_vehicle_type` | | VARCHAR(20) | | | 区分値（例）: '常用', '一般予備', '特定予備' |
| 車両保管場所コード | `default_parking_code` | | VARCHAR(20) | | | 営業時間外に基本的に駐車する場所（車庫・駐車場） |

### テーブル名: 車両稼働計画 （M17-ENTITY-718）

- **テーブル物理名**: `vehicle_availability_plans`
- **テーブル説明**: 営業日単位×車両単位の稼働可否と非稼働理由などを管理

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 車両稼働計画ID | `vehicle_availability_plan_id` | PK | VARCHAR(36) | ○ | | 車両に対する点検・整備イベントの明細を一意に識別する識別子 |
| 車両番号 | `vehicle_number` | UK | VARCHAR(20) | ○ | | vehiclesテーブルへの外部キー |
| 対象年月日 | `target_date` | UK | DATE | ○ | | |
| 稼働可否 | `is_available` | | BOOLEAN | ○ | | |
| 営業所コード | `office_code` | | VARCHAR(20) | | | 主に車両が所属する営業所以外の営業所で稼働させる場合に利用、officesテーブルへの外部キー |
| 非稼働理由区分 | `unavailability_reason_type` | | VARCHAR(20) | | | 区分値（例）: '修理中', '車検', '行政処分' |
| 非稼働理由詳細 | `unavailability_reason_detail` | | VARCHAR(100) | | | |
| 予備車両番号 | `spare_vehicle_number` | | VARCHAR(20) | | | 非稼働車両に対して固定または候補として予備車両を割り当てる場合に利用 |

## 8.実績管理

### テーブル名: 実行運行実績 （M17-ENTITY-801）

- **テーブル物理名**: `actual_operating_trips`
- **テーブル説明**: 当日運行された便ごとの走行実績（実時間、実距離、遅延等）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運行実績ID | `actual_trip_id` | PK | VARCHAR(36) | ○ | | |
| 実行仕業構成ID | `daily_duty_composition_id` | UK | VARCHAR(36) | ○ | | daily_duty_compositionsテーブルの外部キー（実績データと勤務を紐づけるキー） |
| 便コード | `trip_code` | | VARCHAR(36) | ○ | | tripsテーブルへの外部キー |
| 運行年月日 | `operation_date` | | DATE | ○ | | 実際に運行された日付 |
| 実発時刻 | `actual_start_time` | | TIME | | | 始点停留所を発車した時刻 |
| 実着時刻 | `actual_end_time` | | TIME | | | 終点停留所に到着した時刻 |
| 実走行距離 | `actual_distance_km` | | NUMERIC(5, 2) | ○ | | 対象の便を運行する間に実際にバスが走行した距離 |
| 遅延時分 | `delay_minutes` | | INTEGER | | | 便単位の遅延実績（終着点への実着時刻 `actual_end_time` - 運行計画上の終着時刻） |
| 運行ステータス | `operation_status` | | VARCHAR(20) | ○ | | 区分値（例）: '正常', '早発', '遅延', '一部運休' |

### テーブル名: 実行運行実績明細 （M17-ENTITY-802）

- **テーブル物理名**: `actual_operating_trip_details`
- **テーブル説明**: 運行された便において経由した停留所ごとの乗降客数や通過時刻の実績

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 運行実績明細ID | `actual_operating_trip_detail_id` | PK | VARCHAR(36) | ○ | | |
| 運行実績ID | `actual_trip_id` | UK | VARCHAR(36) | ○ | | actual_operating_tripsへの外部キー |
| 停留所コード | `stop_code` | UK | VARCHAR(20) | ○ | | |
| 停留所名 | `stop_name` | | VARCHAR(100) | ○ | | |
| 実到着時刻 | `actual_arrived_time` | | TIME | ○ | | 停留所に到着した時刻 |
| 実発車時刻 | `actual_departure_time` | | TIME | ○ | | 停留所を発車した時刻 |
| 実待機時間_秒 | `actual_waiting_seconds` | | INTEGER | ○ | | 停留所で停車した時間 |
| 遅延時間_秒 | `delay_seconds` | | INTEGER | ○ | | 停留所単位の遅延実績（実到着時刻 `actual_arrived_time` - 運行計画上の停留所到着時刻） |
| 現金乗降人数 | `cash_passenger_count` | | INTEGER | | | 運賃箱等の車載機器データより集計される乗車人数（前払いの場合は乗車人数、後払いの場合は降車人数） |
| IC乗降人数 | `ic_passenger_count` | | INTEGER | | | ICカード利用明細等から集計される乗車人数（前払いの場合は乗車人数、後払いの場合は降車人数） |
| 乗車人数 | `boarding_count` | | INTEGER | | | 車載カメラ等から集計する乗車人数 |
| 降車人数 | `alighting_count` | | INTEGER | | | 車載カメラ等から取得する降車人数 |

### テーブル名: 乗降明細実績 （M17-ENTITY-803）

- **テーブル物理名**: `actual_ridership_transactions`
- **テーブル説明**: ICカード利用明細等の乗降実績データを保持（[乗降実績データ標準仕様](https://www.mlit.go.jp/commmmons/document/005/)に準拠した一件明細データを取得可能であることを前提とする）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 乗降明細実績ID | `ridership_transaction_id` | PK | VARCHAR(36) | ○ | | |
| 乗降実績ID | `ridership_record_id` | UK | INTEGER | ○ | | [乗降実績データ標準仕様: rider ship_record_id] 乗降実績データで採番されたID（対応する乗降実績レコードを特定するために保持） |
| ICカード識別コード | `ic_card_agency_identification_code` | | VARCHAR(20) | | | [乗降実績データ標準仕様: ic_card_agency_identification_code] ICカードの発⾏事業者を識別するコード |
| ICカード発⾏事業者コード | `ic_card_issuer_code` | | VARCHAR(20) | | | [乗降実績データ標準仕様: ic_card_issuer_code] ICカードの発⾏事業者を識別するコード |
| ICカード発⾏事業者名 | `ic_card_issuer_name` | | VARCHAR(100) | | | [乗降実績データ標準仕様: ic_card_issuer_name] ICカードの発⾏事業者名 |
| ICカード機能区分 | `ic_card_feature_type` | | VARCHAR(20) | | | [乗降実績データ標準仕様: ic_card_feature_type] ICカードに付帯されている機能を識別するコード |
| 券種エリアコード | `ticket_type_area_code` | | VARCHAR(20) | | | [乗降実績データ標準仕様: ticket_type_area_code] 定期券などの対象となるエリアを識別するコード |
| 券種区分 | `ticket_type` | | VARCHAR(20) | | | [乗降実績データ標準仕様: ticket_type] チケットに付帯している券種を識別するコード |
| 券種名 | `ticket_type_name` | | VARCHAR(100) | | | [乗降実績データ標準仕様: ticket_type_name] チケットに付帯している券種名 |
| 券有効開始⽇ | `ticket_valid_start_date` | | DATE | | | [乗降実績データ標準仕様: ticket_valid_start_date] 定期券等ICカードを特有の券種として利⽤している場合の有効開始⽇ |
| 券有効終了⽇ | `ticket_valid_end_date` | | DATE | | | [乗降実績データ標準仕様: ticket_valid_start_date] 定期券等ICカードを特有の券種として利⽤している場合の有効終了⽇ |
| ICカード利用明細ID | `ic_card_usage_detail_id` | | INTEGER | | | [乗降実績データ標準仕様: ic_card_usage_detail_id] ICカードが保持している⼀意のID |
| 実行仕業構成ID | `daily_duty_composition_id` | | VARCHAR(36) | ○ | | daily_duty_compositionsテーブルの外部キー（運行年月日と乗降実績データ標準仕様の仕業番号`duty_number`などから紐づく勤務表内の実行仕業を特定する） |
| 運行年月日 | `operation_date` | | DATE | ○ | | 勤務上の運行年月日 |
| 営業所コード | `office_code` | | VARCHAR(20) | ○ | | [乗降実績データ標準仕様: serviced_office_code] |
| 営業所名 | `office_name` | | VARCHAR(20) | | | [乗降実績データ標準仕様: serviced_office_name] |
| 路線名 | `route_name` | | VARCHAR(100) | | | [乗降実績データ標準仕様: serviced_line_name] |
| 系統コード | `line_code` | | VARCHAR(20) | ○ | | [乗降実績データ標準仕様: route_pattern_id] |
| 系統番号 | `line_number` | | VARCHAR(20) | | | [乗降実績データ標準仕様: route_pattern_number] |
| 系統名 | `line_name` | | VARCHAR(20) | | | [乗降実績データ標準仕様: route_name] |
| 便コード | `trip_code` | | VARCHAR(20) | | | [乗降実績データ標準仕様: trip_code] |
| 仕業番号 | `duty_number` | | VARCHAR(20) | | | [乗降実績データ標準仕様: timetable_number] |
| 車両番号 | `vehicle_number` | | VARCHAR(20) | | | [乗降実績データ標準仕様: vehicle_number] |
| 処理区分 | `operation_type` | | VARCHAR(20) | ○ | | [乗降実績データ標準仕様: operation_type]  区分値（例）: '乗車(ENTRY)', '降車(EXIT)' |
| 処理詳細区分 | `operation_detail_type` | | VARCHAR(20) | | | [乗降実績データ標準仕様: operation_detail_type]  区分値（例）: '割引料金', '特別料金', '割増料金' |
| 乗車日時 | `boarding_at` | | TIMESTAMP WITH TIME ZONE | ○ | | [乗降実績データ標準仕様: boarding_at] |
| 乗車エリアコード | `boarding_area_code` | | VARCHAR(20) | | | [乗降実績データ標準仕様: boarding_area_code] |
| 乗車停留所連番 | `boarding_station_sequence` | | INTEGER | | | [乗降実績データ標準仕様: boarding_station_sequence] 市内循環ルートなど、同一系統内で同じ停留所に複数回停車する場合があり、その際に何回目の停車かを識別するための連番 |
| 乗車停留所コード | `boarding_stop_code` | | VARCHAR(20) | ○ | | [乗降実績データ標準仕様: boarding_station_code] |
| 乗車停留所名 | `boarding_stop_name` | | VARCHAR(100) | | | [乗降実績データ標準仕様: boarding_station_name] |
| 降車日時 | `alighting_at` | | TIMESTAMP WITH TIME ZONE | | | [乗降実績データ標準仕様: alighting_at] |
| 降車エリアコード | `alighting_area_code` | | VARCHAR(20) | ○ | | [乗降実績データ標準仕様: alighting_area_code] |
| 降車停留所連番 | `alighting_station_sequence` | | INTEGER | | | [乗降実績データ標準仕様: alighting_station_sequence] |
| 降車停留所コード | `alighting_stop_code` | | VARCHAR(20) | ○ | | [乗降実績データ標準仕様: alighting_station_code] |
| 降車停留所名 | `alighting_stop_name` | | VARCHAR(100) | | | [乗降実績データ標準仕様: alighting_station_name] |
| 精算日時 | `payment_at` | | TIMESTAMP WITH TIME ZONE | | ○ | [乗降実績データ標準仕様: payment_at] |
| 精算金額 | `payment_amount` | | INTEGER | | ○ | 乗降時に支払われた金額（割引や定期券利用の場合やIC残額不足・投入金不足のような強制精算の場合、基準運賃と異なる金額となる） |
| 大人障がい者利用者数 | `adult_challenged_passenger_count` | | INTEGER | | | [乗降実績データ標準仕様: adult_challenged_passenger_count] ⼤⼈⾝障者利⽤⼈数 |
| 大人利用者数 | `adult_passenger_count` | | INTEGER | ○ | | [乗降実績データ標準仕様: adult_passenger_count] ⼤⼈利⽤⼈数 |
| 小児障がい者利用者数 | `child_challenged_passenger_count` | | INTEGER | | | [乗降実績データ標準仕様: child_challenged_passenger_count] ⼩児⾝障者利⽤⼈数 |
| 小児利用者数 | `child_passenger_count` | | INTEGER | ○ | | [乗降実績データ標準仕様: child_passenger_count] ⼩児利⽤⼈数 |
| 利用者分類区分 | `passenger_classification_type` | | VARCHAR(20) | ○ | | [乗降実績データ標準仕様: passenger_classification_type]  区分値（例）: '大人', '小児', '障がい者' |
| 支払い区分 | `payment_type` | | VARCHAR(20) | | | [乗降実績データ標準仕様: payment_type] 決済手段を表す区分。区分値（例）: '現金', 'ICカード', '電子マネー', 'QRコード' |
| 運賃商品区分 | `fare_product_type` | | VARCHAR(20) | | | 実際に利用された乗車券運賃の区分。区分値（例）: '現金片道', 'IC片道', '通勤定期', '通学定期', '回数券' |

### テーブル名: 便別乗降実績集計 （M17-ENTITY-804）

- **テーブル物理名**: `actual_trip_od_summaries`
- **テーブル説明**: 乗降明細実績を「便×乗車停留所×降車停留所」の単位で運行日ごとに集計したODデータ

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 便別乗降実績集計ID | `actual_trip_od_summary_id` | PK | VARCHAR(36) | ○ | | |
| 実行仕業構成ID | `daily_duty_composition_id` | UK | VARCHAR(36) | ○ | | daily_duty_compositionsテーブルの外部キー（実績データと勤務を紐づけるキー） |
| 便コード | `trip_code` | | VARCHAR(20) | ○ | | tripsテーブルへの外部キー |
| 運行年月日 | `operation_date` | | DATE | ○ | | 実際に運行された日付 |
| 乗車停留所コード | `boarding_stop_code` | UK | VARCHAR(20) | ○ | | |
| 乗車停留所名 | `boarding_stop_name` | | VARCHAR(100) | | | |
| 降車停留所コード | `alighting_stop_code` | UK | VARCHAR(20) | ○ | | |
| 降車停留所名 | `alighting_stop_name` | | VARCHAR(100) | | | |
| 合計乗客数 | `total_passenger_count` | | INTEGER | ○ | | ODペア（乗車停留所×降車停留所）ごとの合計人数 |
| 換算大人人数 | `equivalent_adult_count` | | NUMERIC(5,1) | | | 小児等を大人に換算した統計用数値 |

### テーブル名: 勤務実績表 （M17-ENTITY-805）

- **テーブル物理名**: `actual_work_results`
- **テーブル説明**: 運転手の日次の実勤務（拘束時間、休憩等）の集計

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 勤務実績ID | `actual_work_id` | PK | VARCHAR(36) | ○ | | |
| 勤務表ID | `operation_chart_id` | UK | VARCHAR(36) | ○ | | daily_operation_chartsへの外部キー |
| 実出勤日時 | `actual_start_at` | | TIME | ○ | | |
| 実退勤日時 | `actual_end_at` | | TIME | ○ | | |
| 総拘束時間_分 | `total_binding_minutes` | | INTEGER | ○ | | 実出勤〜実退勤の総時間 |
| 総運転時間_分 | `total_driving_minutes` | | INTEGER | ○ | | |
| 総休憩時間_分 | `total_rest_minutes` | | INTEGER | ○ | | |
| 実時間外勤務_分 | `actual_overtime_minutes` | | INTEGER | ○ | | |
| 法定遵守判定区分 | `compliance_status` | | VARCHAR(20) | ○ | | 区分値（例）：'適合', '違反あり'（改善基準告示等の適合状況判定に利用） |

### テーブル名: 勤務区分別時間実績 （M17-ENTITY-806）

- **テーブル物理名**: `actual_work_time_details`
- **テーブル説明**: 1日の勤務内での「運転」「待機」「回送」「付帯」等の内訳時間

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 勤務実績明細ID | `actual_time_detail_id` | PK | VARCHAR(36) | ○ | | |
| 勤務実績ID | `actual_work_id` | UK | VARCHAR(36) | ○ | | actual_work_resultsテーブルへの外部キー |
| 業務項目区分 | `duty_item_type` | UK | VARCHAR(20) | ○ | | 区分値（例）： '運転', '待機', '回送', '付帯' |
| 実績時間_分 | `actual_duration_minutes` | | INTEGER | ○ | | |

### テーブル名: 系統別売上金実績 （M17-ENTITY-807）

- **テーブル物理名**: `actual_sales_reconciliations`
- **テーブル説明**: 納金記録とシステム実績を突合して系統別に集計した確定売上データ

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 売上金実績ID | `actual_sales_id` | PK | VARCHAR(36) | ○ | | |
| 系統コード | `line_code` | UK | VARCHAR(20) | ○ | | linesテーブルへの外部キー |
| 運行年月日 | `operation_date` | UK | DATE | ○ | | |
| 確定現金売上 | `confirmed_cash_amount` | | INTEGER | ○ | | 系統別の現金の売上金額（運賃箱データより集計） |
| 確定IC売上 | `confirmed_ic_amount` | | INTEGER | ○ | | 系統別のICカード等の売上金額（乗降明細実績より集計） |
| 確定特殊券売上 | `confirmed_special_ticket_amount` | | INTEGER | ○ | | 現金またはICカード以外の特殊券など売上金額 |
| 確定定期券売上 | `confirmed_commuter_pass_amount` | | INTEGER | ○ | | 対象系統の定期券利用者数より運行日別に按分された売上金額 |
| 照合差異額 | `reconciliation_diff_amount` | | INTEGER | ○ | | |
| 差異要因区分 | `diff_reason_type` | | VARCHAR(20) | | | 区分値（例）：'入力ミス', '機器不具合' |

### テーブル名: 車両別稼働実績集計 （M17-ENTITY-808）

- **テーブル物理名**: `actual_vehicle_performance_summaries`
- **テーブル説明**: 車両ごとの日次や月次等の任意の期間における稼働集計値（燃費、稼働日数、走行距離等）

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 車両実績集計ID | `vehicle_perf_id` | PK | VARCHAR(36) | ○ | | |
| 車両番号 | `vehicle_number` | | VARCHAR(20) | ○ | | |
| 集計開始年月日 | `target_start_date` | | DATE | ○ | | |
| 集計終了年月日 | `target_end_date` | | DATE | ○ | | |
| 稼働日数 | `operating_days` | | INTEGER | ○ | | 対象期間において運行業務に使用された日数 |
| 総走行距離_km | `total_distance_km` | | NUMERIC(7, 2) | ○ | | |
| 総稼働時間_分 | `total_operating_minutes` | | INTEGER | ○ | | |
| 燃費_km_L | `fuel_efficiency` | | NUMERIC(5, 2) | | | 走行距離/燃料消費量（デジタコ等から取得） |
| 安全挙動スコア | `safety_score` | | INTEGER | | | 急加速・急減速等の評価値（急ブレーキ回数等からの算出値） |
