Newer
Older
client_dwatch / docs / handoff / analysis / table-definitions-03-schedule-summary.md

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

※本ファイルは TeamWorks 提供のテーブル定義書(Markdown表)からの転記です。定義書に書かれていない内容の補完・推測は行っていません。読み取れない箇所は「読み取れず」と明記しています。 ※定義書では「役割」欄が UI要否・新規作成有無の注記を含んだ1本の文として複数セルに(結合セルの都合で)重複表示されています。以下では、その全文をそのまま「役割:」に記載し、「備考:」にはその中の UI要否/新規作成に関する注記部分を抜き出して重複記載しています(定義書上で別欄として分離されているわけではありません)。


clean_timetables(清掃タイムテーブル)

役割: 区画毎の清掃日時を管理する 新規作成 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 clean_schedule_id unsigned bigint ○ fk
5 親(本清掃)ID parent_id unsigned bigint ○ 0 親(本清掃)は0を設定, 親以外は親の管理IDを格納する.
6 清掃開始日時(予定) start_at datetime ○ idx 曜日, 開始時間から直近の清掃開始日時を生成し格納する
7 清掃終了日時(予定) end_at datetime ○ idx 曜日, 開始時間から直近の清掃終了日時を生成し格納する
8 事前確認 precheck unsigned tinyint ○ 9 0: 本清掃, 1; 1回目, 2: 2回目 ...
9 無効フラグ inactive unsigned tinyint ○ 0 0: 有効, 1: 無効
10 登録日時 created_at timestamp ○ システム日付
11 更新日時 updated_at timestamp ○ システム日付

インデックス: | 名称 | タイプ | 対象カラム | |---|---|---| | pk_clean_timetables_id | primary key | id | | fk_clean_timetables_facility_id | foreign key | facility_id | | fk_clean_timetables_section_id | foreign key | secction_id | | fk_clean_timetables_schedule_id | foreign key | clean_schedule_id | | idx_clean_timetables_start_at | index | start_at | | idx_clean_timetables_end_at | index | end_at | | idx_clean_timetables_parent_id | index | parent_id |

※原文注記: インデックス「fk_clean_timetables_section_id」の対象カラムは定義書原文で secction_id と綴られている(タイプミスの可能性。カラム一覧側は section_id)。原文ママ転記。


clean_timetable_histories(清掃タイムテーブル履歴)

役割: 清掃日時履歴を管理する 新規作成 UI: 不要 備考: 新規作成 / UI: 不要

# 論理カラム名 物理カラム名 データ型 サイズ 必須 初期値 キー 備考
1 管理ID id unsigned bigint ○ uk
2 施設ID facility_id unsigned bigint ○ fk
3 エリアID section_id unsigned bigint ○ fk
4 スケジュールID clean_schedule_id unsigned bigint ○ fk
5 親(本清掃)ID parent_id unsigned bigint ○ idx
6 清掃開始日時 start_at datetime ○ idx 曜日, 開始時間から直近の清掃開始日時を生成し格納する
7 清掃終了日時 end_at datetime ○ idx 曜日, 開始時間から直近の清掃終了日時を生成し格納する
8 事前確認 precheck unsigned tinyint ○ 0 0: 未設定, 1; 1回目, 2: 2回目 ... 9: 本清掃
9 無効フラグ inactive unsigned tinyint ○ 0 0: 有効, 1: 無効
10 登録日時 created_at timestamp ○ システム日付

※原文には11番目の「更新日時 updated_at」列は存在しない(clean_timetablesと異なり10番の created_at で終わっている)。原文ママ。

インデックス: | 名称 | タイプ | 対象カラム | |---|---|---| | uk_clean_timetable_histories_id | primary key | id | | fk_clean_timetable_histories_facility_id | foreign key | facility_id | | fk_clean_timetable_histories_section_id | foreign key | section_id | | idx_clean_timetable_histories_started_at | index | started_at | | idx_clean_timetable_histories_ended_at | index | ended_at | | idx_clean_timetable_histories_parent_id | index | parent_id |

※原文注記1: 1件目のインデックス名は uk_...(unique key風の命名)だが、タイプ欄は「primary key」と記載されている。原文ママ。 ※原文注記2: インデックス名 idx_clean_timetable_histories_started_at / ..._ended_at の対象カラムはそれぞれ started_at / ended_at と記載されているが、カラム一覧側の実際の物理カラム名は start_at / end_at であり綴りが一致しない。原文ママ転記。


役割: D-S制御盤 ⇔ 制御サーバ, 制御サーバ ⇔ PuduCloud間の通信間隔を管理する UI: 要 備考: UI: 要

