> **【注記】** TeamWorks 提供のテーブル定義書（全29テーブル）を `prisma/schema.prisma` 手書き作成（D-056）のために転記した記録です。3分割の1つです。
> **当時の記録であり、現行方針ではありません。** 定義書には誤記・廃止済み項目が含まれることが実DDL照合で判明しており、以後は実DDLを正とします（D-059）。
> 現在のスキーマの正は `prisma/schema.prisma`、経緯は `docs/decisions.md` と `docs/handoff.md` を参照してください。

## groups（グループ）
役割: グループ情報を管理する。新規追加 UI: 要
備考: 新規追加 UI: 要

| # | 論理カラム名 | 物理カラム名 | データ型 | サイズ | 必須 | 初期値 | キー | 備考 |
|---|---|---|---|---|---|---|---|---|
| 1 | 管理ID | id | unsigned bigint | | ○ | | pk | auto increment |
| 2 | グループ名 | group_name | varchar | 100 | ○ | | | |
| 3 | 無効フラグ | inactive | unsigned tinyint | | ○ | 0 | | 0: 有効, 1: 無効 |
| 4 | 登録日時 | created_at | timestamp | | ○ | システム日付 | | |
| 5 | 更新日時 | updated_at | timestamp | | ○ | システム日付 | | テーブル更新時, システム日付を適用 |
| 6 | 削除日時 | deleted_at | timestamp | | | | | 有効: null / 無効: 無効を設定した日時 |

インデックス:
| 名称 | タイプ | 対象カラム |
|---|---|---|
| pk_groups_id | primary key | id |

（インデックス欄2〜5は空欄）

---

## makers（メーカー）
役割: メーカー情報を管理する。新規追加 UI: 要, (今回の対応では)設定ファイルで代替する
備考: 新規追加 UI: 要, (今回の対応では)設定ファイルで代替する

| # | 論理カラム名 | 物理カラム名 | データ型 | サイズ | 必須 | 初期値 | キー | 備考 |
|---|---|---|---|---|---|---|---|---|
| 1 | 管理ID | id | unsigned bigint | | ○ | | pk | auto increment |
| 2 | メーカー名 | maker_name | varchar | 100 | ○ | | | |
| 3 | 無効フラグ | inactive | unsigned tinyint | | ○ | 0 | | 0: 有効, 1: 無効 |
| 4 | 登録日時 | created_at | timestamp | | ○ | システム日付 | | |
| 5 | 更新日時 | updated_at | timestamp | | ○ | システム日付 | | テーブル更新時, システム日付を適用 |
| 6 | 削除日時 | deleted_at | timestamp | | | | | 有効: null / 無効: 無効を設定した日時 |

インデックス:
| 名称 | タイプ | 対象カラム |
|---|---|---|
| pk_maker_id | primary key | id |

（インデックス名称は「pk_maker_id」で、単数形「maker」。他テーブルの「pk_<テーブル名(複数形)>_id」という命名規則と異なる点に注意。インデックス欄2〜5は空欄）

---

## devices（機器）
役割: 機器情報を管理する。新規追加 UI: 要 modelは言語で予約されていた為, テーブル名はdevicesとし, カラムではmodelを使用する.
備考: 新規追加 UI: 要 modelは言語で予約されていた為, テーブル名はdevicesとし, カラムではmodelを使用する.

| # | 論理カラム名 | 物理カラム名 | データ型 | サイズ | 必須 | 初期値 | キー | 備考 |
|---|---|---|---|---|---|---|---|---|
| 1 | 管理ID | id | unsigned bigint | | ○ | | pk | auto increment |
| 2 | メーカーID | maker_id | unsigned tinyint | | ○ | | | |
| 3 | 機種名 | model_name | varchar | 100 | ○ | | | |
| 4 | 型番 | model_number | varchar | 100 | | | | |
| 5 | 無効フラグ | inactive | unsigned tinyint | | ○ | 0 | | 0: 有効, 1: 無効 |
| 6 | 登録日時 | created_at | timestamp | | ○ | システム日付 | | |
| 7 | 更新日時 | updated_at | timestamp | | ○ | システム日付 | | テーブル更新時, システム日付を適用 |
| 8 | 削除日時 | deleted_at | timestamp | | | | | 有効: null / 無効: 無効を設定した日時 |

