feat(pb): vehicles.unit_type + plant_hours_log collection

Adds the schema needed for the weekly plant-equipment hours log:
- vehicles gets a unit_type select (fuel|plant), defaults to fuel
  for backward-compat with existing rows
- plant_hours_log collection with the 13 plant-hours fields plus
  vehicle_unit_type_at_import snapshot and composite unique index
  (vehicle_qr, start_date)
- data_import_batches.batch_type gains plant_hours
This commit is contained in:
DEls 2026-08-28 12:31:17 +02:00
parent 2204989a3c
commit ffd840eac1

View file

@ -58,7 +58,7 @@ DEFS["data_import_batches"] = {
"name": "DATA_IMPORT_BATCHES", "type": "base",
"fields": [
field("batch_type", "select", required=True,
values=["timesheets", "fuel_logs", "purchase_orders", "delivery_notes"], maxSelect=1),
values=["timesheets", "fuel_logs", "purchase_orders", "delivery_notes", "plant_hours"], maxSelect=1),
field("original_file", "file", required=False,
maxSelect=1, maxSize=20971520,
mimeTypes=["text/csv", "text/plain", "application/vnd.ms-excel", "application/csv"]),
@ -180,6 +180,8 @@ DEFS["vehicles"] = {
field("description", "text", required=False),
field("standard_work_hours", "text", required=False),
field("fuel_limits", "text", required=False),
field("unit_type", "select", required=True,
values=["fuel", "plant"], maxSelect=1),
field("attention_dismissed_at", "date", required=False),
],
"indexes": [],
@ -215,6 +217,39 @@ DEFS["fuel_logs"] = {
"indexes": [],
}
DEFS["plant_hours_log"] = {
"name": "PLANT_HOURS_LOG", "type": "base",
"fields": [
field("date_logged", "date", required=True),
field("vehicle_qr", "text", required=True),
field("vehicle", "relation", required=True,
collectionId="__VEHICLES_ID__", cascadeDelete=False, maxSelect=1, minSelect=1),
field("site", "relation", required=True,
collectionId="__SITES_ID__", cascadeDelete=False, maxSelect=1, minSelect=1),
field("project_code", "text", required=True),
field("start_date", "date", required=True),
field("end_date", "date", required=True),
field("start_time", "text", required=False),
field("end_time", "text", required=False),
field("start_hours", "number", required=True),
field("end_hours", "number", required=True),
field("hours", "number", required=True),
field("notes", "text", required=False),
field("hour_meter_budget", "number", required=True),
field("cost_per_hour", "number", required=True),
field("value", "number", required=True),
field("over_budget", "bool", required=True),
field("hours_mismatch", "bool", required=True),
field("vehicle_unit_type_at_import", "select", required=True,
values=["fuel", "plant"], maxSelect=1),
field("batch_reference", "relation", required=False,
collectionId="__DATA_IMPORT_BATCHES_ID__", cascadeDelete=False, maxSelect=1, minSelect=0),
],
"indexes": [
"CREATE UNIQUE INDEX `idx_plant_hours_log_qr_start` ON `plant_hours_log` (`vehicle_qr`, `start_date`)",
],
}
DEFS["delivery_notes"] = {
"name": "DELIVERY_NOTES", "type": "base",
"fields": [
@ -265,6 +300,7 @@ ORDER = [
"vehicles",
"timesheets",
"fuel_logs",
"plant_hours_log",
"delivery_notes",
"received_items",
]