# 論理カラム名 物理カラム名 データ型 サイズ 必須 初期値 キー 備考
1 管理ID id unsigned bigint ○ pk
2 エリアID section_id unsigned bigint ○ fk
3 通信種類 type unsigned tinyint ○ 1 1: D-S制御盤 ⇔ 制御サーバ, 2: 制御サーバ ⇔ Pudu Cloud
4 曜日 weeks varchar 7 ○ 通信を行う曜日を1, 行わない曜日を0とする。日月火水木金土で設定する。 例) 日火木土に清掃を行う場合 1010101
5 報告間隔 intervals varchar 120 ○ 報告間隔を秒で指定(設定)する。1~3599で時間毎に設定する。先頭は0時、最後尾は23時を表す。時間の区切りは,(カンマ)とする。 例) 毎時1分毎に報告する場合 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60
6 無効フラグ inactive unsigned tinyint ○ 0 0: 有効, 1: 無効
7 登録日時 created_at timestamp ○ システム日付
8 更新日時 updated_at timestamp ○ システム日付
9 削除日時 deleted_at timestamp

インデックス: | 名称 | タイプ | 対象カラム | |---|---|---| | pk_link_schedules_id | primary key | id | | fk_link_schedules_control_id | foreign key | control_id | | (3) | (記載なし) | (記載なし) | | (4) | (記載なし) | (記載なし) | | (5) | (記載なし) | (記載なし) |

※原文注記: インデックス2件目 fk_link_schedules_control_id の対象カラムは control_id とされているが、本テーブルのカラム一覧に control_id は存在しない(存在するのは section_id)。原文ママ転記。インデックス3〜5行は原文でも空欄。


customer_summaries(顧客サマリ)

役割: 顧客毎のサマリ情報を格納する 新規作成 UI: 不要 備考: 新規作成 / UI: 不要

# 論理カラム名 物理カラム名 データ型 サイズ 必須 初期値 キー 備考
1 管理ID id unsigned bigint ○ pk auto increment
2 顧客ID customer_id unsigned bigint ○ fk
3 年 year unsigned smallint ○ idx
4 月 month unsigned tinyint ○ idx 0は年の集計値を表す.
5 週 week unsigned tinyint ○ idx 第1週 1, 第2週 2, 第3週 3, 第4週 4, 第5週 5 0は月の集計値を表す
6 清掃タスク数 task_count unsigned smallint ○
7 出発成功数 launch_count unsigned smallint ○
8 エラー数 error_count unsigned smallint ○
9 総清掃対象面積 task_area unsigned decimal (14, 6) ○
10 総清掃実施面積 clean_area unsigned decimal (14, 6) ○
11 稼働率 operation_ratio unsigned tinyint ○ 補足を参照.
12 出発成功率 launch_ratio unsigned tinyint ○ 補足を参照.
13 清掃完了率 clean_ratio unsigned tinyint ○ 補足を参照.
14 エラー発生率 error_ratio unsigned tinyint ○ 補足を参照.
15 登録日時 created_at timestamp ○ システム日付
16 更新日時 updated_at timestamp ○ システム日付

インデックス: | 名称 | タイプ | 対象カラム | |---|---|---| | pk_customer_summaries_id | primary key | id | | fk_customer_summaries_customer_id | foreign key | customer_id | | idx_customer_summaries_year | index | year | | idx_customer_summaries_month | index | month | | idx_customer_summaries_week | index | week |


facility_summaries(店舗(施設)サマリ)

役割: 店舗(施設)毎のサマリ情報を格納する 新規作成 UI: 不要 備考: 新規作成 / UI: 不要

# 論理カラム名 物理カラム名 データ型 サイズ 必須 初期値 キー 備考
1 管理ID id unsigned bigint ○ pk auto increment
2 施設ID facility_id unsigned bigint ○ fk
3 年 year unsigned smallint ○ idx
4 月 month unsigned tinyint ○ idx 0は年の集計値を表す.
5 週 week unsigned tinyint ○ idx 第1週 1, 第2週 2, 第3週 3, 第4週 4, 第5週 5 0は月の集計値を表す
6 清掃タスク数 task_count unsigned smallint ○
7 出発成功数 launch_count unsigned smallint ○
8 エラー数 error_count unsigned smallint ○
9 総清掃対象面積 task_area unsigned decimal (14, 6) ○
10 総清掃実施面積 clean_area unsigned decimal (14, 6) ○
11 稼働率 operation_ratio unsigned tinyint ○ 店舗サマリの補足を参照.
12 出発成功率 launch_ratio unsigned tinyint ○ 店舗サマリの補足を参照.
13 清掃完了率 clean_ratio unsigned tinyint ○ 店舗サマリの補足を参照.
14 エラー発生率 error_ratio unsigned tinyint ○ 店舗サマリの補足を参照.
15 登録日時 created_at timestamp ○ システム日付
16 更新日時 updated_at timestamp ○ システム日付