インデックス:
| 名称 | タイプ | 対象カラム |
|---|---|---|
| pk_mode_id | primary key | id |

（インデックス名称は定義書のまま「pk_mode_id」と記載されている（devicesやmodelではなくmode）。誤記の可能性があるがそのまま転記。maker_idはmakersテーブルへの参照と思われる列だが、データ型は「unsigned tinyint」、キー欄は空欄でfk指定なし、インデックス欄にもmaker_idの外部キー行は無い。インデックス欄2〜5は空欄）

---

## customers（顧客）
役割: 顧客情報を管理する。 UI: 要
備考: UI: 要

| # | 論理カラム名 | 物理カラム名 | データ型 | サイズ | 必須 | 初期値 | キー | 備考 |
|---|---|---|---|---|---|---|---|---|
| 1 | 管理ID | id | unsigned bigint | | ○ | | pk | auto_increment |
| 2 | グループID | group_id | unsigned bigint | | ○ | 0 | fk | 追加 |
| 3 | 顧客名 | customer_name | varchar | 400 | ○ | | | |
| 4 | 郵便番号 | zip_cd | varchar | 8 | ○ | | | |
| 5 | 都道府県 | prefecture_cd | tinyint | | ○ | | | |
| 6 | 都道府県名 | prefecture_name | varchar | 16 | ○ | | | |
| 7 | 住所1 | addr1 | varchar | 800 | ○ | | | |
| 8 | 住所2 | addr2 | varchar | 800 | | | | |
| 9 | 代表電話番号 | phone | varchar | 16 | | | | |
| 10 | 無効フラグ | inactive | unsigned tinyint | | ○ | 0 | | 0: 有効, 1: 無効 |
| 11 | 登録日時 | created_at | timestamp | | ○ | システム日付 | | |
| 12 | 更新日時 | updated_at | timestamp | | ○ | システム日付 | | |
| 13 | 削除日時 | deleted_at | timestamp | | | | | 有効: null / 無効: 無効を設定した日時 |

インデックス:
| 名称 | タイプ | 対象カラム |
|---|---|---|
| pk_customers_id | primary key | id |
| fk_customers_group_d | forigne key | group_id |

（インデックス名称「fk_customers_group_d」は定義書のまま。group_idのfk("group_d")の表記であり、他の外部キー命名（例: fk_facilities_customer_id）と異なりカラム名の末尾が省略された形になっている。誤記の可能性があるがそのまま転記。"forigne key"は原文ママ（foreignのスペルミス）。prefecture_cdはcustomersでは「tinyint」（unsignedなし）だが、facilitiesの同名カラムは「unsigned tinyint」であり型が異なる。インデックス欄3〜5は空欄）

---

## facilities（施設）
役割: 施設情報を管理する。 UI: 要
備考: UI: 要

| # | 論理カラム名 | 物理カラム名 | データ型 | サイズ | 必須 | 初期値 | キー | 備考 |
|---|---|---|---|---|---|---|---|---|
| 1 | 管理ID | id | unsigned bigint | | ○ | | pk | auto_increment |
| 2 | 顧客ID | customer_id | unsigned bigint | | ○ | | fk | |
| 3 | 店舗コード | shop_id | varchar | 20 | ○ | 0 | | PUDU Cloud で使用しているshop_idを格納する. 追加 |
| 4 | 施設名 | facility_name | varchar | 400 | ○ | | | |
| 5 | 郵便番号 | zip_cd | varchar | 8 | ○ | | | |
| 6 | 都道府県 | prefecture_cd | unsigned tinyint | | ○ | | | |
| 7 | 都道府県名 | prefecture_name | varchar | 16 | ○ | | | |
| 8 | 住所1 | addr1 | varchar | 800 | ○ | | | |
| 9 | 住所2 | addr2 | varchar | 800 | | | | |
| 10 | 連絡先電話番号 | phone | varchar | 16 | | | | |
| 11 | 連絡先メールアドレス | email | varchar | 100 | | | | |
| 12 | 責任者名 | manager_name | varchar | 100 | | | | 追加 |
| 13 | 担当者名 | charger_name | varchar | 100 | | | | カラム名変更 |
| 14 | 契約モジュール | contract | varchar | 10 | ○ | 0000000000 | | 各サービス毎にフラグとして機能する. D-Securityを1桁目, D-Watchを2桁目とし, 契約済(有効)なサービスを1とする. 例えばD-Security, D-Watchを契約している場合は次のように表現される. 例) 1100000000 |
| 15 | 無効フラグ | inactive | unsigned tinyint | | ○ | 0 | | 0: 有効, 1: 無効 |
| 16 | 登録日時 | created_at | timestamp | | ○ | システム日付 | | |
| 17 | 更新日時 | updated_at | timestamp | | ○ | システム日付 | | |
| 18 | 削除日時 | deleted_at | timestamp | | | | | 有効: null / 無効: 無効を設定した日時 |

