Files
ladill-queue/config/industry_packages.php
T
isaaccladandCursor a4d8775a82
Deploy Ladill Queue / deploy (push) Successful in 1m39s
Add industry packages that provision workflow stages on onboarding.
Queue Core stays generic; selecting Healthcare, Banking, Restaurant, and other industries installs departments, stages (queues), service points, workflows, terminology, and announcement profiles without code changes per vertical. Care-linked orgs skip stage materialization so Care remains the clinical provisioner.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-17 18:00:31 +00:00

1248 lines
56 KiB
PHP

<?php
/**
* Industry packages configure the Queue Core without embedding industry logic in the engine.
*
* Mapping to core entities:
* - department → Department
* - stage → ServiceQueue (ticket pool + workflow step)
* - service_point → Counter
* - terminology / announcements / display → organization.settings.industry_package
*/
return [
'version' => 1,
'packages' => [
'healthcare' => [
'label' => 'Healthcare',
'description' => 'Hospitals and clinics — multi-department patient journeys with doctor-specific service points.',
'ticket_entity' => 'patient',
'integrations' => ['care'],
'display_layout' => 'standard',
'terminology' => [
'ticket' => 'Patient',
'tickets' => 'Patients',
'queue' => 'Waiting list',
'service_point' => 'Room / desk',
'worker' => 'Clinician',
'customer' => 'Patient',
'call_next' => 'Call next patient',
],
'announcement' => [
'en' => 'Patient :ticket, please proceed to :destination.',
'fr' => 'Patient :ticket, veuillez vous rendre au :destination.',
'with_staff' => ':ticket, :staff, :destination.',
],
'kpis' => [
'avg_wait_time',
'consultation_time',
'doctor_utilization',
'patient_throughput',
],
'workflow' => [
'name' => 'Patient journey',
'description' => 'Registration through discharge',
],
'departments' => [
['code' => 'reception', 'name' => 'Registration', 'type' => 'reception'],
['code' => 'triage', 'name' => 'Triage', 'type' => 'consultation'],
['code' => 'consultation', 'name' => 'Consultation', 'type' => 'consultation'],
['code' => 'laboratory', 'name' => 'Laboratory', 'type' => 'laboratory'],
['code' => 'imaging', 'name' => 'Imaging', 'type' => 'laboratory'],
['code' => 'pharmacy', 'name' => 'Pharmacy', 'type' => 'pharmacy'],
['code' => 'billing', 'name' => 'Billing', 'type' => 'cashier'],
],
'stages' => [
[
'code' => 'reception',
'department' => 'reception',
'name' => 'Registration',
'prefix' => 'R',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'optional' => false,
'service_points' => [
['name' => 'Registration Desk 1', 'destination' => 'Registration Desk 1', 'code' => 'RD1'],
],
],
[
'code' => 'triage',
'department' => 'triage',
'name' => 'Triage',
'prefix' => 'T',
'strategy' => 'priority',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'manual_assignment',
'optional' => true,
'service_points' => [
['name' => 'Triage Station 1', 'destination' => 'Triage Station 1', 'code' => 'TS1'],
],
],
[
'code' => 'consultation',
'department' => 'consultation',
'name' => 'Consultation',
'prefix' => 'C',
'strategy' => 'appointment',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'doctor_assignment',
'optional' => false,
'service_points' => [
['name' => 'Consultation Room 1', 'destination' => 'Consultation Room 1', 'code' => 'CR1'],
],
],
[
'code' => 'laboratory',
'department' => 'laboratory',
'name' => 'Laboratory',
'prefix' => 'L',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'least_busy',
'optional' => true,
'service_points' => [
['name' => 'Sample Collection Desk 1', 'destination' => 'Sample Desk 1', 'code' => 'LD1'],
],
],
[
'code' => 'imaging',
'department' => 'imaging',
'name' => 'Imaging',
'prefix' => 'I',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'skill_based',
'optional' => true,
'service_points' => [
['name' => 'X-Ray', 'destination' => 'X-Ray Room', 'code' => 'XR1'],
],
],
[
'code' => 'pharmacy',
'department' => 'pharmacy',
'name' => 'Pharmacy',
'prefix' => 'P',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'least_busy',
'optional' => false,
'service_points' => [
['name' => 'Pharmacy Counter 1', 'destination' => 'Pharmacy Counter 1', 'code' => 'PC1'],
],
],
[
'code' => 'billing',
'department' => 'billing',
'name' => 'Billing',
'prefix' => 'B',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'round_robin',
'optional' => false,
'service_points' => [
['name' => 'Cashier 1', 'destination' => 'Cashier 1', 'code' => 'CA1'],
],
],
],
],
'restaurant' => [
'label' => 'Restaurant',
'description' => 'Kitchen production queues and pickup — integrates with Ladill POS.',
'ticket_entity' => 'order',
'integrations' => ['pos'],
'display_layout' => 'split',
'terminology' => [
'ticket' => 'Order',
'tickets' => 'Orders',
'queue' => 'Kitchen queue',
'service_point' => 'Station',
'worker' => 'Cook',
'customer' => 'Guest',
'call_next' => 'Bump next order',
],
'announcement' => [
'en' => 'Order :ticket is ready for pickup.',
'fr' => 'Commande :ticket prête à emporter.',
'with_staff' => 'Order :ticket — :destination.',
],
'kpis' => [
'kitchen_prep_time',
'order_completion_time',
'station_utilization',
],
'workflow' => [
'name' => 'Kitchen production',
'description' => 'Order through pickup',
],
'departments' => [
['code' => 'orders', 'name' => 'Orders', 'type' => 'general'],
['code' => 'kitchen', 'name' => 'Kitchen', 'type' => 'general'],
['code' => 'packing', 'name' => 'Packing', 'type' => 'general'],
['code' => 'pickup', 'name' => 'Pickup', 'type' => 'collections'],
],
'stages' => [
[
'code' => 'orders',
'department' => 'orders',
'name' => 'New orders',
'prefix' => 'O',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [
['name' => 'Expo', 'destination' => 'Expo', 'code' => 'EX1'],
],
],
[
'code' => 'grill',
'department' => 'kitchen',
'name' => 'Grill',
'prefix' => 'G',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'skill_based',
'service_points' => [
['name' => 'Grill Station', 'destination' => 'Grill', 'code' => 'GR1'],
],
],
[
'code' => 'fryer',
'department' => 'kitchen',
'name' => 'Fryer',
'prefix' => 'F',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'skill_based',
'service_points' => [
['name' => 'Fryer Station', 'destination' => 'Fryer', 'code' => 'FR1'],
],
],
[
'code' => 'drinks',
'department' => 'kitchen',
'name' => 'Drinks',
'prefix' => 'D',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'least_busy',
'service_points' => [
['name' => 'Drinks Station', 'destination' => 'Drinks', 'code' => 'DR1'],
],
],
[
'code' => 'packing',
'department' => 'packing',
'name' => 'Packing',
'prefix' => 'K',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [
['name' => 'Packing Bench', 'destination' => 'Packing', 'code' => 'PK1'],
],
],
[
'code' => 'pickup',
'department' => 'pickup',
'name' => 'Pickup',
'prefix' => 'U',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [
['name' => 'Pickup Counter', 'destination' => 'Pickup', 'code' => 'PU1'],
],
],
],
],
'banking' => [
'label' => 'Banking',
'description' => 'Central ticketing with next-available tellers and specialty desks.',
'ticket_entity' => 'customer',
'integrations' => [],
'display_layout' => 'standard',
'terminology' => [
'ticket' => 'Ticket',
'tickets' => 'Tickets',
'queue' => 'Queue',
'service_point' => 'Counter',
'worker' => 'Teller',
'customer' => 'Customer',
'call_next' => 'Call next',
],
'announcement' => [
'en' => 'Ticket :ticket, please proceed to :destination.',
'fr' => 'Ticket :ticket, veuillez vous rendre au :destination.',
'with_staff' => 'Ticket :ticket, please proceed to :destination.',
],
'kpis' => [
'teller_efficiency',
'sla_compliance',
'queue_abandonment',
],
'workflow' => [
'name' => 'Branch visit',
'description' => 'Reception through service exit',
],
'departments' => [
['code' => 'reception', 'name' => 'Reception', 'type' => 'reception'],
['code' => 'teller', 'name' => 'Teller', 'type' => 'cashier'],
['code' => 'customer_service', 'name' => 'Customer Service', 'type' => 'customer_service'],
['code' => 'loans', 'name' => 'Loans', 'type' => 'general'],
['code' => 'accounts', 'name' => 'Account Opening', 'type' => 'general'],
['code' => 'forex', 'name' => 'Foreign Exchange', 'type' => 'cashier'],
],
'stages' => [
[
'code' => 'reception',
'department' => 'reception',
'name' => 'Reception',
'prefix' => 'A',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [
['name' => 'Reception Desk', 'destination' => 'Reception', 'code' => 'R1'],
],
],
[
'code' => 'teller',
'department' => 'teller',
'name' => 'Teller',
'prefix' => 'T',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'least_busy',
'service_points' => [
['name' => 'Teller 1', 'destination' => 'Counter 1', 'code' => 'T1'],
['name' => 'Teller 2', 'destination' => 'Counter 2', 'code' => 'T2'],
],
],
[
'code' => 'customer_service',
'department' => 'customer_service',
'name' => 'Customer Service',
'prefix' => 'S',
'strategy' => 'priority',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'skill_based',
'service_points' => [
['name' => 'Service Desk 1', 'destination' => 'Service Desk 1', 'code' => 'S1'],
],
],
[
'code' => 'loans',
'department' => 'loans',
'name' => 'Loans',
'prefix' => 'L',
'strategy' => 'appointment',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'manual_assignment',
'optional' => true,
'service_points' => [
['name' => 'Loans Desk', 'destination' => 'Loans Desk', 'code' => 'LN1'],
],
],
[
'code' => 'accounts',
'department' => 'accounts',
'name' => 'Account Opening',
'prefix' => 'N',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'optional' => true,
'service_points' => [
['name' => 'Accounts Desk', 'destination' => 'Accounts Desk', 'code' => 'AC1'],
],
],
[
'code' => 'forex',
'department' => 'forex',
'name' => 'Foreign Exchange',
'prefix' => 'X',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'optional' => true,
'service_points' => [
['name' => 'Forex Counter', 'destination' => 'Forex', 'code' => 'FX1'],
],
],
],
],
'government' => [
'label' => 'Government Office',
'description' => 'Passport, DVLA, tax, and municipal service workflows.',
'ticket_entity' => 'application',
'integrations' => [],
'display_layout' => 'standard',
'terminology' => [
'ticket' => 'Application',
'tickets' => 'Applications',
'queue' => 'Queue',
'service_point' => 'Window',
'worker' => 'Officer',
'customer' => 'Citizen',
'call_next' => 'Call next',
],
'announcement' => [
'en' => 'Application :ticket, please proceed to :destination.',
'with_staff' => 'Application :ticket, please proceed to :destination.',
],
'kpis' => ['processing_time', 'applications_completed'],
'workflow' => ['name' => 'Citizen service', 'description' => 'Reception through collection'],
'departments' => [
['code' => 'reception', 'name' => 'Reception', 'type' => 'reception'],
['code' => 'verification', 'name' => 'Verification', 'type' => 'verification'],
['code' => 'processing', 'name' => 'Processing', 'type' => 'general'],
['code' => 'payment', 'name' => 'Payment', 'type' => 'payments'],
['code' => 'collection', 'name' => 'Collection', 'type' => 'collections'],
],
'stages' => [
[
'code' => 'reception',
'department' => 'reception',
'name' => 'Reception',
'prefix' => 'A',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Reception', 'destination' => 'Reception', 'code' => 'R1']],
],
[
'code' => 'verification',
'department' => 'verification',
'name' => 'Verification',
'prefix' => 'V',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Verification Window', 'destination' => 'Window 1', 'code' => 'V1']],
],
[
'code' => 'processing',
'department' => 'processing',
'name' => 'Processing',
'prefix' => 'P',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'least_busy',
'service_points' => [['name' => 'Processing Desk', 'destination' => 'Processing', 'code' => 'P1']],
],
[
'code' => 'payment',
'department' => 'payment',
'name' => 'Payment',
'prefix' => 'Y',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Payment Counter', 'destination' => 'Payments', 'code' => 'Y1']],
],
[
'code' => 'collection',
'department' => 'collection',
'name' => 'Collection',
'prefix' => 'C',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Collection Window', 'destination' => 'Collection', 'code' => 'C1']],
],
],
],
'retail_service' => [
'label' => 'Retail Service Centre',
'description' => 'Phone, electronics, and appliance repair centres.',
'ticket_entity' => 'device',
'integrations' => [],
'display_layout' => 'compact',
'terminology' => [
'ticket' => 'Job',
'tickets' => 'Jobs',
'queue' => 'Workbench queue',
'service_point' => 'Bench',
'worker' => 'Technician',
'customer' => 'Customer',
'call_next' => 'Call next job',
],
'announcement' => [
'en' => 'Job :ticket, please proceed to :destination.',
'with_staff' => 'Job :ticket — :destination.',
],
'kpis' => ['avg_repair_duration', 'bench_utilization'],
'workflow' => ['name' => 'Repair journey', 'description' => 'Reception through pickup'],
'departments' => [
['code' => 'reception', 'name' => 'Reception', 'type' => 'reception'],
['code' => 'diagnosis', 'name' => 'Diagnosis', 'type' => 'technical_support'],
['code' => 'repair', 'name' => 'Repair', 'type' => 'technical_support'],
['code' => 'qc', 'name' => 'Quality Check', 'type' => 'verification'],
['code' => 'pickup', 'name' => 'Pickup', 'type' => 'collections'],
],
'stages' => [
[
'code' => 'reception',
'department' => 'reception',
'name' => 'Reception',
'prefix' => 'R',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Front Desk', 'destination' => 'Front Desk', 'code' => 'FD1']],
],
[
'code' => 'diagnosis',
'department' => 'diagnosis',
'name' => 'Diagnosis',
'prefix' => 'D',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'skill_based',
'service_points' => [['name' => 'Diagnosis Bench', 'destination' => 'Diagnosis', 'code' => 'DB1']],
],
[
'code' => 'repair',
'department' => 'repair',
'name' => 'Repair',
'prefix' => 'X',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'skill_based',
'service_points' => [['name' => 'Repair Bench 1', 'destination' => 'Bench 1', 'code' => 'RB1']],
],
[
'code' => 'qc',
'department' => 'qc',
'name' => 'Quality Check',
'prefix' => 'Q',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'QC Desk', 'destination' => 'QC', 'code' => 'QC1']],
],
[
'code' => 'pickup',
'department' => 'pickup',
'name' => 'Pickup',
'prefix' => 'P',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Pickup Counter', 'destination' => 'Pickup', 'code' => 'PU1']],
],
],
],
'vehicle' => [
'label' => 'Vehicle Service Centre',
'description' => 'Inspection, mechanic bays, electrical, wash, and release.',
'ticket_entity' => 'vehicle',
'integrations' => [],
'display_layout' => 'split',
'terminology' => [
'ticket' => 'Vehicle',
'tickets' => 'Vehicles',
'queue' => 'Bay queue',
'service_point' => 'Bay',
'worker' => 'Technician',
'customer' => 'Owner',
'call_next' => 'Call next vehicle',
],
'announcement' => [
'en' => 'Vehicle :ticket, please proceed to :destination.',
'with_staff' => 'Vehicle :ticket — :destination.',
],
'kpis' => ['avg_repair_duration', 'bay_utilization'],
'workflow' => ['name' => 'Vehicle service', 'description' => 'Reception through release'],
'departments' => [
['code' => 'reception', 'name' => 'Reception', 'type' => 'reception'],
['code' => 'inspection', 'name' => 'Inspection', 'type' => 'verification'],
['code' => 'mechanic', 'name' => 'Mechanic', 'type' => 'technical_support'],
['code' => 'electrical', 'name' => 'Electrical', 'type' => 'technical_support'],
['code' => 'wash', 'name' => 'Wash', 'type' => 'general'],
['code' => 'billing', 'name' => 'Billing', 'type' => 'payments'],
],
'stages' => [
[
'code' => 'reception',
'department' => 'reception',
'name' => 'Reception',
'prefix' => 'V',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Service Desk', 'destination' => 'Reception', 'code' => 'SD1']],
],
[
'code' => 'inspection',
'department' => 'inspection',
'name' => 'Inspection',
'prefix' => 'I',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Inspection Bay', 'destination' => 'Inspection', 'code' => 'IB1']],
],
[
'code' => 'mechanic',
'department' => 'mechanic',
'name' => 'Mechanic',
'prefix' => 'M',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'skill_based',
'service_points' => [
['name' => 'Bay 1', 'destination' => 'Bay 1', 'code' => 'B1'],
['name' => 'Bay 2', 'destination' => 'Bay 2', 'code' => 'B2'],
],
],
[
'code' => 'electrical',
'department' => 'electrical',
'name' => 'Electrical',
'prefix' => 'E',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'skill_based',
'optional' => true,
'service_points' => [['name' => 'Electrical Bay', 'destination' => 'Electrical', 'code' => 'EB1']],
],
[
'code' => 'wash',
'department' => 'wash',
'name' => 'Wash',
'prefix' => 'W',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'optional' => true,
'service_points' => [['name' => 'Wash Bay', 'destination' => 'Wash', 'code' => 'WB1']],
],
[
'code' => 'billing',
'department' => 'billing',
'name' => 'Billing',
'prefix' => 'B',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Cashier', 'destination' => 'Billing', 'code' => 'CA1']],
],
],
],
'hospitality' => [
'label' => 'Hotel / Hospitality',
'description' => 'Check-in, concierge, guest services, and checkout.',
'ticket_entity' => 'guest',
'integrations' => [],
'display_layout' => 'compact',
'terminology' => [
'ticket' => 'Guest',
'tickets' => 'Guests',
'queue' => 'Front desk queue',
'service_point' => 'Desk',
'worker' => 'Agent',
'customer' => 'Guest',
'call_next' => 'Call next guest',
],
'announcement' => [
'en' => 'Guest :ticket, please proceed to :destination.',
'with_staff' => 'Guest :ticket — :destination.',
],
'kpis' => ['checkin_time', 'desk_utilization'],
'workflow' => ['name' => 'Guest journey', 'description' => 'Arrival through checkout'],
'departments' => [
['code' => 'reception', 'name' => 'Reception', 'type' => 'reception'],
['code' => 'checkin', 'name' => 'Check-in', 'type' => 'general'],
['code' => 'concierge', 'name' => 'Concierge', 'type' => 'customer_service'],
['code' => 'checkout', 'name' => 'Checkout', 'type' => 'cashier'],
],
'stages' => [
[
'code' => 'reception',
'department' => 'reception',
'name' => 'Reception',
'prefix' => 'H',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Lobby Desk', 'destination' => 'Lobby', 'code' => 'LB1']],
],
[
'code' => 'checkin',
'department' => 'checkin',
'name' => 'Check-in',
'prefix' => 'C',
'strategy' => 'appointment',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'least_busy',
'service_points' => [['name' => 'Check-in Desk 1', 'destination' => 'Check-in 1', 'code' => 'CI1']],
],
[
'code' => 'concierge',
'department' => 'concierge',
'name' => 'Concierge',
'prefix' => 'G',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'optional' => true,
'service_points' => [['name' => 'Concierge Desk', 'destination' => 'Concierge', 'code' => 'CG1']],
],
[
'code' => 'checkout',
'department' => 'checkout',
'name' => 'Checkout',
'prefix' => 'X',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Checkout Desk', 'destination' => 'Checkout', 'code' => 'CO1']],
],
],
],
'logistics' => [
'label' => 'Logistics',
'description' => 'Dock allocation, loading, inspection, and dispatch.',
'ticket_entity' => 'shipment',
'integrations' => [],
'display_layout' => 'compact',
'terminology' => [
'ticket' => 'Shipment',
'tickets' => 'Shipments',
'queue' => 'Dock queue',
'service_point' => 'Dock',
'worker' => 'Handler',
'customer' => 'Carrier',
'call_next' => 'Call next shipment',
],
'announcement' => [
'en' => 'Shipment :ticket, please proceed to :destination.',
'with_staff' => 'Shipment :ticket — :destination.',
],
'kpis' => ['dock_turnaround', 'dispatch_time'],
'workflow' => ['name' => 'Yard operations', 'description' => 'Arrival through dispatch'],
'departments' => [
['code' => 'arrival', 'name' => 'Arrival', 'type' => 'reception'],
['code' => 'dock', 'name' => 'Dock Allocation', 'type' => 'general'],
['code' => 'loading', 'name' => 'Loading', 'type' => 'general'],
['code' => 'inspection', 'name' => 'Inspection', 'type' => 'verification'],
['code' => 'dispatch', 'name' => 'Dispatch', 'type' => 'collections'],
],
'stages' => [
[
'code' => 'arrival',
'department' => 'arrival',
'name' => 'Arrival',
'prefix' => 'A',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Gate', 'destination' => 'Gate', 'code' => 'GT1']],
],
[
'code' => 'dock',
'department' => 'dock',
'name' => 'Dock Allocation',
'prefix' => 'D',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'least_busy',
'service_points' => [
['name' => 'Dock 1', 'destination' => 'Dock 1', 'code' => 'D1'],
['name' => 'Dock 2', 'destination' => 'Dock 2', 'code' => 'D2'],
],
],
[
'code' => 'loading',
'department' => 'loading',
'name' => 'Loading',
'prefix' => 'L',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'manual_assignment',
'service_points' => [['name' => 'Loading Bay', 'destination' => 'Loading', 'code' => 'LB1']],
],
[
'code' => 'inspection',
'department' => 'inspection',
'name' => 'Inspection',
'prefix' => 'I',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Inspection', 'destination' => 'Inspection', 'code' => 'IN1']],
],
[
'code' => 'dispatch',
'department' => 'dispatch',
'name' => 'Dispatch',
'prefix' => 'X',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Dispatch Office', 'destination' => 'Dispatch', 'code' => 'DX1']],
],
],
],
'university' => [
'label' => 'University',
'description' => 'Admissions, finance, registrar, library, and student affairs.',
'ticket_entity' => 'student',
'integrations' => [],
'display_layout' => 'standard',
'terminology' => [
'ticket' => 'Ticket',
'tickets' => 'Tickets',
'queue' => 'Queue',
'service_point' => 'Desk',
'worker' => 'Officer',
'customer' => 'Student',
'call_next' => 'Call next',
],
'announcement' => [
'en' => 'Ticket :ticket, please proceed to :destination.',
'with_staff' => 'Ticket :ticket — :destination.',
],
'kpis' => ['avg_wait_time', 'desk_throughput'],
'workflow' => ['name' => 'Student services', 'description' => 'Campus service desks'],
'departments' => [
['code' => 'admissions', 'name' => 'Admissions', 'type' => 'reception'],
['code' => 'finance', 'name' => 'Finance', 'type' => 'payments'],
['code' => 'registrar', 'name' => 'Registrar', 'type' => 'general'],
['code' => 'library', 'name' => 'Library', 'type' => 'general'],
['code' => 'student_affairs', 'name' => 'Student Affairs', 'type' => 'customer_service'],
],
'stages' => [
[
'code' => 'admissions',
'department' => 'admissions',
'name' => 'Admissions',
'prefix' => 'A',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Admissions Desk', 'destination' => 'Admissions', 'code' => 'AD1']],
],
[
'code' => 'finance',
'department' => 'finance',
'name' => 'Finance',
'prefix' => 'F',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Finance Counter', 'destination' => 'Finance', 'code' => 'FN1']],
],
[
'code' => 'registrar',
'department' => 'registrar',
'name' => 'Registrar',
'prefix' => 'R',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Registrar Desk', 'destination' => 'Registrar', 'code' => 'RG1']],
],
[
'code' => 'library',
'department' => 'library',
'name' => 'Library',
'prefix' => 'L',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'optional' => true,
'service_points' => [['name' => 'Library Desk', 'destination' => 'Library', 'code' => 'LB1']],
],
[
'code' => 'student_affairs',
'department' => 'student_affairs',
'name' => 'Student Affairs',
'prefix' => 'S',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'optional' => true,
'service_points' => [['name' => 'Student Affairs', 'destination' => 'Student Affairs', 'code' => 'SA1']],
],
],
],
'telecom' => [
'label' => 'Telecom Service Centre',
'description' => 'SIM registration, customer care, technical support, and device repair.',
'ticket_entity' => 'customer',
'integrations' => [],
'display_layout' => 'standard',
'terminology' => [
'ticket' => 'Ticket',
'tickets' => 'Tickets',
'queue' => 'Queue',
'service_point' => 'Counter',
'worker' => 'Agent',
'customer' => 'Customer',
'call_next' => 'Call next',
],
'announcement' => [
'en' => 'Ticket :ticket, please proceed to :destination.',
'with_staff' => 'Ticket :ticket — :destination.',
],
'kpis' => ['avg_wait_time', 'agent_utilization'],
'workflow' => ['name' => 'Store visit', 'description' => 'Reception through support'],
'departments' => [
['code' => 'reception', 'name' => 'Reception', 'type' => 'reception'],
['code' => 'sim', 'name' => 'SIM Registration', 'type' => 'general'],
['code' => 'care', 'name' => 'Customer Care', 'type' => 'customer_service'],
['code' => 'tech', 'name' => 'Technical Support', 'type' => 'technical_support'],
['code' => 'repair', 'name' => 'Device Repair', 'type' => 'technical_support'],
],
'stages' => [
[
'code' => 'reception',
'department' => 'reception',
'name' => 'Reception',
'prefix' => 'A',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Reception', 'destination' => 'Reception', 'code' => 'R1']],
],
[
'code' => 'sim',
'department' => 'sim',
'name' => 'SIM Registration',
'prefix' => 'S',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'SIM Desk', 'destination' => 'SIM Desk', 'code' => 'SM1']],
],
[
'code' => 'care',
'department' => 'care',
'name' => 'Customer Care',
'prefix' => 'C',
'strategy' => 'priority',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'least_busy',
'service_points' => [['name' => 'Care Desk 1', 'destination' => 'Care 1', 'code' => 'CD1']],
],
[
'code' => 'tech',
'department' => 'tech',
'name' => 'Technical Support',
'prefix' => 'T',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'skill_based',
'service_points' => [['name' => 'Tech Desk', 'destination' => 'Tech Support', 'code' => 'TD1']],
],
[
'code' => 'repair',
'department' => 'repair',
'name' => 'Device Repair',
'prefix' => 'D',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'skill_based',
'optional' => true,
'service_points' => [['name' => 'Repair Bench', 'destination' => 'Repair', 'code' => 'RB1']],
],
],
],
'events' => [
'label' => 'Events',
'description' => 'Registration, badge printing, and hall entry.',
'ticket_entity' => 'attendee',
'integrations' => [],
'display_layout' => 'media',
'terminology' => [
'ticket' => 'Attendee',
'tickets' => 'Attendees',
'queue' => 'Line',
'service_point' => 'Station',
'worker' => 'Staff',
'customer' => 'Attendee',
'call_next' => 'Call next',
],
'announcement' => [
'en' => 'Attendee :ticket, please proceed to :destination.',
'with_staff' => 'Attendee :ticket — :destination.',
],
'kpis' => ['checkin_rate', 'entry_throughput'],
'workflow' => ['name' => 'Event entry', 'description' => 'Registration through hall'],
'departments' => [
['code' => 'registration', 'name' => 'Registration', 'type' => 'reception'],
['code' => 'badges', 'name' => 'Badge Printing', 'type' => 'general'],
['code' => 'entry', 'name' => 'Hall Entry', 'type' => 'security'],
],
'stages' => [
[
'code' => 'registration',
'department' => 'registration',
'name' => 'Registration',
'prefix' => 'E',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Reg Desk 1', 'destination' => 'Registration 1', 'code' => 'RD1']],
],
[
'code' => 'badges',
'department' => 'badges',
'name' => 'Badge Printing',
'prefix' => 'B',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Badge Station', 'destination' => 'Badges', 'code' => 'BD1']],
],
[
'code' => 'entry',
'department' => 'entry',
'name' => 'Hall Entry',
'prefix' => 'H',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Hall Gate', 'destination' => 'Hall Entrance', 'code' => 'HG1']],
],
],
],
'church' => [
'label' => 'Church',
'description' => 'Reception, counselling, pastoral sessions, and follow-up.',
'ticket_entity' => 'member',
'integrations' => [],
'display_layout' => 'compact',
'terminology' => [
'ticket' => 'Visitor',
'tickets' => 'Visitors',
'queue' => 'Waiting list',
'service_point' => 'Room',
'worker' => 'Counsellor',
'customer' => 'Member',
'call_next' => 'Call next',
],
'announcement' => [
'en' => 'Visitor :ticket, please proceed to :destination.',
'with_staff' => 'Visitor :ticket — :destination.',
],
'kpis' => ['session_time', 'followup_rate'],
'workflow' => ['name' => 'Pastoral care', 'description' => 'Reception through follow-up'],
'departments' => [
['code' => 'reception', 'name' => 'Reception', 'type' => 'reception'],
['code' => 'counselling', 'name' => 'Counselling', 'type' => 'consultation'],
['code' => 'pastoral', 'name' => 'Pastoral Session', 'type' => 'consultation'],
['code' => 'followup', 'name' => 'Follow-up', 'type' => 'customer_service'],
],
'stages' => [
[
'code' => 'reception',
'department' => 'reception',
'name' => 'Reception',
'prefix' => 'R',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Welcome Desk', 'destination' => 'Welcome Desk', 'code' => 'WD1']],
],
[
'code' => 'counselling',
'department' => 'counselling',
'name' => 'Counselling',
'prefix' => 'C',
'strategy' => 'appointment',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'manual_assignment',
'service_points' => [['name' => 'Counselling Room 1', 'destination' => 'Room 1', 'code' => 'CR1']],
],
[
'code' => 'pastoral',
'department' => 'pastoral',
'name' => 'Pastoral Session',
'prefix' => 'P',
'strategy' => 'appointment',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'manual_assignment',
'service_points' => [['name' => 'Pastoral Office', 'destination' => 'Pastoral Office', 'code' => 'PO1']],
],
[
'code' => 'followup',
'department' => 'followup',
'name' => 'Follow-up',
'prefix' => 'F',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'optional' => true,
'service_points' => [['name' => 'Follow-up Desk', 'destination' => 'Follow-up', 'code' => 'FU1']],
],
],
],
'visitor' => [
'label' => 'Visitor Management',
'description' => 'General visitor check-in and host queues.',
'ticket_entity' => 'visitor',
'integrations' => ['frontdesk'],
'display_layout' => 'standard',
'terminology' => [
'ticket' => 'Visitor',
'tickets' => 'Visitors',
'queue' => 'Queue',
'service_point' => 'Desk',
'worker' => 'Host',
'customer' => 'Visitor',
'call_next' => 'Call next visitor',
],
'announcement' => [
'en' => 'Visitor :ticket, please proceed to :destination.',
'with_staff' => 'Visitor :ticket — :destination.',
],
'kpis' => ['avg_wait_time', 'checkin_rate'],
'workflow' => ['name' => 'Visitor check-in', 'description' => 'Reception through host'],
'departments' => [
['code' => 'reception', 'name' => 'Reception', 'type' => 'reception'],
['code' => 'host', 'name' => 'Host', 'type' => 'general'],
],
'stages' => [
[
'code' => 'reception',
'department' => 'reception',
'name' => 'Reception',
'prefix' => 'V',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Reception Desk', 'destination' => 'Reception', 'code' => 'R1']],
],
[
'code' => 'host',
'department' => 'host',
'name' => 'Host Meeting',
'prefix' => 'H',
'strategy' => 'fifo',
'routing_mode' => 'assigned_only',
'routing_strategy' => 'manual_assignment',
'service_points' => [['name' => 'Meeting Room 1', 'destination' => 'Meeting Room 1', 'code' => 'MR1']],
],
],
],
'retail' => [
'label' => 'Retail',
'description' => 'General retail customer service and returns.',
'ticket_entity' => 'customer',
'integrations' => ['pos'],
'display_layout' => 'standard',
'terminology' => [
'ticket' => 'Ticket',
'tickets' => 'Tickets',
'queue' => 'Queue',
'service_point' => 'Counter',
'worker' => 'Associate',
'customer' => 'Customer',
'call_next' => 'Call next',
],
'announcement' => [
'en' => 'Ticket :ticket, please proceed to :destination.',
'with_staff' => 'Ticket :ticket — :destination.',
],
'kpis' => ['avg_wait_time', 'counter_utilization'],
'workflow' => ['name' => 'Store service', 'description' => 'Customer service flow'],
'departments' => [
['code' => 'reception', 'name' => 'Customer Service', 'type' => 'customer_service'],
['code' => 'returns', 'name' => 'Returns', 'type' => 'collections'],
['code' => 'cashier', 'name' => 'Cashier', 'type' => 'cashier'],
],
'stages' => [
[
'code' => 'reception',
'department' => 'reception',
'name' => 'Customer Service',
'prefix' => 'A',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Service Desk 1', 'destination' => 'Service Desk 1', 'code' => 'SD1']],
],
[
'code' => 'returns',
'department' => 'returns',
'name' => 'Returns',
'prefix' => 'R',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'optional' => true,
'service_points' => [['name' => 'Returns Counter', 'destination' => 'Returns', 'code' => 'RT1']],
],
[
'code' => 'cashier',
'department' => 'cashier',
'name' => 'Cashier',
'prefix' => 'C',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'least_busy',
'service_points' => [['name' => 'Cashier 1', 'destination' => 'Cashier 1', 'code' => 'CA1']],
],
],
],
'custom' => [
'label' => 'Custom',
'description' => 'Start with a blank canvas — add departments, stages, and service points yourself.',
'ticket_entity' => 'customer',
'integrations' => [],
'display_layout' => 'standard',
'terminology' => [
'ticket' => 'Ticket',
'tickets' => 'Tickets',
'queue' => 'Queue',
'service_point' => 'Counter',
'worker' => 'Staff',
'customer' => 'Customer',
'call_next' => 'Call next',
],
'announcement' => [
'en' => 'Ticket :ticket, please proceed to :destination.',
'with_staff' => 'Ticket :ticket — :destination.',
],
'kpis' => ['avg_wait_time'],
'workflow' => ['name' => 'Custom workflow', 'description' => 'Build your own stages'],
'departments' => [
['code' => 'reception', 'name' => 'General Reception', 'type' => 'reception'],
],
'stages' => [
[
'code' => 'reception',
'department' => 'reception',
'name' => 'Reception',
'prefix' => 'A',
'strategy' => 'fifo',
'routing_mode' => 'shared_pool',
'routing_strategy' => 'round_robin',
'service_points' => [['name' => 'Counter 1', 'destination' => 'Counter 1', 'code' => 'C1']],
],
],
],
],
];