インデックス: | 名称 | タイプ | 対象カラム | |---|---|---| | pk_facility_summaries_id | primary key | id | | fk_facility_summaries_facility_id | foreign key | facility_id | | idx_facility_summaries_year | index | year | | idx_facility_summaries_month | index | month | | idx_facility_summaries_week | index | week |

※customer_summaries と facility_summaries はカラム構成上の差分なし(id部分が customer_id / facility_id に置き換わる以外は同一)。ratio系4カラムの備考は customer_summaries 側「補足を参照.」、facility_summaries 側「店舗サマリの補足を参照.」と文言が異なる(原文ママ)。いずれも参照先の「補足」本文は本抜粋範囲に含まれておらず、比率の計算式(分子/分母の組み合わせ)そのものは読み取れず。


customer_error_summaries(顧客障害サマリ)

役割: 顧客毎の障害サマリ情報を格納する 新規作成 UI: 不要 備考: 新規作成 / UI: 不要

# 論理カラム名 物理カラム名 データ型 サイズ 必須 初期値 キー 備考
1 管理ID id unsigned bigint ○ pk auto increment
2 顧客ID customer_id unsigned bigint ○ fk
3 年 year unsigned smallint ○ idx
4 月 month unsigned tinyint ○ idx 0は年の集計値を表す.
5 週 week unsigned tinyint ○ idx 第1週 1, 第2週 2, 第3週 3, 第4週 4, 第5週 5 0は月の集計値を表す
6 障害レベル error_level varchar 20 ○
7 障害種別 error_type varchar 100 ○
8 障害詳細 error_detail text ○
9 エラー数 error_count unsigned smallint ○
10 登録日時 created_at timestamp ○ システム日付

※原文には「更新日時 updated_at」列は存在しない(10番の created_at で終わっている)。原文ママ。

インデックス: | 名称 | タイプ | 対象カラム | |---|---|---| | pk_customer_error_summaries_id | primary key | id | | fk_customer_error_summaries_customer_id | foreign key | customer_id | | idx_customer_error_summaries_year | index | year | | idx_customer_error_summaries_month | index | month | | idx_customer_error_summaries_week | index | week |


facility_error_summaries(店舗障害サマリ)

役割: 店舗毎の障害サマリ情報を格納する 新規作成 UI: 不要 備考: 新規作成 / UI: 不要

# 論理カラム名 物理カラム名 データ型 サイズ 必須 初期値 キー 備考
1 管理ID id unsigned bigint ○ pk auto increment
2 施設ID facility_id unsigned bigint ○ fk
3 年 year unsigned smallint ○ idx
4 月 month unsigned tinyint ○ idx 0は年の集計値を表す.
5 週 week unsigned tinyint ○ idx 第1週 1, 第2週 2, 第3週 3, 第4週 4, 第5週 5 0は月の集計値を表す
6 障害レベル error_level varchar 20 ○
7 障害種別 error_type varchar 100 ○
8 障害詳細 error_detail text ○
9 エラー数 error_count unsigned smallint ○
10 登録日時 created_at timestamp ○ システム日付

※原文には「更新日時 updated_at」列は存在しない(10番の created_at で終わっている)。原文ママ。

インデックス: | 名称 | タイプ | 対象カラム | |---|---|---| | pk_facility_error_summaries_id | primary key | id | | fk_facility_error_summaries_facility_id | foreign key | facility_id | | idx_facility_error_summaries_year | index | year | | idx_facility_error_summaries_month | index | month | | idx_facility_error_summaries_week | index | week |

※customer_error_summaries と facility_error_summaries はカラム構成上の差分なし(id部分が customer_id / facility_id に置き換わる以外は同一)。 ※重要: 両テーブルとも「エラー種別ごとの件数カラム」を個別カラムとして持つ設計ではなく、1行=1障害種別のレコードとして error_level(varchar20)・error_type(varchar100)・error_detail(text)・error_count(unsigned smallint)という汎用カラム構成になっている。error_type の具体的な値一覧(列挙)は定義書のこの範囲には記載されておらず、ハンドルアップ・LostLocation・オフライン・ブラシエラー・緊急停止・充電不足・その他の7分類に対応するかどうかは読み取れず。


customer_contacts(顧客毎連絡(通知)方法)

役割: 異常等の通知方法情報を格納する. 新規作成 UI: 要 備考: 新規作成 / UI: 要