インデックス:
| 名称 | タイプ | 対象カラム |
|---|---|---|
| pk_facilities_id | primary key | id |
| fk_facilities_customer_id | forigne key | customer_id |

（"forigne key"は原文ママ。店舗コード(shop_id)は必須○かつ初期値0の指定だが、データ型はvarchar(20)であり、初期値「0」が文字列"0"を意味するのか数値的な0を意味するのか定義書からは判断できない。読み取れず。インデックス欄3〜5は空欄）

---

## sections（エリア）
役割: エリア情報を管理する。 UI: 要
備考: UI: 要

| # | 論理カラム名 | 物理カラム名 | データ型 | サイズ | 必須 | 初期値 | キー | 備考 |
|---|---|---|---|---|---|---|---|---|
| 1 | 管理ID | id | unsigned bigint | | ○ | | pk | auto_increment |
| 2 | 施設ID | facility_id | unsigned bigint | | ○ | | fk | |
| 3 | エリア名 | section_name | varchar | 100 | ○ | | | |
| 4 | フロア名 | floor_name | varchar | 100 | | | | |
| 5 | 区画図(ファイルパス) | layout | varchar | 200 | | | | エリア図(jpeg/pngを想定)のファイルパスを格納する. 現時点では未使用. |
| 6 | 無効フラグ | inactive | unsigned tinyint | | ○ | 0 | | 0: 有効, 1: 無効 |
| 7 | 登録日時 | created_at | timestamp | | ○ | システム日付 | | |
| 8 | 更新日時 | updated_at | timestamp | | ○ | システム日付 | | |
| 9 | 削除日時 | deleted_at | timestamp | | | | | 有効: null / 無効: 無効を設定した日時 |

インデックス:
| 名称 | タイプ | 対象カラム |
|---|---|---|
| pk_sections_id | primary key | id |
| fk_sections_facility_id | forigne key | facility_id |

（"forigne key"は原文ママ。インデックス欄3〜5は空欄）

---

## controls（D-S制御盤）
役割: D-S制御盤情報を管理する。 UI: 要
備考: UI: 要

| # | 論理カラム名 | 物理カラム名 | データ型 | サイズ | 必須 | 初期値 | キー | 備考 |
|---|---|---|---|---|---|---|---|---|
| （空欄） | 管理ID | id | unsigned bigint | | ○ | | pk | auto increment |
| 1 | 製品(管理)番号 | serial_number | varchar | 100 | ○ | | | アプリケーションで一意性を確保する(deleted_atがあるため) |
| 2 | パスワード | password | varchar | 255 | ○ | | | |
| 3 | 施設ID | facility_id | unsigned bigint | | ○ | | （空欄） | |
| 4 | エリアID | section_id | unsigned bigint | | ○ | | fk | |
| 5 | 状態 | status | unsigned tinyint | | ○ | 0 | | 0: 正常, 1: 異常 (D-S制御盤の生死報告で正常/異常切替) |
| 6 | 無効フラグ | inactive | unsigned tinyint | | ○ | 0 | | 0: 有効, 1: 無効 |
| 7 | トークン記録 | remember_token | varchar | 100 | | | | トークン認証で使用 |
| 8 | 登録日時 | created_at | timestamp | | ○ | システム日付 | | |
| 9 | 更新日時 | updated_at | timestamp | | ○ | システム日付 | | テーブル更新時, システム日付を適用 |
| 10 | 削除日時 | deleted_at | timestamp | | | | | 有効: null / 無効: 無効を設定した日時 |
| 11 | 認証日時 | verified_at | timestamp | | | | | 認証日時を格納 |

