KwestKarz Maintenance Procedure Specification - wwestlake/KwestKarz GitHub Wiki

KwestKarz Maintenance Procedure Specification

This spec defines how detailed, step-by-step procedures are created, assigned, tracked, and verified by helpers, mechanics, and inspectors. Procedures cover all types of vehicle work including inspection, maintenance, and condition verification.


📘 Procedure (Template)

Reusable maintenance blueprint.

{
  "id": "guid",
  "title": "string",
  "description": "string",
  "steps": [
    { "order": 1, "instruction": "string" },
    { "order": 2, "instruction": "string" }
  ],
  "verificationChecklist": ["string", "string"],
  "tags": ["string"],
  "attachments": [
    { "url": "string", "label": "string" }
  ],
  "version": 1,
  "createdByUserId": "guid",
  "createdAt": "datetime",
  "lastUpdatedAt": "datetime"
}

📦 ProcedureAssignment

Tracks execution of a Procedure by a user.

{
  "id": "guid",
  "procedureId": "guid",
  "vehicleId": "guid",
  "assignedToUserId": "guid",
  "status": "Assigned | InProgress | Submitted | Inspected | Rejected",
  "submittedAt": "datetime",
  "inspectedByUserId": "guid",
  "inspectedAt": "datetime",
  "inspectionNotes": "string",
  "stepConfirmations": [
    { "stepOrder": 1, "confirmed": true },
    { "stepOrder": 2, "confirmed": false }
  ],
  "checklistResults": [
    { "item": "string", "checked": true }
  ],
  "photos": ["url1.jpg", "url2.jpg"],
  "attachments": ["file1.pdf"]
}

🔐 Access & Workflow

  • Helpers can view & submit assigned procedures.
  • FleetManagers & Inspectors can assign, review, and approve.
  • Only creators or managers can edit procedures.

Workflow:

  1. Manager selects or creates a Procedure
  2. Assigns it to a helper for a specific vehicle
  3. Helper performs work, submits with certification
  4. Inspector reviews submission, confirms or rejects

🔁 Procedure Revisioning

Support evolving SOPs.

{
  "procedureId": "guid",
  "version": 2,
  "changeSummary": "Updated oil weight and added safety step",
  "updatedByUserId": "guid",
  "updatedAt": "datetime"
}