コンテンツにスキップ

運行日報(統合後の現行仕様)

ドライバーが入力し、事務が 1 日 1 枚で表示・印刷する法定記録です。ドライバー向けの /driver/daily-report に出庫から帰庫までをまとめ、同じ vehicle_daily_logs の行へ段階的に保存します。

操作手順は operations-manual/11-driver-daily-report.md、 機械が守る不変条件は AGENTS.md の「運行日報」節にあります。ここでは設計意図を説明します。

点呼は 2026-07-31 に製品から撤去しました。 入力・表示・PDF 欄はなく、 driver_roll_calls は既存の法定記録を守るため休眠温存しています。

最終更新: 2026-08-05(mig174/176/179/180/187/197 と現行 PDF を反映)

車両種別による1ページ内のモード分岐(#512)

/driver/daily-report を単一入口とし、resolveDriverDailyMode が選択した車両の isSecondaryDedicated で表示モードを分けます。 二次搬出専用車(isSecondaryDedicated === true)は現行の 2 段運行日報、それ以外は復元した運行ログ (DriverVehicleLogForm)です。運行ログはオドメーター・給油・メモだけを扱い、upsert は departed_at / returned_at / *_at_source / 点検列を送信しません(mig176/180/187 の契約)。 旧 /driver/daily-log/driver/daily-report への replace redirect として残します。

この図が答える問い

出庫から帰庫の2ステージ

この図は、点呼を含めず、出庫前には帰庫項目を表示しない2ステージの入力を示します。

全画面で開く

出庫から帰庫の2ステージ。

17項目の出所

この図は、日報を新しい入力表に再コピーせず、17項目のうち11項目を既存データの原本として表示する設計判断を示します。

全画面で開く

17項目の出所。

朝と帰社時で入力する項目が違うため、/driver/daily-report の 1 ページ内で、二次搬出専用車は 2 ステージ運行日報、それ以外の車両は運行ログへモード分岐します。

ステージ 入力 保存時の意味
出庫前 点検確認、出庫メーター departed_atodometer_outdeparture_inspection_ok
出庫後 軽油・アドブルー・ガソリン、入庫メーター、点検確認 returned_atodometer_in・給油 3 列・return_inspection_ok

出庫前には帰庫側の入力欄を表示しません。帰庫登録が完了すると、その時点で提出済みになります。 走行距離は odometer_in - odometer_out の生成列を表示し、入力欄や画面内の再計算値は持ちません。

2. 既存データを再入力させない

紙の日報のうち、次の項目は既存表を原本として表示・印刷します。

  • 運行年月日・ドライバー・車両 → 配車と vehicle_daily_logs
  • 立ち寄り先 → dispatch_stops
  • 品目・重量 → weighing_items
  • 高速代 → vehicle_cost_entriesetc 費目

総重量・高速代・走行距離を日報へ手入力させると計量実績や収支と乖離するため、入力元を増やしません。 給油は帰社時にだけ 3 種別を記録し、燃費はこの画面では表示しません。

3. 点検と連絡事項

点検は vehicle_daily_logsdeparture_inspection_ok / return_inspection_ok の boolean 2 列だけです。 NULL は未確認、false は点検して異常ありを表します。過去行への backfill は行いません。

異常の内容は専用メモ列へ上書きせず、既存の driver_daily_notes に「異常・事故」として追記します。 点検未チェックでも出庫・帰庫の打刻は止めず、警告と連絡事項欄へのリンクを出します。これは異常があった 日に法定時刻そのものが記録されなくなることを防ぐためです。

連絡事項は本人と自テナントの事務だけが読み、append-only で訂正は新しい記録を追記します。

4. 提出状態

提出用の専用列は作りません。その日、そのドライバーの vehicle_daily_logsreturned_at が 1 件以上あれば提出済みです。複数車両の日も 1 台の帰庫で提出済みとします。

事務の日報画面には、その日に配車があったドライバー(配車がなくても vehicle_daily_logs の当日行があるドライバーを含む)の 提出状況を表示します。

  • 提出済み: returned_at がある
  • 運行中: departed_at はあるが returned_at がない
  • 未記録: 当日行がない、または出庫時刻がない

取得に失敗した場合は全員を未記録として表示せず、エラーを表示します。

時刻の記録元と削除

出庫・帰庫時刻の記録元は画面上で 3 状態に分かれます。ドライバーの打刻は「打刻」、事務などの訂正は「手入力」、 既存行で記録元が分からない場合は「不明」です。印は画面表示専用で、PDF には出ません。

vehicle_daily_logs は物理削除できません。誤登録の削除は admin 限定の soft_delete_vehicle_daily_log、 復元は restore_vehicle_daily_log を使う復元可能な soft-delete です。

5. 業務日・車両選択

業務日は resolveBusinessDay を使い、前日が出庫済み・未帰庫ならその日の続きとして扱います。 宵積みの 23:30 出庫と翌 01:00 帰庫を別日へ分断しません。

車両は filterMyFactoryVehicles で自工場車両(構内機器を除く)だけを表示し、専用車を既定にします。 他のドライバーが作成した当日行では出庫・帰庫・点検を無効化し、連絡事項だけを記録できます。

6. データ保護と印刷

出庫・帰庫時刻と点検列はドライバーの所有者ガードで守ります。オドメーター・給油・メモは既存の 代行入力契約を維持します。vehicle_daily_logs は拘束時間管理も読むため、日報専用表は作りません。

担当未設定の既存ログをドライバーが開いた場合は、claim_vehicle_daily_log が最初に成功した呼出元へ 先勝ちで担当を付けます。競合時は現在の担当者名を案内し、後から別ドライバーが上書きすることはできません。 claim の呼出元は role='driver' または can_drive=true の driver-capable profile に限ります。

mig197 により client 経路の新規ログは担当必須となり、担当未設定行の新規発生源を断ちます。事務の代行入力も 新規・既存訂正のどちらも担当ドライバー必須です。

事務画面の印刷は既存の pdf-lib + Noto Sans JP 基盤を使います。取得中・取得失敗・記録がない状態は 空の日報として印刷できません。過去の運行の車両ラベルは無効車も含めて取得し、車番・社内コード・車両名の識別子を保持します。取得できない車両や識別子が空の運行は印刷を拒否します(#716)。複数車両の日は車両ごとの出庫・帰庫・走行距離・給油をすべて並べます。

/driver/daily-log はブックマーク互換の replace redirect を残し、入力画面は廃止しました。 事務の代理入力 /collector/fleet/daily-logs/new は全車両を扱う目的が違うため残します。