インデックス:
| 名称 | タイプ | 対象カラム |
|---|---|---|
| pk_controls_id | primary key | id |
| fk_controls_facility_id | forigne key | facility_id |
| fk_controls_section_id | forigne key | section_id |

（"forigne key"は原文ママ。管理ID(id)行の#番号は定義書上でも空欄。矛盾点: facility_idはカラム定義表のキー欄では空欄（fk指定なし）だが、インデックス欄にはfk_controls_facility_idという外部キーが定義されており、両者が食い違っている。またこのテーブルの論理テーブル名セル自体は「D-S制御盤」という値の左に本来入るはずの「\[merged\] 論理テーブル名」ラベルが無く空欄になっている（他の9テーブルには「\[merged\] 論理テーブル名」ラベルがある）。インデックス欄4〜5は空欄）

---

## robots（清掃ロボット）
役割: 清掃ロボット情報を管理する。 UI; 要
備考: UI; 要（原文ママ、コロンでなくセミコロン）

| # | 論理カラム名 | 物理カラム名 | データ型 | サイズ | 必須 | 初期値 | キー | 備考 |
|---|---|---|---|---|---|---|---|---|
| 1 | 管理ID | id | unsigned bigint | | ○ | | pk | auto_increment |
| 2 | 施設ID | facility_id | unsigned bigint | | ○ | | fk | 追加 |
| 3 | エリアID | section_id | unsigned bigint | | ○ | | fk | |
| 4 | 機種ID | device_id | unsigned bigint | | ○ | 0 | fk | 追加 |
| 5 | 製品(管理)番号 | serial_number | varchar | 20 | ○ | | | |
| 6 | タスクID | task_id | varchar | 20 | | | | 削除 |
| 7 | バージョン | version | varchar | 20 | | | | 削除 |
| 8 | ロボット名 | robot_name | varchar | 100 | | | | |
| 9 | 状態 | status | smallint | | ○ | 0 | | Pudu API仕様を参照 |
| 10 | 清掃状態 | clean_status | unsigned tinyint | | ○ | 0 | | |
| 11 | 清掃率 | clean_ratio | unsigned tinyint | | ○ | 0 | | |
| 12 | バッテリー | battery | unsigned tinyint | | ○ | 100 | | |
| 13 | 無効フラグ | inactive | unsigned tinyint | | ○ | 0 | | 0: 有効, 1: 無効 |
| 14 | 登録日時 | created_at | timestamp | | ○ | システム日付 | | |
| 15 | 更新日時 | updated_at | timestamp | | ○ | システム日付 | | |
| 16 | 削除日時 | deleted_at | timestamp | | | | | 有効: null / 無効: 無効を設定した日時 |

インデックス:
| 名称 | タイプ | 対象カラム |
|---|---|---|
| pk_robots_id | primary key | id |
| fk_robots_facility_id | forigne key | facility_id |
| fk_robots_section_id | forigne key | section_id |
| fk_robots_device_id | forigne key | device_id |

（"forigne key"は原文ママ。9番「状態(status)」の型は「smallint」であり、unsignedが付いていない点が他のunsigned tinyint系フラグ列と異なる（原文ママ、読み替えず転記）。6番task_id・7番versionは備考「削除」と記載されているが、同一項目がrobot_task_versionsテーブルにtask_id/versionとして新設されている（テーブル間の役割移動と思われるが定義書に明記なし）。インデックス欄5は空欄）

---

## robot_task_versions（清掃ロボットのタスク・バージョン）
役割: 清掃ロボットに付与されたタスク・バージョン情報を管理する. UI: 要
備考: UI: 要

