作成: 2026-10-02 / 作成者: DFA Robotics
第10回へのご回答、ありがとうございました。いただいた内容をもとに実装を進めております。 本書は、その中で生じた確認事項とお願いをまとめたものです。以前の確認事項を開かなくても、本書だけでご回答いただけます。 各設問には選択肢(A / B / C …)を付けておりますので、記号だけでご回答いただければ結構です(補足が必要なものは設問の中に書いております)。 これまでの設問のうち、本書に載っていないものはご回答不要です。
特にお急ぎいただきたいのは 1章(完了率) と 3章(制御盤・セキュリティのエラー) です。
clean_task_reports.clean_ratio は、どの値になりますでしょうかclean_ratio 列は「計算式が誤っているので、訂正後に回答する」と伺いました。 サマリの完了率は、清掃1回ごとに「clean_area ÷ task_area × 100(100を超えたら100、小数第2位以下切り捨て)」を求め、その平均を取ると伺っております。当方の当期(進行中の週・月)の集計も、いまはこの式で計算しております。
| 選択肢 | 内容 |
|---|---|
| A | 訂正後の clean_ratio は、上の1回ごとの式の値と一致する(サマリと同じ値) |
| B | 別の式になる(式をお教えください) |
| C | Pudu Cloud の値をそのまま入れる |
あわせて、訂正の時期の目安と、すでに入っている行も直すかをお教えください。
clean_area は同じ場所を複数回清掃した面積の総和と伺いました。そのため面積の比は100を超えることがあり、上限の100で切られます。 受領したCSV(189行)では 129行(68.3%)が100% になり、対象面積のうち実際に清掃できた割合より高く出ているおそれがございます。 当方は当面、サマリと数字をそろえるために貴社の式に合わせておりますが、将来の方針を伺えますでしょうか。
| 選択肢 | 内容 |
|---|---|
| A | 今の式(1回ごとの面積の比・上限100)のままとする |
| B | 訂正後の clean_ratio が「対象面積のうち清掃できた割合」を表すなら、サマリの完了率をそちらに切り替える |
| C | その他(ご見解をお教えください) |
B の場合は、サマリと当期の式がずれないよう、当方も同じ時期に切り替えます。
CSV の status = 4(清掃正常終了)161行のうち 22行が clean_area = 0 / clean_ratio = 0 / clean_time = 0 でした。うち20行は ended_at が 01:00:00 ちょうど です。ステージングの1行(task_area = 1377.39502)も同じ形です。
| 選択肢 | 内容 |
|---|---|
| A | 実際に清掃せずに終わった(完了率0%として扱ってよい) |
| B | 面積・時間がまだ書かれていない(後で更新される) |
| C | Pudu Cloud から値を取得できなかった(値を当てにしない) |
| D | その他 |
当方はいま A として扱い、完了率0%(判定 ×)を表示しております。
clean_task_reports.status = 6 は何を表しますでしょうか0〜5 の意味は伺いましたが、CSV に status = 6 が22行 ございました。 うち20行は日中に開始から数秒〜数分で終わり、clean_area = 0 です(残り2行は clean_ratio = 100)。
| 選択肢 | 内容 |
|---|---|
| A | Pudu Cloud の値をそのまま入れている(Pudu 側の項目名・意味をお教えください) |
| B | 貴社で付けている値(意味をお教えください) |
0〜6 以外に入りうる値があれば、あわせてお教えください。当方はいま、6 を数字のまま表示しております。
task_area = 0 の行は、サマリでどう扱われますでしょうかCSV・ステージングには該当する行がございませんが、1回ごとの式で割り算ができなくなるため伺います。
| 選択肢 | 内容 |
|---|---|
| A | 集計から除く(完了率の分子にも分母にも入れない) |
| B | 0% として数える |
| C | 100% として数える |
| D | task_area = 0 の行は入らない |
当方はいま A として扱っております。
launch_count は「清掃タスクを開始できた回数(正常終了の回数ではない)」と伺いました。task_count は本清掃の予定の回数と理解しております。
| 列 | A | B | C |
|---|---|---|---|
operation_ratio(稼働率) |
正常終了(status = 4)の回数 ÷ task_count |
clean_task_reports の行がある回数 ÷ task_count |
その他 |
launch_ratio(出発成功率) |
launch_count ÷ task_count(開始時刻の条件なし) |
予定時刻から一定時間内に開始したものだけを数える(何分以内か) | その他 |
error_ratio(エラー発生率) |
error_count ÷ launch_count |
error_count ÷ task_count |
その他 |
ご回答は「A / B / A」のように、上から順に3つの記号で結構です。
clean_timetable_histories も読む必要がございますでしょうかサマリの集計対象は「clean_timetables もしくは clean_timetable_histories の precheck が0のデータ」と伺いました。当方はいま clean_timetables だけを読んでおります。
| 選択肢 | 内容 |
|---|---|
| A | clean_timetables だけで足りる(同じ予定は必ず clean_timetables にもある) |
| B | 予定が clean_timetable_histories にだけ残る場合がある(どんなときかをお教えください) |
| C | その他 |
B の場合は、clean_task_reports.clean_timetable_id がどちらの表の id を指すかもお教えください。
robot_error_reports をエラー全般の表にし、robot_id と serial_number を NULL 可にする(両方 NULL=セキュリティエラー、robot_id だけ NULL=D-S制御盤エラー)と伺いました。 ご回答の記号は「A(制御盤が属するエリアのロボットの robot_id を入れる)」でしたが、本文は DDL を変更する内容でしたので、確認させてください。
| # | お伺いしたいこと | 選択肢 |
|---|---|---|
| a | 入れ方 | A. robot_id を NULL 可にする(本文のとおり)/ B. エリアのロボットの robot_id を入れる(記号のとおり) |
| b | DDL の変更をステージングに反映する時期 | 目安をお教えください |
| c | D-S制御盤エラーの行の serial_number |
A. 制御盤の controls.serial_number を入れる / B. その他。※ controls.serial_number は varchar(100)、robot_error_reports.serial_number は varchar(20) です。入りきるか(列を広げるご予定か)もお教えください |
| d | セキュリティエラー(robot_id・serial_number とも NULL)が、どの施設・どの制御盤のものかの見分け方 |
A. facility_id・section_id で見分ける(制御盤はエリアから引く)/ B. 列を足す / C. その他 |
error_count に入りますでしょうか「clean_timetable_id が NULL のエラー行は error_count に含まない」「制御盤のエラーは error_count に含む」と伺いました。 制御盤・セキュリティのエラー行の clean_timetable_id が NULL ですと、この2つが両立いたしません。
| 選択肢 | 内容 |
|---|---|
| A | 制御盤・セキュリティのエラー行にも clean_timetable_id を入れる(本清掃・事前確認のどちらの予定の id かもお教えください) |
| B | 制御盤・セキュリティのエラーは、clean_timetable_id が NULL でも数える |
| C | 制御盤・セキュリティのエラーは数えない |
control_error_histories と robot_error_reports のどちらを正とすればよいでしょうかcontrol_error_histories は今後も書くと伺いました。同じ制御盤のエラーが robot_error_reports にも入りますと、画面に二重に出たり、対応状況(status / comment / responded_at / resolved_at)の更新先が2つになったりいたします。
| 選択肢 | 内容 |
|---|---|
| A | robot_error_reports を正とする(D-Security のアラートも対応状況の更新もこちら。control_error_histories は読まない) |
| B | control_error_histories を正とする(制御盤・セキュリティの行は robot_error_reports からは読まない) |
| C | 両方を使う(使い分けをお教えください) |
あわせて、同じ1件のエラーが両方の表に1行ずつ入るのかをお教えください。
ステージングは、既定のタイムゾーンを Asia/Tokyo(@@system_time_zone = JST)に直し、時刻の列に JST の値を書いていると伺いました。
| 選択肢 | 内容 |
|---|---|
| A | 本番DBも同じ |
| B | 違う(どう違うかをお教えください) |
| C | 未定 |
ずれていたのは control_reports.reported_at と robot_error_reports.created_at(いずれも UTC で書かれていた)と理解しております。 当方はアプリ側で時刻を補正しておりませんので、UTC のまま残る行があるかを確認させてください。
| 選択肢 | 内容 |
|---|---|
| A | 全テーブルの既存の行を JST に直した |
| B | 一部のテーブルだけ直した(どのテーブルかをお教えください) |
| C | これから書く行だけ JST になる(既存の行はそのまま) |
robot_error_reports / control_error_histories の4カラム(status / comment / responded_at / resolved_at)を画面から更新する機能を作っております。4カラム以外には書き込みません。 当方が接続に使っているアカウントで SHOW GRANTS を実行したところ、2テーブルの UPDATE 権限も表示されました。更新では WHERE error_id = ? で行を指定しますので、その列の SELECT 権限も必要になります。
| 選択肢 | 内容 |
|---|---|
| A | 今のアカウント(全テーブルの SELECT + 2テーブルの UPDATE)で更新してよい |
| B | 更新は別のアカウントで行ってほしい(そのアカウントに error_id、control_error_histories は id の SELECT 権限があるかもお教えください) |
ステージングはデータの入れ替えがありうると伺いました。当方はステージングで上記4カラムの更新を検証いたします。 データの入れ替え、接続先・アカウントの変更の際は、前日までにお知らせいただけますと助かります。 その間は検証を控えます。 あわせて、10/5 中に投入いただく予定の0行のテーブル(clean_schedules / clean_timetables など)も、投入が終わりましたら一言いただけますと幸いです。
ご回答: 承知 / 難しい
customers は、屋号と法人のどちらの単位になりますでしょうか画面には「グループ → 顧客 → 店舗」の絞り込みがございます。customers はいま法人名(株式会社ドン・キホーテ)で入っており、当方はこの単位のまま表示しております。
| 選択肢 | 内容 |
|---|---|
| A | 屋号の単位に変える(ドン・キホーテ / MEGAドン・キホーテ / アピタ / ピアゴ …) |
| B | 法人の単位で確定 |
| C | 未定(結論の時期の目安をお教えください) |
A の場合は、屋号を持たない店舗が customers にどう入るか(customer_name に何を入れるか)もお教えください。
「1回の清掃の中の区域別(売り場・通路・レジ前など)の内訳」について「できる。sections 単位」とご回答いただきました。 当方は「清掃エリア(sections の1行)=ロボット1台」とし、すでに清掃エリアごとの完了率を出しております。
| 選択肢 | 内容 |
|---|---|
| A | sections 単位の結果(=今の清掃エリアごとの結果)のこと。それより細かい内訳は無い |
| B | 1つの清掃エリアの中の、さらに細かい内訳が取れる(テーブル名・列名をお教えください) |
報告間隔は「0〜3599(秒)で、制御盤ごとに変える」と伺いました。テーブル定義書の link_schedules.intervals は「1〜3599」です。通信が途絶えたかどうかの判断に関わるため伺います。
| 選択肢 | 内容 |
|---|---|
| A | 0 は「その時間帯は報告しない」 |
| B | 0 は入らない(1〜3599 が正しい) |
| C | その他 |
以上です。ご確認のほど、よろしくお願いいたします。