Application Overview

What Council Workshop models, and the ideas behind it


Core Chains

Asset → AssetInspection → InspectionResponse → Defect
  → WorkRequest → WorkOrder → WorkOrderTask / WorkOrderLabour / WorkOrderPart
MaintenanceTemplate (+Tasks) → AssetMaintenancePlan (due by date and meter)
Store → StoreStock → InventoryTransaction;  WorkOrder → WorkOrderPart
PurchaseRequisition (+Lines) → PurchaseOrder (+Lines) → GoodsReceipt (+Lines)
Asset → FuelTransaction;  Tyre → TyreFitment
Asset → RenewalAssessment → Disposal;  AssetIncident → WorkRequest
Budget (per cost centre / type / asset class / asset)

Key Concepts

One register, every kind of plant. An Asset can be a motor grader, a garbage compactor, a ute, a trailer or the blade hanging off the grader (assets nest via parent_asset_id). Each belongs to an AssetClass that sets expectations — asset type, criticality, expected life, primary meter, whether registration and pre-starts are required — and carries its own meters, registration, warranty, costs and current assignment.

Maintenance is projected, not remembered. A MaintenanceTemplate defines a service (tasks, trades, estimated hours and parts) with an interval in days and/or meter units. An AssetMaintenancePlan instances that template on an asset and tracks next-due date and next-due meter against tolerance — an overdue 1000-hour service is visible the moment either threshold passes.

Inspections have teeth. Inspection templates itemise prompts per class; a failed item carries a configured defect severity, and items flagged stop_use_on_fail mean a failed pre-start takes the asset OUT_OF_SERVICE immediately — the demo's ute is parked by exactly this rule. Defects then track their own lifecycle (open → assessed → work order raised → repaired → verified → closed, or formally deferred with approval).

Work flows request → order. A WorkRequest captures the demand (breakdown, defect, scheduled service…) with priority up to EMERGENCY; a WorkOrder plans and delivers it — statuses run through planning, scheduling, execution, AWAITING_PARTS, quality check and return to service, with tasks (safety- critical ones verified), labour by type and rate, downtime and failure codes.

Stores close the loop with purchasing. StoreStock tracks on-hand, reserved and reorder points per store and item — a critical spare at zero raises the flag, an urgent requisition becomes a purchase order, and the goods receipt books stock back in through an InventoryTransaction that also feeds the work order's parts. Every movement is a transaction with a reference.

Whole-of-life, not just workshop. Fuel transactions meter consumption per asset; tyres are tracked as assets of their own through fitment history (the demo scraps one for sidewall damage); incidents record damage and insurer details; budgets hold approved/committed/actual/forecast per cost centre and type; renewal assessments score condition, reliability, cost and downtime to recommend replacement; and disposals record method, proceeds and the settlement certificate.