# 論理カラム名 物理カラム名 データ型 サイズ 必須 初期値 キー 備考
1 管理ID id unsigned bigint ○ pk auto increment
2 顧客ID customer_id unsigned bigint ○ fk
3 連絡(通知)方法 contact_type unsigned bigint ○ 0: 未設定, 1: Slack, 2: メール, 3: Teams
4 URL url varchar 200 Slack/TeamsのWebHoolURLを想定
5 メールアドレス email varchar 100 送信先メールアドレスを想定
6 無効フラグ inactive unsigned tinyint ○ 0 0: 有効, 1: 無効
7 登録日時 created_at timestamp ○ システム日付
8 更新日時 updated_at timestamp ○ システム日付
9 削除日時 deleted_at timestamp

インデックス: | 名称 | タイプ | 対象カラム | |---|---|---| | pk_customer_contacts_id | primary key | id | | fk_customer_contacts_customer_id | foreign key | customer_id | | (3) | (記載なし) | (記載なし) | | (4) | (記載なし) | (記載なし) | | (5) | (記載なし) | (記載なし) |

※原文注記: 4番カラムの備考は原文でも「Slack/TeamsのWebHoolURLを想定」と記載されている(WebHookのタイプミスと思われるが原文ママ転記)。


facility_contacts(施設毎連絡(通知)方法)

役割: 異常等の通知方法情報を格納する. 新規作成 UI: 要 備考: 新規作成 / UI: 要

# 論理カラム名 物理カラム名 データ型 サイズ 必須 初期値 キー 備考
1 管理ID id unsigned bigint ○ pk auto increment
2 施設ID facility_id unsigned bigint ○ fk
3 連絡(通知)方法 contact_type unsigned tinyint ○ 0: 未設定, 1: Slack, 2: メール, 3: Teams
4 URL url varchar 200 Slack/TeamsのWebHoolURLを想定
5 メールアドレス email varchar 255 送信先メールアドレスを想定
6 無効フラグ inactive unsigned tinyint ○ 0 0: 有効, 1: 無効
7 登録日時 created_at timestamp ○ システム日付
8 更新日時 updated_at timestamp ○ システム日付
9 削除日時 deleted_at timestamp

インデックス: | 名称 | タイプ | 対象カラム | |---|---|---| | pk_facility_contacts_id | primary key | id | | fk_facility_contacts_facility_id | foreign key | facility_id | | (3) | (記載なし) | (記載なし) | | (4) | (記載なし) | (記載なし) | | (5) | (記載なし) | (記載なし) |

※customer_contacts と facility_contacts の差分:

  • contact_type のデータ型が customer_contacts は unsigned bigint、facility_contacts は unsigned tinyint と異なる(いずれも値は 0〜3 の列挙で、原文のまま。データ型不一致は原文の記載差)。
  • email のサイズが customer_contacts は 100、facility_contacts は 255 と異なる(原文ママ)。

転記者からの報告

1. 9テーブルすべての転記完了状況

21〜29番の9テーブル(clean_timetables, clean_timetable_histories, link_schedules, customer_summaries, facility_summaries, customer_error_summaries, facility_error_summaries, customer_contacts, facility_contacts)すべてについて、カラム一覧・インデックス一覧を転記済み。

2. 読み取れなかった箇所

  • 型・サイズ欄自体は全カラムで判読できた(空欄のものは定義書側も空欄)。「読み取れず」に該当する箇所はデータ型・サイズそのものではなく、以下の「3」「4」「5」に記載した計算式・列挙値の欠落箇所。

3. サマリ系4テーブルのKPI4指標(稼働率・出発成功率・清掃完了率・エラー発生率)の分子・分母

  • customer_summaries / facility_summaries には、稼働率(operation_ratio)・出発成功率(launch_ratio)・清掃完了率(clean_ratio)・エラー発生率(error_ratio)の4カラムが計算済みの結果値としてそのまま存在する。
  • これらの分子・分母となりうる生データ系カラムとして task_count(清掃タスク数)・launch_count(出発成功数)・error_count(エラー数)・task_area(総清掃対象面積)・clean_area(総清掃実施面積)の5つが存在する。
  • ただし各比率カラムの備考は「補足を参照.」(facility_summariesは「店舗サマリの補足を参照.」)とあるのみで、どの生カラムの組み合わせ(分子/分母)で各比率を算出しているかの計算式そのものは、今回渡された抜粋範囲には記載されておらず読み取れず。したがって「稼働率の分母に使うべきカラムが task_count なのか、それとも予定清掃回数を表す別カラムなのか」等は本抜粋だけでは特定不可。
  • 4指標すべてについて、少なくとも結果値カラムは4つとも揃っている。分子分母の生カラムも(推測は避けるが)候補は上記5カラムに限られる。

