Initial Ladill Queue release — enterprise QMS standalone app.
Deploy Ladill Queue / deploy (push) Successful in 56s
Deploy Ladill Queue / deploy (push) Successful in 56s
Phases 1–6: tickets, counters, displays, appointments, workflows, rules, analytics, reports, feedback, admin, device API, and Gitea deploy workflow for queue.ladill.com. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+216
@@ -0,0 +1,216 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'roles' => [
|
||||
'super_admin' => 'Super Administrator',
|
||||
'org_admin' => 'Organization Administrator',
|
||||
'branch_manager' => 'Branch Manager',
|
||||
'receptionist' => 'Receptionist',
|
||||
'queue_operator' => 'Queue Operator',
|
||||
'counter_staff' => 'Counter Staff',
|
||||
'department_manager' => 'Department Manager',
|
||||
'security' => 'Security',
|
||||
'supervisor' => 'Supervisor',
|
||||
],
|
||||
|
||||
'department_types' => [
|
||||
'general' => 'General',
|
||||
'reception' => 'Reception',
|
||||
'customer_service' => 'Customer Service',
|
||||
'cashier' => 'Cashier',
|
||||
'consultation' => 'Consultation',
|
||||
'laboratory' => 'Laboratory',
|
||||
'pharmacy' => 'Pharmacy',
|
||||
'verification' => 'Document Verification',
|
||||
'payments' => 'Payments',
|
||||
'collections' => 'Collections',
|
||||
'technical_support' => 'Technical Support',
|
||||
],
|
||||
|
||||
'queue_strategies' => [
|
||||
'fifo' => 'First In, First Out',
|
||||
'priority' => 'Priority Queue',
|
||||
'vip' => 'VIP Queue',
|
||||
'appointment' => 'Appointment Queue',
|
||||
'emergency' => 'Emergency Queue',
|
||||
'department' => 'Department Queue',
|
||||
'skill' => 'Skill-based Routing',
|
||||
'dynamic' => 'Dynamic Routing',
|
||||
'overflow' => 'Overflow Routing',
|
||||
],
|
||||
|
||||
'ticket_priorities' => [
|
||||
'emergency' => 'Emergency',
|
||||
'vip' => 'VIP',
|
||||
'elderly' => 'Elderly',
|
||||
'disabled' => 'Disabled',
|
||||
'appointment' => 'Appointment',
|
||||
'walk_in' => 'Walk-in',
|
||||
],
|
||||
|
||||
'ticket_statuses' => [
|
||||
'waiting' => 'Waiting',
|
||||
'called' => 'Called',
|
||||
'serving' => 'Serving',
|
||||
'on_hold' => 'On Hold',
|
||||
'completed' => 'Completed',
|
||||
'no_show' => 'No Show',
|
||||
'cancelled' => 'Cancelled',
|
||||
'transferred' => 'Transferred',
|
||||
],
|
||||
|
||||
'ticket_sources' => [
|
||||
'kiosk' => 'Kiosk',
|
||||
'reception' => 'Reception Desk',
|
||||
'mobile' => 'Mobile App',
|
||||
'web' => 'Website',
|
||||
'api' => 'API',
|
||||
'appointment' => 'Appointment Check-in',
|
||||
'tablet' => 'Self-service Tablet',
|
||||
],
|
||||
|
||||
'counter_statuses' => [
|
||||
'available' => 'Available',
|
||||
'busy' => 'Busy',
|
||||
'offline' => 'Offline',
|
||||
'paused' => 'Paused',
|
||||
],
|
||||
|
||||
'appointment_modes' => [
|
||||
'appointment_only' => 'Appointment Only',
|
||||
'walk_in_only' => 'Walk-in Only',
|
||||
'hybrid' => 'Hybrid',
|
||||
],
|
||||
|
||||
'device_types' => [
|
||||
'kiosk' => 'Touchscreen Kiosk',
|
||||
'tablet' => 'Tablet',
|
||||
'printer' => 'Ticket Printer',
|
||||
'scanner' => 'Barcode/QR Scanner',
|
||||
'display' => 'Counter Display',
|
||||
'feedback_tablet' => 'Feedback Tablet',
|
||||
],
|
||||
|
||||
'display_layouts' => [
|
||||
'standard' => 'Standard',
|
||||
'compact' => 'Compact',
|
||||
'split' => 'Split Screen',
|
||||
'media' => 'Media + Queue',
|
||||
],
|
||||
|
||||
'announcement_templates' => [
|
||||
'en' => 'Ticket :ticket, please proceed to :counter.',
|
||||
'fr' => 'Ticket :ticket, veuillez vous rendre au :counter.',
|
||||
'tw' => 'Ticket :ticket, mesrɛ kɔ :counter.',
|
||||
],
|
||||
|
||||
'industry_templates' => [
|
||||
'healthcare' => 'Healthcare',
|
||||
'banking' => 'Banking',
|
||||
'government' => 'Government Office',
|
||||
'visitor' => 'Visitor Management',
|
||||
'university' => 'University',
|
||||
'retail' => 'Retail',
|
||||
'telecom' => 'Telecom Service Centre',
|
||||
'custom' => 'Custom',
|
||||
],
|
||||
|
||||
'audit_actions' => [
|
||||
'organization.created' => 'Organization created',
|
||||
'organization.updated' => 'Organization updated',
|
||||
'branch.created' => 'Branch created',
|
||||
'branch.updated' => 'Branch updated',
|
||||
'department.created' => 'Department created',
|
||||
'department.updated' => 'Department updated',
|
||||
'department.deleted' => 'Department deleted',
|
||||
'member.created' => 'Member added',
|
||||
'member.updated' => 'Member updated',
|
||||
'member.deleted' => 'Member removed',
|
||||
'service_queue.created' => 'Queue created',
|
||||
'service_queue.updated' => 'Queue updated',
|
||||
'service_queue.deleted' => 'Queue archived',
|
||||
'service_queue.paused' => 'Queue paused',
|
||||
'service_queue.resumed' => 'Queue resumed',
|
||||
'counter.created' => 'Counter created',
|
||||
'counter.updated' => 'Counter updated',
|
||||
'counter.deleted' => 'Counter archived',
|
||||
'ticket.issued' => 'Ticket issued',
|
||||
'ticket.called' => 'Ticket called',
|
||||
'ticket.recalled' => 'Ticket recalled',
|
||||
'ticket.skipped' => 'Ticket skipped',
|
||||
'ticket.transferred' => 'Ticket transferred',
|
||||
'ticket.held' => 'Ticket placed on hold',
|
||||
'ticket.completed' => 'Service completed',
|
||||
'ticket.no_show' => 'Ticket marked no-show',
|
||||
'ticket.cancelled' => 'Ticket cancelled',
|
||||
'appointment.created' => 'Appointment scheduled',
|
||||
'appointment.checked_in' => 'Appointment checked in',
|
||||
'appointment.cancelled' => 'Appointment cancelled',
|
||||
'workflow.created' => 'Workflow created',
|
||||
'workflow.updated' => 'Workflow updated',
|
||||
'display.created' => 'Display screen created',
|
||||
'display.updated' => 'Display screen updated',
|
||||
'device.created' => 'Device registered',
|
||||
'device.updated' => 'Device updated',
|
||||
'feedback.submitted' => 'Customer feedback submitted',
|
||||
],
|
||||
|
||||
'notification_templates' => [
|
||||
'issued' => 'Your ticket :ticket is confirmed for :queue. We will notify you when it is almost your turn.',
|
||||
'called' => 'Ticket :ticket — please proceed to :counter now.',
|
||||
'almost_ready' => 'Ticket :ticket — you are :ahead customer(s) away. Please head to the waiting area.',
|
||||
'completed' => 'Thank you for visiting. Ticket :ticket is complete. Share feedback: :feedback_url',
|
||||
'missed' => 'Ticket :ticket was marked as missed. Please rejoin the queue if you still need service.',
|
||||
],
|
||||
|
||||
'report_types' => [
|
||||
'tickets' => 'Ticket volume & throughput',
|
||||
'wait_times' => 'Wait times & peak hours',
|
||||
'counters' => 'Counter performance',
|
||||
'appointments' => 'Appointments',
|
||||
'feedback' => 'Customer satisfaction',
|
||||
'service_sessions' => 'Service sessions',
|
||||
],
|
||||
|
||||
'plans' => [
|
||||
'free' => [
|
||||
'label' => 'Free',
|
||||
'max_branches' => 1,
|
||||
'max_queues' => 5,
|
||||
],
|
||||
'pro' => [
|
||||
'label' => 'Pro',
|
||||
'max_branches' => null,
|
||||
'max_queues' => null,
|
||||
],
|
||||
],
|
||||
|
||||
'rule_types' => [
|
||||
'overflow' => 'Overflow routing',
|
||||
'priority_boost' => 'Priority boost',
|
||||
'routing' => 'Dynamic routing',
|
||||
'capacity' => 'Capacity limit',
|
||||
],
|
||||
|
||||
'workflow_templates' => [
|
||||
'healthcare' => [
|
||||
['name' => 'Registration', 'sort_order' => 1],
|
||||
['name' => 'Triage', 'sort_order' => 2],
|
||||
['name' => 'Consultation', 'sort_order' => 3],
|
||||
['name' => 'Pharmacy', 'sort_order' => 4],
|
||||
],
|
||||
'banking' => [
|
||||
['name' => 'Reception', 'sort_order' => 1],
|
||||
['name' => 'Teller', 'sort_order' => 2],
|
||||
['name' => 'Customer service', 'sort_order' => 3],
|
||||
],
|
||||
'government' => [
|
||||
['name' => 'Document check', 'sort_order' => 1],
|
||||
['name' => 'Processing', 'sort_order' => 2],
|
||||
['name' => 'Collection', 'sort_order' => 3],
|
||||
],
|
||||
'custom' => [],
|
||||
],
|
||||
|
||||
];
|
||||
Reference in New Issue
Block a user