ドライバー業務(PWA)¶
ドライバー業務(Web PWA)¶
- 対象ロール:
driver(専任ドライバー)が主。加えて「運転も担当する事務」=can_drive=trueのnormal/adminも同じ/driver系ページに入れる(RoleGuard allowDriverCapableがcanActAsDriver(role, canDrive)で両者を通す)。 - 前提:
- ドライバーの
profile(メンバー)が collector テナントに登録され、ログインを発行済みであること。ドライバー自身の profile id は「userId が一致するメンバー」から解決されるため、メンバー未登録だと本日ルート・実績・運行ログが空になる。 - 「工場の配車」ボード・「運行ログ登録」は、そのドライバーに所属工場(factoryIds)が設定済みであること。未設定だと専用の空状態が出て操作できない。
- 本日ルートは事務側が配車(/collector/dispatch)で dispatch_stops を作成済みであること。作成されていなければ「本日の配車はありません」。
- 「運行ログ登録」は自工場に車両(/collector/fleet/vehicles)が登録済みであること。0 台だと入力フォームが出ない。
- 「本日のルート」から自分で目方入力(回収先ごとの見積重量)を Web で行える(下記「本日の目方入力」節)。閲覧専用なのは「計量実績」「履歴」のみ。
ナビ表記(driver role の下部タブ/サイドナビ・DRIVER_NAV)は「本日」(/driver)・「運行ログ」(/driver/daily-log)・「履歴」(/driver/history)・「実績」(/driver/weighings) の 4 つ。設定は補助メニュー。can_drive 事務の場合は自分の事務メニュー先頭に「本日のルート」(/driver) が 1 項目だけ足され、履歴・実績のナビ項目は出ない(後述の CTA カードから到達)。
本日のルート閲覧・stop 完了(自分の配車をこなす)¶
図: 本日のルート画面(モバイル)。①タブ切替 ②目方入力 ③完了 ④完了時刻の修正/取消(凡例は図内)。宵積みの繰越 stop は 1 番目に前置され入場時間が付く。回収先名は長くても全幅で折り返す(モバイルで縦長に見えないよう改善済み)。
- 対象ロール: driver / can_drive 事務
- 前提: 事務が本日分の配車を作成済み。地図導線には回収先の住所登録が必要(未登録なら「住所未登録」表示)。
- 操作手順:
- 下部タブ「本日」(ナビ: 本日 /
/driver) を開く。画面タイトルは「本日の配車」、上部に「自分の本日」「工場の配車」の 2 タブ。 - 「自分の本日ルート」に自分の stop が順序番号付き(回収先名+取引先名の 2 段、住所・「地図」リンク・「備考」)で並ぶ。「地図」を押すと Google マップが別タブで開く。
- 回収先に着いたら、その行の丸い「完了」ボタン(CheckCircle アイコン、
aria-label「〜 を完了」)を押す。成功トーストが出て行が緑になる。トーストの「取消」ですぐ戻せる。 - 完了後に時刻がずれていたら、行の時計+鉛筆アイコンの
time入力(aria-label「完了時刻を修正」)で完了時刻を直せる。「取消」ボタンで未完了に戻せる。 - 確認/完了条件: stop 行が緑背景+完了時刻表示に変わり、
dispatch_stops.status='completed'/completed_atが入る(トースト「〜 を完了しました」)。 - つまずき/注意:
- 完了・取消・時刻修正・応援は「自分のルート」でのみ可能。「工場の配車」ボードは閲覧専用。
- 専用車(
assignedDriverIdが自分)があれば CTA カードにプレート番号が表示される。 - 関連画面: 工場の配車(
/driver/board)、運行ログ登録(/driver/daily-log)。
本日の目方入力(回収先ごとの見積重量を Web で入力)¶
- 対象ロール: driver / can_drive 事務
- 前提: 自分が運転可能(
role='driver'、またはcan_drive=trueの normal/admin)であること。本日の運行(weighing_kind='run')は CTA 押下時に自動で get-or-create される(事前に事務が run を作る必要はない)。 - 操作手順:
- 「本日」(
/driver) 画面の CTA カードにある「目方入力」ボタン(天秤アイコン)を押す。本日の運行を自己開始(get_or_create_today_run)し、解決した運行の目方入力ページ(/driver/run-weighing/:weighingId=DriverRunWeighingPage)へ遷移する(準備中は「準備中…」表示)。 - 目方入力ページで、本日ルートで回収完了した回収先を選び、回収先×品目のセルに見積重量(estimated_kg)をテンキーで入力する。差分吸収させたい品目は「残り」トグルにできる(運行内で1つ・単発計量と同じ二層ルール)。
- 入力は保存すると運行の weighing_items に反映される(帰社後に事務が帰社計量・按分で正味を確定する。ドライバーが入れるのは各回収先の見積重量まで)。
- 確認/完了条件: 入力した回収先×品目の見積重量が保存され、再訪しても保持される。実際の正味重量は帰社計量(事務)後に「実績」で確認できる。
- つまずき/注意:
- 目方入力に出る回収先は「本日ルートで回収完了(
dispatch_stops.status='completed')した回収先」だけ。まだ回収完了していない stop は選択肢に出ない(回収を完了すると出る)。 - 会社で計量済み(
weight_kg記録済み)の回収先は per-site で自動的に消える(帰社計量が付いた回収先はその場で目方入力の対象から外れる)。 - 二次搬出 stop(排出元付き・
source_site_id非 null の点対点運搬)は目方入力の対象外(計量しない stop のため一覧に出ない)。 - 完了かつ未計量の回収先が無い日は空状態「回収完了かつ未計量の回収先はありません」(回収を完了すると入力でき、計量済みの回収先はここから外れる旨を明示)。
- 運転不可のロール(
can_drive=falseの normal 等)は運行を起こせず CTA から入れない(帰属は運転可能プロファイル限定)。 - 目方入力ページは見積重量(estimated_kg)の入力であり、確定重量(weight_kg)や金額は入力・表示しない(確定・単価は事務側)。「目方入力を開始できませんでした」エラー時は再試行で
get_or_create_today_runを呼び直す。 - 同一ドライバー×同日の「収集中」運行は1件に制限される(誤運行への混入防止・DB 索引 mig102 で強制)。
- 関連画面: 目方入力済み一覧(
/driver/mekata-entered/:weighingId・下記節)、計量実績(/driver/weighings・帰社計量後の正味確認)、計量(事務側/collector/weighings・帰社計量/按分/完了)。
目方入力済み一覧(入力した目方を回収先ごとに確認する・閲覧のみ)¶
- 対象ロール: driver / can_drive 事務
- 前提: 目方入力ページで見積重量を入力済みであること。
- 操作手順:
- 目方入力ページ(
/driver/run-weighing/:weighingId)上部の「目方入力済み」ボタン(ListChecks アイコン)を押す → 目方入力済み一覧(/driver/mekata-entered/:weighingId=DriverMekataListPage)へ遷移する。 - 入力済みの目方が回収先ごとにカードで並び、各回収先の品目×目方(estimated_kg・「残り」は「残り」表示)を確認できる。
- 確認/完了条件: 閲覧のみ(入力・修正はこの画面では行わない・目方入力ページに戻って修正する)。入力した目方が無ければ「入力した目方はありません」。
- つまずき/注意:
- この一覧は入力記録の確認が目的のため、目方入力ページと違い会社で計量済みの回収先も、目方が入力されていれば記録として残る(目方入力ページは計量済みを外すが、一覧は外さない)。
- 金額・現場メモ(notes)・確定重量(weight_kg)は出さない。見積重量(estimated_kg)のみ(実績画面と同じ秘匿方針)。
- 関連画面: 本日の目方入力(
/driver/run-weighing/:weighingId)、計量実績(/driver/weighings)。
配車の応援を依頼する(自分の stop を他ドライバーへ渡す)¶
- 対象ロール: driver / can_drive 事務
- 前提: 対象 stop が
pending(未完了)で、受け手候補(運転可・当日同一回収先を未保有の別ドライバー)が存在すること。候補が 0 なら応援ボタン自体が出ない。 - 操作手順:
- 「自分の本日ルート」の pending 行にある人型アイコンのボタン(
aria-label「〜 の応援を依頼」、title「応援」)を押す。 - 応援ダイアログで粒度(この 1 件 / ここから後続すべて)・受け手ドライバー・理由(任意)を選び、確定する。
- 確認/完了条件: 「N件を〜さんへ応援依頼しました」トースト。対象 stop の担当が受け手に付け替わり自分のルートから消える。
- つまずき/注意: 受け手が当日その回収先を既に持つ/pending でない等で RPC が弾くと、失敗トーストに理由文言がそのまま出てダイアログは開いたまま再試行できる。
- 関連画面: 工場の配車(引き取り側の逆操作)。
工場の配車ボード閲覧・他ドライバーの stop を引き取る¶
- 対象ロール: driver / can_drive 事務
- 前提: 自分に所属工場(factoryIds)が設定済み。
- 操作手順:
- 「本日」画面の上部タブ「工場の配車」、または
/driver/boardを開く(タイトル「工場の配車」、副題「所属工場の本日の配車状況」)。※このボードは下部ナビには無く、本日タブ経由でのみ到達。 - 所属工場ごとにドライバー行(氏名・プレート・進捗
完了/全件・進捗バー・次の回収先)が並ぶ。45 秒ごと+フォーカス復帰で自動更新(「最終更新 HH:MM」表示)。 - ドライバー行をタップすると stop 一覧(閲覧専用)が展開する。
- 他ドライバーの pending 行で自分が引き取れる場合、手のひらアイコン(
aria-label「〜 を自分の担当に引き取る」、title「引き取る」)→ 確認ダイアログ「引き取る」で自分の担当にできる。 - 確認/完了条件: 「〜 を引き取りました」トースト。引き取った stop が自分のルートに現れる。
- つまずき/注意:
- 所属工場未設定 → 「所属工場が未設定です。管理者に設定を依頼してください」(「ホームに戻る」あり)。
- factoryIds はあるが工場が読めない/無効 → 「所属工場を読み込めませんでした」。
- 引き取り以外の操作 UI はボードに無い(完了・応援は自分のルート側)。
- 関連画面: 自分の本日ルート(
/driver)。
日次運行ログ・燃費の登録(出庫/入庫メーター・給油量)¶
- 対象ロール: driver / can_drive 事務
- 前提: 所属工場設定済み+自工場に車両登録済み。
- 操作手順:
- 下部タブ「運行ログ」(
/driver/daily-log)、または「本日」画面の CTA カード「本日の運行ログを登録」の「運行ログを登録する」ボタンから開く(タイトル「運行ログ登録」)。 - 「車両」(
Req必須・自工場車両のみ。専用車は「(専用車)」付き)を選ぶ。既定で専用車→無ければ先頭が入る。 - 「運行日」(必須・date 入力・既定は本日)を確認。
- 「出庫メーター (km)」「入庫メーター (km)」を入力(新規登録時は必須。既存ログを開いた編集時は必須が外れる)。数値欄はタップでテンキー(KeypadSheet)が開く。出庫メーターは前回入庫メーターが既定ヒントとして補完される。
- 給油量「軽油 (L)」「アドブルー (L)」「ガソリン (L)」(任意)をテンキーで入力。「メモ」(任意)を入力。
- 入力に応じて「走行距離」「燃費(軽油+ガソリンが分母・アドブルー除外)」のプレビューが自動計算される。
- 「保存」を押す。
- 確認/完了条件: 「保存しました(M月D日分)」トースト。保存直後は同内容の二重登録を防ぐため緑の確認バーが出てボタンが「登録済み」で無効化。いずれかのフィールドを変えると再度「保存(更新)」可能。
- つまずき/注意:
- 所属工場未設定 →「所属工場が未設定です。管理者に設定を依頼してください」。自工場の車両 0 台 →「自工場に登録された車両がありません」(どちらもフォーム非表示・「ホームに戻る」のみ)。
- 既存ログ(他人/メーター無しの古いログ)を開いて再保存する場合、driver_id は保持され identity 列改ざんガードに触れない(メモ・給油だけ直せる)。
- 関連画面: コスト集計(事務側
/collector/fleet/costs)が集計対象にする。
自分の計量実績を見る(閲覧のみ)¶
- 対象ロール: driver / can_drive 事務
- 前提: 自分に帰属(
attribution_driver_id= 自分の profile)した計量が登録済みであること。 - 操作手順:
- 下部タブ「実績」(
/driver/weighings)、または「本日」CTA カードの「計量実績を見る」から開く(タイトル「計量実績」)。 - 自分帰属の計量が日付降順のカードで並ぶ(日付・取引先・回収先・正味
net_kg・ステータスバッジ 収集中/入庫/計量済/完了)。まだ出庫計量前で正味未確定なら「計量中」表示。 - カードをタップで展開し、品目別内訳(品目名 × 重量 kg)を表示。20 件ごとに「さらに表示」で追加読み込み。
- 確認/完了条件: 閲覧のみ(完了操作なし)。実績が無ければ「計量実績はありません」。
- つまずき/注意:
- 重量 (kg) のみ表示。単価・委託料などの金額と現場メモ(notes)は秘匿方針で一切出さない。
- この画面(実績)は閲覧専用(
useMyWeighingsは読み取りのみ)。ただし目方(見積重量)の入力は Web PWA で可能で、「本日」画面の「目方入力」CTA →目方入力ページ(/driver/run-weighing/:weighingId)で行う(上記「本日の目方入力」節)。閲覧専用なのはこの「実績」画面であって、PWA 全体ではない。 - 関連画面: 計量(事務側
/collector/weighings)、本日の目方入力(/driver/run-weighing/:weighingId)。
配車履歴を見る(完了済み案件)¶
- 対象ロール: driver / can_drive 事務
- 前提: 完了済みのアサインメント(job_assignments)が存在すること。
- 操作手順:
- 下部タブ「履歴」(
/driver/history)、または「本日」CTA カードの「配車履歴を見る」から開く(タイトル「配車履歴」)。 - 完了済み案件が日付降順のカード(廃棄物種別・「完了」バッジ・回収地・数量・予定引取日)で並ぶ。20 件ごとに「さらに表示」。
- 確認/完了条件: 閲覧のみ。無ければ「完了した案件はありません」。
- つまずき/注意: 「履歴」は
job_assignments(案件アサイン)系の完了、「実績」はweighings(計量)系で別データソース。当日の stop 完了(dispatch_stops)とも別軸なので、stop を完了しても履歴カードが増えるわけではない。 - 関連画面: 計量実績(
/driver/weighings)、本日のルート(/driver)。
⚠️ 配車 2 系統の併存に注意: 事務→ドライバーの当日配車は「dispatch_stops」(本日ルート・工場ボードで完了/応援)。一方「履歴」は「job_assignments」の完了案件を見る別系統。ドライバー PWA では両方が並存しており、日々の完了操作は前者、履歴閲覧は後者。