| # | 論理カラム名 | 物理カラム名 | データ型 | サイズ | 必須 | 初期値 | キー | 備考 |
|---|---|---|---|---|---|---|---|---|
| 1 | 管理ID | id | unsigned bigint | | ○ | | pk | auto_increment |
| 2 | ロボットID | robot_id | unsigned bigint | | ○ | | fk | |
| 3 | スケジュールID | clean_schedule_id | unsigned bigint | | ○ | | fk | |
| 4 | タスクID | task_id | varchar | 20 | | | | |
| 5 | バージョン | version | varchar | 20 | | | | |
| 6 | 無効フラグ | inactive | unsigned tinyint | | ○ | 0 | | 0: 有効, 1: 無効 |
| 7 | 登録日時 | created_at | timestamp | | ○ | システム日付 | | |
| 8 | 更新日時 | updated_at | timestamp | | ○ | システム日付 | | |
| 9 | 削除日時 | deleted_at | timestamp | | | | | 有効: null / 無効: 無効を設定した日時 |

インデックス:
| 名称 | タイプ | 対象カラム |
|---|---|---|
| pk_robot_task_version_id | primary key | id |
| fk_robots_task_version_robot_id | forigne key | robot_id |
| fk_robots_task_version_clean_schedule_id | forigne key | clean_schedule_id |

（"forigne key"は原文ママ。clean_schedule_idの参照先と思われるclean_schedulesテーブルは今回の担当10テーブルの範囲外（定義書後方に別途記載あり）。インデックス欄4〜5は空欄）

---

## section_robot_statuses（エリア毎の清掃ロボットの状態）
役割: エリア毎の清掃ロボットの状態(エリアに紐づくロボット全て)を管理する。 ※当初D-S制御盤-清掃ロボットの関係でシステムが構築されていた為, 物理名をcontrol_robot_statusesとしていた. テーブル名変更 UI: 不要
備考: ※当初D-S制御盤-清掃ロボットの関係でシステムが構築されていた為, 物理名をcontrol_robot_statusesとしていた. テーブル名変更 UI: 不要

| # | 論理カラム名 | 物理カラム名 | データ型 | サイズ | 必須 | 初期値 | キー | 備考 |
|---|---|---|---|---|---|---|---|---|
| 1 | 管理ID | id | unsigned bigint | | ○ | | pk | auto_increment |
| 2 | 施設ID | facility_id | unsigned bigint | | ○ | | fk | |
| 3 | エリアID | section_id | unsigned bigint | | ○ | | fk | |
| 4 | ロボット状態 | robot_status | smallint | | ○ | 0 | | 配下のrobots.statusからルールに則り値を格納する. 現時点では未確定. |
| 5 | 実施日(状態変更日) | indicatived_at | timestamp | | | | | 状態(status)が変更された日時 |
| 5 | 清掃状態 | clean_status | unsigned tinyint | | ○ | 0 | | |
| 6 | 清掃率 | clean_ratio | unsigned tinyint | | ○ | 0 | | 清掃完了率を100分率で表す |
| 7 | 登録日時 | created_at | timestamp | | ○ | システム日付 | | |
| 8 | 更新日時 | updated_at | timestamp | | ○ | システム日付 | | |
| 9 | 削除日時 | deleted_at | timestamp | | | | | 有効: null / 無効: 無効を設定した日時 |

インデックス:
| 名称 | タイプ | 対象カラム |
|---|---|---|
| pk_section_robot_statuses_id | primary key | id |
| fk_section_robot_statuses_facility_id | forigne key | facility_id |
| fk_section_robot_statuses_section_id | forigne key | section_id |

（"forigne key"は原文ママ。矛盾点: #番号「5」が「実施日(状態変更日) indicatived_at」と「清掃状態 clean_status」の2行に重複して振られている（定義書のまま。以降の6, 7, 8, 9は「清掃状態」の次から続いており、番号がひとつずれた状態になっている可能性がある）。「実施日(状態変更日)」の物理カラム名は「indicatived_at」と記載されており、一般的な英語表現(indicated_at)と異なる綴りだが原文ママ転記。ロボット状態(robot_status)の備考に「現時点では未確定」と明記されており、算出ルールが未確定である旨の注記あり。インデックス欄4〜5は空欄）