4. エラー種別ごとの件数カラム

  • customer_error_summaries / facility_error_summaries には、エラー種別ごとに個別の件数カラムを用意する設計は存在しない。
  • 代わりに error_level(障害レベル, varchar20)・error_type(障害種別, varchar100)・error_detail(障害詳細, text)・error_count(エラー数, unsigned smallint)という汎用4カラムで、1行=1エラー種別×期間の集計行を表す設計になっている。
  • error_type に入る具体的な値の列挙(例: ハンドルアップ/LostLocation/オフライン/ブラシエラー/緊急停止/充電不足/その他)は本抜粋には記載がなく、7分類と一致するかどうかは読み取れず。
  • 参考: customer_contacts / facility_contacts の contact_type は 0〜3(未設定/Slack/メール/Teams)と定義書に明記されているのと対照的に、error_type 側には列挙値の記載がない。

5. 集計期間の単位(週次・月次の区別)

  • customer_summaries, facility_summaries, customer_error_summaries, facility_error_summaries の4テーブルすべてで、year(unsigned smallint)・month(unsigned tinyint)・week(unsigned tinyint)の3カラムで期間を表現している。
  • 備考の記載: month は「0は年の集計値を表す.」、week は「第1週 1, 第2週 2, 第3週 3, 第4週 4, 第5週 5 0は月の集計値を表す」。
    • すなわち month=0 で「年間集計行」、week=0 で「(その年月の)月間集計行」、week=1〜5で「週次集計行」を表す設計と読み取れる(year/month/weekの3カラムを併用し、粒度をweek=0/monthの値で切り替える方式)。
  • 週次・月次・年次を区別する専用のenum/typeカラムは存在せず、year/month/weekの値の組み合わせ(0の有無)のみで粒度を判別する設計。

6. 定義書の記述で矛盾・不明瞭に見えた箇所(修正せず報告)

  • precheck(事前確認)カラムの初期値とコード値の対応がテーブル間で逆転しているように見える:
    • clean_timetables: 初期値 9、備考「0: 本清掃, 1; 1回目, 2: 2回目 ...」(0が本清掃の意味に読める)
    • clean_timetable_histories: 初期値 0、備考「0: 未設定, 1; 1回目, 2: 2回目 ... 9: 本清掃」(0は未設定、9が本清掃の意味)
    • 両者で「0」と「9」が意味する内容(本清掃を表すコード)が逆になっているように見える。原文ママ。
  • clean_timetables のインデックス3件目 fk_clean_timetables_section_id の対象カラムが secction_id と綴られている(カラム一覧側は section_id)。
  • clean_timetable_histories のインデックス1件目の名称が uk_clean_timetable_histories_id (uk=unique key風)なのにタイプ欄は「primary key」と記載。
  • clean_timetable_histories のインデックス4・5件目の対象カラムが started_at / ended_at と記載されているが、実際のカラム一覧では start_at / end_at(startedではなくstart)であり綴りが一致しない。
  • clean_timetable_histories には updated_at カラムが存在しない(clean_timetablesにはある)。履歴テーブルゆえ意図的と思われるが、定義書上に明記の理由記載はなし。
  • link_schedules のインデックス2件目 fk_link_schedules_control_id の対象カラムが control_id とされているが、本テーブルのカラム一覧に control_id は存在しない(存在するのは section_id のみ)。インデックス3〜5行は空欄。
  • customer_error_summaries / facility_error_summaries には updated_at カラムが存在しない(created_at のみ)。
  • customer_contacts の contact_type は unsigned bigint、facility_contacts の contact_type は unsigned tinyint と、同じ用途(0〜3の列挙値)にもかかわらずデータ型が異なる。
  • customer_contacts の email サイズは varchar(100)、facility_contacts の email サイズは varchar(255) と異なる。
  • customer_contacts / facility_contacts の url 備考「Slack/TeamsのWebHoolURLを想定」は、原文ですでに "WebHool" という綴り(WebHookのタイプミスと推測されるが未修正で転記)。
  • customer_summaries / facility_summaries の比率4カラムの備考が、customer_summaries側は「補足を参照.」、facility_summaries側は「店舗サマリの補足を参照.」と表現が異なる。いずれにせよ参照先の「補足」本文は本抜粋範囲外で内容不明。

7. 出力ファイルの行数

このファイル(03-schedule-summary.md)は338行(セクション見出し・表・報告部分を含む全体、wc -l による実測値)。