Files
portal/vendor/trainer/runs/hire-2026-09-22/model.json
T
Bendik Aagaard Lynghaug bedd306854 Bring the trainer in (uhhm/portal-trainer main, history kept)
git-subtree-dir: vendor/trainer
git-subtree-mainline: c7c2956e15
git-subtree-split: a2a9f4edcf
2026-09-30 15:23:15 +02:00

527 lines
14 KiB
JSON

{
"buckets": {
"accounts": {
"desks": [
{
"group": "office",
"moves": [
{
"from": "checked",
"label": "Approve",
"to": "approved"
},
{
"from": "checked",
"label": "Decline",
"to": "declined"
},
{
"from": "open",
"label": "Review",
"to": "checked"
},
{
"from": "open",
"label": "Reject",
"to": "declined"
}
],
"page": "/office"
}
],
"initial": "open",
"self_moves": [],
"transitions": {
"checked": [
"approved",
"declined"
],
"open": [
"checked",
"declined"
]
}
},
"breakdowns": {
"desks": [
{
"group": "yard",
"moves": [
{
"from": "in_hand",
"label": "Mark fixed",
"to": "resolved"
},
{
"from": "open",
"label": "Take in hand",
"to": "in_hand"
}
],
"page": "/yard"
}
],
"initial": "open",
"self_moves": [],
"transitions": {
"in_hand": [
"resolved"
],
"open": [
"in_hand"
]
}
},
"damage_reports": {
"desks": [
{
"group": "office",
"moves": [
{
"from": "open",
"label": "Invoice",
"to": "invoiced"
},
{
"from": "open",
"label": "Write off",
"to": "written_off"
}
],
"page": "/office"
}
],
"initial": "open",
"self_moves": [],
"transitions": {
"open": [
"invoiced",
"written_off"
]
}
},
"hires": {
"desks": [
{
"group": "counter",
"moves": [
{
"from": "open",
"label": "Reserve machine",
"to": "reserved"
},
{
"from": "open",
"label": "Cancel request",
"to": "cancelled"
},
{
"from": "out",
"label": "Cancel hire",
"to": "cancelled"
},
{
"from": "reserved",
"label": "Cancel reservation",
"to": "cancelled"
}
],
"page": "/counter"
},
{
"group": "yard",
"moves": [
{
"from": "out",
"label": "Mark returned",
"to": "returned"
},
{
"from": "reserved",
"label": "Send out",
"to": "out"
}
],
"page": "/yard"
}
],
"initial": "open",
"self_moves": [],
"transitions": {
"open": [
"reserved",
"cancelled"
],
"out": [
"returned",
"cancelled"
],
"reserved": [
"out",
"cancelled"
]
}
}
},
"needs": [
{
"done_when": [
"returned",
"cancelled"
],
"enters_as": null,
"handled_by": "counter",
"id": "hire-request",
"lands_in": "hires",
"steps": [
{
"alternative": "Need a machine for a while?",
"expect": [
"Need a machine for a while?"
],
"fields": [],
"options": [
{
"description": "For someone who needs a machine, or has one that has stopped. We'll help you find the right one.",
"name": "Need a machine for a while?"
},
{
"description": "For firms that hire often. Send anyone to collect and get one invoice a month.",
"name": "Frequent hire? Set up an account"
}
],
"page": "/",
"question": "What brings you to Fjellstad Hire today?"
},
{
"alternative": "Hire a machine for your job",
"expect": [
"Hire a machine for your job"
],
"fields": [
{
"label": "Your name",
"name": "name",
"optional": false,
"options": [],
"type": "text"
},
{
"label": "Phone number",
"name": "phone",
"optional": false,
"options": [],
"type": "tel"
},
{
"label": "Machine type",
"name": "what",
"optional": false,
"options": [],
"type": "textarea"
},
{
"label": "Start date",
"name": "from",
"optional": false,
"options": [],
"type": "date"
},
{
"label": "Return date",
"name": "until",
"optional": false,
"options": [],
"type": "date"
},
{
"label": "Delivery address",
"name": "deliver_to",
"optional": true,
"options": [],
"type": "text"
}
],
"options": [
{
"description": "Get the right machine on site from a start date, for as long as you need.",
"name": "Hire a machine for your job"
},
{
"description": "Tell us about the machine that stopped, so we can fix it today.",
"name": "Machine has stopped working"
}
],
"page": "/hiring",
"question": "What do you need from us today?"
}
],
"success": [
"returned"
],
"wants": "the right machine, from a date, for as long as they need it",
"who": "a private person or a firm who needs a machine for a while"
},
{
"done_when": [
"resolved"
],
"enters_as": null,
"handled_by": "yard",
"id": "breakdown",
"lands_in": "breakdowns",
"steps": [
{
"alternative": "Need a machine for a while?",
"expect": [
"Need a machine for a while?"
],
"fields": [],
"options": [
{
"description": "For someone who needs a machine, or has one that has stopped. We'll help you find the right one.",
"name": "Need a machine for a while?"
},
{
"description": "For firms that hire often. Send anyone to collect and get one invoice a month.",
"name": "Frequent hire? Set up an account"
}
],
"page": "/",
"question": "What brings you to Fjellstad Hire today?"
},
{
"alternative": "Machine has stopped working",
"expect": [
"Machine has stopped working"
],
"fields": [
{
"label": "Phone number",
"name": "phone",
"optional": false,
"options": [],
"type": "tel"
},
{
"label": "Machine model",
"name": "machine",
"optional": false,
"options": [],
"type": "text"
},
{
"label": "What happened",
"name": "what_happened",
"optional": false,
"options": [],
"type": "textarea"
},
{
"label": "Location",
"name": "where",
"optional": true,
"options": [],
"type": "text"
}
],
"options": [
{
"description": "Get the right machine on site from a start date, for as long as you need.",
"name": "Hire a machine for your job"
},
{
"description": "Tell us about the machine that stopped, so we can fix it today.",
"name": "Machine has stopped working"
}
],
"page": "/hiring",
"question": "What do you need from us today?"
}
],
"success": [
"resolved"
],
"wants": "it running again, or swapped, today",
"who": "someone whose hired machine has stopped working"
},
{
"done_when": [
"approved",
"declined"
],
"enters_as": null,
"handled_by": "office",
"id": "account-request",
"lands_in": "accounts",
"steps": [
{
"alternative": "Frequent hire? Set up an account",
"expect": [
"Frequent hire? Set up an account"
],
"fields": [],
"options": [
{
"description": "For someone who needs a machine, or has one that has stopped. We'll help you find the right one.",
"name": "Need a machine for a while?"
},
{
"description": "For firms that hire often. Send anyone to collect and get one invoice a month.",
"name": "Frequent hire? Set up an account"
}
],
"page": "/",
"question": "What brings you to Fjellstad Hire today?"
},
{
"alternative": "Set up a firm account",
"expect": [
"Set up a firm account"
],
"fields": [
{
"label": "Company name",
"name": "company",
"optional": false,
"options": [],
"type": "text"
},
{
"label": "Organisation number",
"name": "registration_number",
"optional": false,
"options": [],
"type": "text"
},
{
"label": "Contact person",
"name": "contact",
"optional": false,
"options": [],
"type": "text"
},
{
"label": "Phone number",
"name": "phone",
"optional": false,
"options": [],
"type": "tel"
},
{
"label": "Invoice email",
"name": "invoice_email",
"optional": true,
"options": [],
"type": "email"
}
],
"options": [
{
"description": "Set up a firm account to send anyone to collect and get one monthly invoice.",
"name": "Set up a firm account"
}
],
"page": "/firms",
"question": "What do you need from us today?"
}
],
"success": [
"approved"
],
"wants": "to send anyone to collect, and get one invoice a month",
"who": "a firm that hires often"
},
{
"done_when": [
"invoiced",
"written_off"
],
"enters_as": "yard",
"handled_by": "office",
"id": "damage-on-return",
"lands_in": "damage_reports",
"steps": [
{
"alternative": "Record damage on return",
"expect": [
"Record damage on return"
],
"fields": [
{
"label": "Machine number",
"name": "machine",
"optional": false,
"options": [],
"type": "text"
},
{
"label": "Your hire reference",
"name": "hire_or_customer",
"optional": false,
"options": [],
"type": "text"
},
{
"label": "Describe the damage",
"name": "damage",
"optional": false,
"options": [],
"type": "textarea"
}
],
"options": [
{
"description": "Record damage found on a machine before the customer leaves.",
"name": "Record damage on return"
}
],
"page": "/yard/damage-on-return",
"question": "What damage was found on the machine?"
}
],
"success": [
"invoiced"
],
"wants": "it written down before the customer has left",
"who": "someone in the yard who finds damage when a machine comes back"
}
],
"personas": [
{
"id": "garden-wall",
"need": "hire-request",
"text": "I'm building a stone wall in the garden and need a small digger for a weekend. I've never driven one."
},
{
"id": "roofer-lift",
"need": "hire-request",
"text": "We're a roofing crew and need a scissor lift on site in Dalen from Monday for about two weeks."
},
{
"id": "stuck-compactor",
"need": "breakdown",
"text": "The plate compactor I picked up this morning won't start. I've got a crew standing around."
},
{
"id": "lift-error",
"need": "breakdown",
"text": "The lift you delivered keeps showing an error and stops halfway up. It's on our site at the school."
},
{
"id": "landscaper-account",
"need": "account-request",
"text": "We're a landscaping firm hiring from you almost every month and I'm tired of paying by card each time. Can we get invoiced monthly?"
},
{
"id": "builder-account",
"need": "account-request",
"text": "Small building firm, six people. We'd like to be able to send whoever is nearest to pick things up and have it on our account."
},
{
"id": "yard-window",
"need": "damage-on-return",
"text": "The mini digger from the Berg job came back with a smashed rear window and hydraulic oil everywhere."
}
]
}