配車¶
配車(コース設計・当日配車ボード・ドライバー完了)¶
配車は3層で構成されます。(1) 事務が コースビルダー(/collector/dispatch/courses)で配車コースを組み立て、週×曜日にドライバーを割り当てる。(2) 事務が 当日配車ボード(/collector/dispatch)でその日のストップを生成・調整する。(3) ドライバーが 本日の配車(/driver)でストップを完了し、必要なら応援(引き継ぎ)を依頼する。ナビ表記は事務が「配車」(サイドナビ・日次業務グループ → /collector/dispatch)、ドライバーが「本日のルート / 本日の配車」(/driver)。
書込操作の権限境界(実装 isCollectorStaff): コース設計・週割当・当日ボードの D&D はすべて admin / normal のみ(route の RoleGuard allowedRoles={COLLECTOR_STAFF_ROLES} で driver は物理的に到達不可)。driver はこれらの画面を見られず、自分の /driver でストップ完了・応援だけ行う。「ドライバー」= role=driver または can_drive=true の normal/admin(実装 canActAsDriver)。
コース設計(配車コースの作成・組み立て)¶
- 対象ロール: admin / normal(driver はコースビルダー画面に到達不可)
- 前提: 取引先とその回収先が登録済みであること(回収先は「取引先 → 回収先」で管理)。回収先が0件だと左パレットに「回収先がありません」が出て、
/collector/partners(取引先)へ誘導される。 - 操作手順:
- 「配車」(
/collector/dispatch)を開き、右上の「配車コース設定」ボタン、または当日ボードの空状態案内の「まず配車コースを設定 →」から コースビルダー(/collector/dispatch/courses)へ移動する。 - 上部タブで「コース構築」を選ぶ(既定)。
- 「コースを追加」ボタンを押し、現れたフォームの「コース名」(プレースホルダ「コース名(例: 月曜 北ルート)」)を入力して「作成」を押す。
- 左の「回収先」パレットで取引先見出しを開き(検索欄「取引先 / 回収先で絞り込み」で絞り込める)、回収先カードをコース列へドラッグする。回収先カードには回収タイミングのチップ(例「毎週 月・木」、未設定は控えめ表示)が出るので配車計画の判断材料にできる。
- コース内の並べ替え = 列内でドラッグ。別コースへ移す = 別のコース列へドラッグ。コースから外す = 左パレットへドラッグして戻す、またはカードのゴミ箱アイコン。
- コース名変更 = 列ヘッダーの鉛筆アイコン → 入力 → チェックで保存(Enter でも保存、Escape で破棄)。有効/無効切替 = 電源オフ / 更新アイコン(無効コースは「無効」バッジ・半透明)。削除 = ゴミ箱アイコン → 確認ダイアログ「削除」。
- (任意・二次搬出 P&L 用)列ヘッダーの「排出元 回収先(二次搬出の収入計上元)」セレクトで、そのコースの排出元回収先を選ぶ(未設定可)。収入導出のキーになる列で、通常の配車運用では未設定でも問題ない。
- 確認/完了条件: 各 D&D 操作は即時 DB 反映され、トースト(例「◯◯ を追加しました」)が出る。列ヘッダーの件数(stop 数)が期待どおりであること。
- つまずき/注意:
- 同じ回収先を同一コースに二重追加しようとすると「このコースに既に追加されています」で弾かれる。別コースへ移動時に移動先に同じ回収先があると「移動先のコースに同じ回収先が既にあります」。
- コース内ドラッグの発火距離は 8px。無効コースも操作はできるが「無効」バッジ・半透明で表示される。
- driver がこの画面に来ても route ガードで入れない(サイドナビにも出ない)。
- 関連画面:
/collector/partners(取引先・回収先マスタ)、当日配車ボード(/collector/dispatch)。
週割当(コース → 曜日 × 週序数 × ドライバー)¶
- 対象ロール: admin / normal(閲覧は driver も可だが完全読み取り専用)
- 前提: コースが1件以上作成済み(0件なら「コースがありません」で「コース構築へ」へ誘導)。運転できるメンバー(driver または can_drive の normal/admin)が登録済み(未登録なら「ドライバーが未登録です。メンバー管理へ」)。
- 操作手順:
- コースビルダー(
/collector/dispatch/courses)の上部タブで「週割当」を選ぶ。 - 行 = 週序数(毎週 / 第1〜第4 / 最終週)、列 = 曜日(月始まり表示)のグリッドが出る。各セルは「コース → ドライバー」チップ。
- 右上の「編集」ボタンを押して編集モードに入る(この時点ではまだ DB に書かない・ローカル下書き)。
- 目的のセルの「追加」を押し、「コースを選択」「ドライバーを選択」の2セレクトを選んで「追加」を押す(連続追加可・フォームは開いたまま)。スマホでは追加がダイアログで開く。
- 割当を外す = チップの × を押す。
- すべて済んだら右上「保存」を押す(編集開始時点との差分だけを一括コミット)。破棄する場合は「キャンセル」(確認なしで下書き破棄)。
- 確認/完了条件: 保存で「週割当を保存しました」トースト、編集モードが解除されチップが確定表示になる。
- つまずき/注意:
- 同一スロット(週序数×曜日)に同一コースは1回まで(追加候補から割当済みコースは自動除外、念のため重複追加は警告)。
- 同一ドライバーが同一スロットで複数コースを持つと ⚠(琥珀)マークが出る(生成時に停車順を再採番するため許容だが注意喚起)。
- 無効コースは追加候補に出ない(有効コースのみ割当可能)。
- この週割当が「当日ボードのコース割当から生成」の元データになる。ここが空だと当日ボードで生成しても0件になる。
- 関連画面: コース構築タブ、
/collector/members(メンバー管理)、当日配車ボード。
当日配車ボード(コース割当からストップ生成・ドライバー別調整)¶
図: 当日配車ボード(ドライバービュー)。①コース割当から生成 ②未割当プール→ドライバー列へ D&D ③二次搬出を追加 ④完了/総数バッジ・二次搬出バッジ(凡例は図内)。宵積みの繰越分は翌朝の 1 番目に前置される。
- 対象ロール: admin / normal(書込 D&D は staff のみ。driver は route で除外)
- 前提: コースと週割当が設定済み(生成は週割当を元にする)。ストップは自動生成されず、必ずボタンで生成する。
- 操作手順:
- サイドナビ「配車」(
/collector/dispatch)を開く。既定は「当日」。「配車日」の日付入力、または相対ナビ「← 前日 / 今日 / 明日」で対象日を選ぶ。 - その日が未生成(0件)なら空状態案内が出る。右上の「コース割当から生成」ボタンを押す(0件時は確認なしで生成)。既に生成済みの日は同ボタンが「コース割当から再生成」になり、押すと破棄件数(完了済み内訳)を示す確認ダイアログ「破棄して作り直す」経由で作り直す。
- 生成後、既定の「ドライバー」ビューでドライバー別カンバンが出る。左端が「未割当」プール(その日の繰り返し設定に該当する未配置回収先)。
- 配車する = 未割当プールの回収先をドライバー列へドラッグ。配車から外す = ストップを「未割当」プールへドラッグ(トースト「◯◯ を配車から外しました」)、またはストップ右のゴミ箱で確認ダイアログ「削除」。
- 停車順の並べ替え = 同一ドライバー列内でドラッグ。担当替え = 別のドライバー列へドラッグ。
- (任意)上部「工場」セレクトで所属工場によりドライバー列を絞り込める(セッション内・表示のみ。プール/孤児列は絞り込み対象外)。
- (任意)ビュー切替「ドライバー / コース」でコース別の読み取り専用ビューに切り替えられる(コースビューは D&D なし・閲覧のみ、選択はテナント単位で記憶)。
- (任意・横乗り)各ドライバー列ヘッダーの「横乗りを追加」→ メンバーを選ぶと同乗者チップが付く。× で外す。横乗りはルート(配車ストップ・停車順)には影響しない付随情報。
- (任意・二次搬出)前日に決まった排出元→搬出先の点対点搬出は、右上「二次搬出を追加」ボタン(admin/normal のみ)→ ダイアログ「二次搬出を追加」で、ドライバー・積方・入場時間・排出元→搬出先の順序をまとめて登録する(詳細は下記参照)。
- 確認/完了条件: 各列ヘッダーに「完了/総数」バッジ(全完了は緑)。生成時は「コース割当から生成しました(N件)」トースト。
- つまずき/注意:
- 自動生成はしない。日を切り替えて空なら必ず「コース割当から生成」を押す。
- 「再生成」は手動 D&D 編集と完了状態も含めてその日の全ストップを破棄して作り直す(force 削除)。確認ダイアログの破棄件数を必ず確認する。
- 担当替え先に同じ回収先が既にあると「移動先のドライバーに同じ回収先が既にあります」で弾かれる(回収先はドライバー×日で一意)。
- コース跨ぎの並べ替えはボードでは不可(「コース間の移動はコース設定で変更してください」)。コース構成の変更はコースビルダーで行う。
- 孤児ストップ警告: 生成後にメンバーの運転権限(can_drive)を外す/役割変更すると、そのメンバーに残ったストップが赤い警告列に出る。「他ドライバーへドラッグ」または「この列をまとめて削除」で解消する(コースビューでは是正できないので「ドライバービューへ切替」導線が出る)。
- 未割当プールの源泉は回収先個別の「繰り返し設定」(collection_site_schedules)であって、コース生成そのものではない。繰り返し非該当のコース専用回収先は、手動で外したその場ではプールに出るが、日付変更・再生成でリセットされる。
- 関連画面: コースビルダー(
/collector/dispatch/courses・右上「配車コース設定」/「当日の配車へ」で相互移動)、/collector/members(メンバー・運転権限)、工場マスタ(工場フィルタの選択肢)。
二次搬出を追加(宵積み・入場時間・配車順・日次一括入力・v1.29.0)¶
- 対象ロール: admin / normal(driver は入力不可)
- 前提: 排出元・搬出先の回収先がマスタ登録済み。前日に翌日分の二次搬出が決まっていること。
- 背景: 前日 12 時ごろに翌日の二次搬出(排出元→搬出先の点対点)が決まる運用に合わせ、積方(朝積み/宵積み)・入場時間・配車順をまとめて登録できる。宵積み(前夕に積んで翌朝配送)は前日の最終ペアが翌朝の 1 番目へ自動で繰り越される。
- 操作手順:
- 当日配車ボード(
/collector/dispatch)右上の「二次搬出を追加」ボタンを押す → ダイアログ「二次搬出を追加」が開く。 - 「ドライバー」を選ぶ。
- 「積方」を「朝積み」か「宵積み」で選ぶ(driver×日で 1 つ。朝積み=当日積んで当日配送/宵積み=前夕積んで翌朝配送)。
- 「入場時間」(任意)にその日の 1 箇所目に入る時刻を入れる。
- 「排出元・搬出先の順序」で、排出元→搬出先のペアを順序どおりに追加する(「行を追加」/↑↓ で並べ替え/「削除」)。
- 「登録」を押す。指定ドライバーの当日ルートに各ペアが順序付きで反映される。
- 確認/完了条件: 保存トースト後、配車ボードのそのドライバー列に積方バッジ(朝積み/宵積み)・入場時間チップが付く。宵積みにした日は、翌稼働日のボード/ドライバー本日ルートの 1 番目に前日の繰越 stop が淡色で前置される。
- つまずき/注意:
- 積方は driver×1 日で 1 つ(同日に朝積みと宵積みは混在しない)。
- 宵積みの繰越元は「直近に二次搬出があった前営業日」を辿る(週末/祝日はスキップ)。前日が朝積みなら繰越は起きない(前夕積込が無いため)。
- 運搬費(P&L)は実配送日(完了日)基準で計上される。宵積み繰越分は翌日計上になる(06-secondary-transport-pnl.md)。
- driver は二次搬出 stop の「配送完了マーク」だけを行える(並べ替え・完了取消・時刻修正・応援移譲は事務のみ)。
- 関連画面: 二次搬出 運搬費 + 収支(P&L)(06-secondary-transport-pnl.md)、ドライバー本日ルート(08-driver-pwa.md)。
ドライバーによるストップ完了・応援依頼(引き継ぎ)¶
- 対象ロール: driver、および can_drive の normal/admin(
/driverへ到達できる = allowDriverCapable) - 前提: 事務が当日ボードでその日のストップを生成し、自分に割り当てていること。割当が無ければ「本日の配車はありません」。
- 操作手順:
- ナビ「本日のルート / 本日の配車」(
/driver)を開く。ページ内タブ「自分の本日 / 工場の配車」のうち「自分の本日」に自分の本日ルート(停車順)が出る。 - 各ストップ行に回収先名(上)+取引先名(下)+住所、住所があれば「地図」ボタン(Google マップを新規タブで開く)、事務が入れた備考が出る。
- 完了する = 行右のチェック(完了)ボタンを押す(トースト「◯◯ を完了しました」・トースト内「取消」で即取消可)。完了済み行は緑になり、完了時刻の time 入力(時計+鉛筆)でその場で時刻修正でき、「取消」ボタンで未完了に戻せる。
- 回りきれない時(応援依頼=引き継ぎ)= pending ストップの「応援」(人型)ボタン → ダイアログ「応援を依頼」で、引き継ぐ範囲「この回収先だけ / ここから後続すべて」を選び、「応援を頼むドライバー」を選択、任意で理由を入力し「応援を依頼」を押す。対象ストップの担当が相手ドライバーへ移る(理由は引き継ぎ履歴に記録)。
- 確認/完了条件: 完了でチェックが緑・完了時刻表示。応援で「N件を◯◯さんへ応援依頼しました」トースト、自分のルートから該当ストップが消える。
- つまずき/注意:
- 「工場の配車」タブ(
/driver/board・DriverFactoryBoardPage)は工場全体の配車を見る 閲覧専用(完了・応援などの操作ボタンは無い)。操作は「自分の本日」タブで行う。 - 応援ボタンは pending かつ「応援を頼めるドライバー」が居る場合のみ出る。候補は「自分以外・当日運転できる・その回収先を当日まだ持っていない人」。候補が居ないと「応援を頼めるドライバーがいません」。
- 「ここから後続すべて」は当日同一回収先を持つ人が増えて候補が消えることがあり、その場合「この回収先だけ」に切り替えると依頼できる旨の案内が出る。
- driver は当日配車ボード・コースビルダーへは入れない(route ガード)。配車の組み立て・担当替えは事務側の作業。
- 関連画面:
/driver/daily-log(運行ログ登録・CTAカード)、/driver/history(配車履歴)、/driver/weighings(計量実績)、/driver/board(工場の配車・閲覧専用)。