Skip to main content

Available Reports

This guide covers all report types available in Shyfts, including their purpose, metrics, and use cases for workforce management analytics.


Overview

Report Categories

Shyfts provides 8 comprehensive report types covering all aspects of workforce management:

Report TypeIconPurpose
Staff PerformanceTrendingUpIndividual staff productivity metrics
Scheduling AnalyticsCalendarSchedule efficiency and coverage analysis
Attendance SummaryClockAttendance rates and patterns
Hours TrackingClockWorked hours and overtime analysis
Leave AnalysisCalendarLeave usage and patterns
Skills MatrixUsersStaff skills and certifications
Cost AnalysisDollarSignLabour costs and budget tracking
Compliance ReportShieldCheckWorking time regulations compliance

Report Type Definitions

// Source: src/types/reporting.ts:16-25
export type ReportType =
| 'STAFF_PERFORMANCE'
| 'SCHEDULING_ANALYTICS'
| 'ATTENDANCE_SUMMARY'
| 'HOURS_TRACKING'
| 'LEAVE_ANALYSIS'
| 'SKILLS_MATRIX'
| 'COST_ANALYSIS'
| 'COMPLIANCE_REPORT'

Staff Performance Report

Purpose

Analyse individual staff productivity, attendance patterns, and overall performance metrics.

Metrics Included

// Source: src/types/reporting.ts:55-90
interface StaffPerformanceData {
staff_id: string
staff_name: string
role: string
department: string
performance_metrics: {
attendance_rate: number // Percentage of scheduled shifts worked
punctuality_rate: number // On-time arrival percentage
shifts_completed: number // Total shifts in period
shifts_missed: number // Unattended shifts
average_shift_rating: number // Manager ratings (1-5)
}
productivity_metrics: {
hours_worked: number // Total hours
overtime_hours: number // Hours above threshold
efficiency_score: number // Calculated efficiency
}
time_tracking: {
total_hours: number
regular_hours: number
overtime_hours: number
break_hours: number
}
leave_summary: {
days_taken: number
days_remaining: number
pending_requests: number
}
}

Use Cases

ScenarioBenefit
Performance reviewsData-driven evaluation
Bonus calculationsFair productivity-based rewards
Training needsIdentify improvement areas
Resource planningUnderstand capacity

Sample Output

Staff NameAttendancePunctualityHours WorkedOvertime
Sarah Johnson98%95%168h8h
James Wilson94%88%156h4h
Emma Brown100%97%172h12h

Scheduling Analytics Report

Purpose

Analyse schedule efficiency, coverage rates, and resource utilisation across the organisation.

Metrics Included

// Source: src/types/reporting.ts:92-140
interface SchedulingAnalytics {
period: DateRange
coverage_metrics: {
total_shifts_required: number // Shifts needed
total_shifts_filled: number // Shifts assigned
coverage_percentage: number // Fill rate
unfilled_shifts: number // Gaps in schedule
overstaffed_periods: number // Excess staff
}
efficiency_metrics: {
staff_utilization: number // % of available hours used
average_hours_per_staff: number // Hours per person
scheduling_conflicts: number // Overlapping assignments
last_minute_changes: number // Changes within 24 hours
}
cost_metrics: {
total_labor_cost: number // Total wages
overtime_cost: number // OT premium costs
cost_per_shift: number // Average shift cost
budget_variance: number // Actual vs planned
}
room_utilization: {
room_id: string
room_name: string
utilization_rate: number
peak_hours: string[]
}[]
}

Key Indicators

MetricGoodWarningCritical
Coverage Rate≥95%85-94%<85%
Staff Utilisation80-90%70-79%<70% or >95%
Scheduling Conflicts01-5>5
Budget Variance±5%±10%>±10%

Visualisations

  • Coverage trend chart (daily/weekly)
  • Staff utilisation heatmap
  • Room utilisation by time of day
  • Cost breakdown pie chart

Attendance Summary Report

Purpose

Track attendance patterns, identify trends, and monitor staff reliability across the organisation.

Metrics Included

// Source: src/types/reporting.ts:142-175
interface AttendanceData {
staff_id: string
staff_name: string
role: string
attendance_metrics: {
attendance_rate: number // % of shifts attended
punctuality_rate: number // On-time percentage
early_departures: number // Left before end
late_arrivals: number // Arrived after start
no_shows: number // Didn't attend
}
time_tracking: {
scheduled_hours: number // Expected hours
actual_hours: number // Hours worked
total_hours: number // Total in period
overtime_hours: number // Above threshold
variance: number // Difference
}
patterns: {
best_days: string[] // Most reliable days
worst_days: string[] // Least reliable days
average_start_variance: number // Minutes early/late
}
}

Attendance Patterns

The system tracks attendance patterns to identify:

  1. Day-of-week trends - Which days have lowest attendance
  2. Time-of-day patterns - Peak absence hours
  3. Seasonal variations - Monthly/quarterly trends
  4. Individual patterns - Staff-specific attendance issues

Bradford Factor

// Bradford Factor calculation for absence patterns
// Source: src/types/database.types.ts:17-29
interface AbsencePattern {
absence_count: number // Number of absence instances
absence_days: number // Total days absent
bradford_factor: number // S² × D calculation
month: number
year: number
}
Bradford ScoreRisk LevelAction
0-50LowMonitor
51-124MediumReview
125-399HighDiscuss
400+CriticalFormal process

Hours Tracking Report

Purpose

Analyse hours worked, overtime patterns, and time efficiency across staff members.

Metrics Included

// Source: src/types/reporting.ts:210-250
interface HoursTrackingData {
staff_id: string
staff_name: string
role: string
period_summary: {
total_worked_hours: number // All hours
regular_hours: number // Standard hours
overtime_hours: number // Above threshold
break_hours: number // Time on breaks
net_hours: number // Worked minus breaks
efficiency_rate: number // Net/Scheduled %
}
daily_breakdown: {
date: string
scheduled_hours: number
actual_hours: number
overtime: number
breaks: number
}[]
weekly_totals: {
week_number: number
total_hours: number
overtime_hours: number
average_daily: number
}[]
}

Overtime Analysis

Overtime LevelDescriptionFlag
None0 hoursGreen
Moderate1-10 hoursYellow
High11-20 hoursOrange
Excessive>20 hoursRed

Efficiency Metrics

// Efficiency calculation
efficiency_rate = (net_hours / scheduled_hours) * 100

// Target ranges
const efficiencyTargets = {
excellent: { min: 95, max: 100 },
good: { min: 85, max: 94 },
acceptable: { min: 75, max: 84 },
poor: { min: 0, max: 74 }
}

Leave Analysis Report

Purpose

Analyse leave usage patterns, balance utilisation, and upcoming leave impact on scheduling.

Metrics Included

// Source: src/types/reporting.ts:252-290
interface LeaveAnalysisData {
staff_id: string
staff_name: string
role: string
leave_summary: {
total_entitlement: number // Annual allocation
used_days: number // Days taken
remaining_days: number // Days left
pending_requests: number // Awaiting approval
approved_leave_days: number // Approved in period
rejected_requests: number // Declined requests
}
leave_by_type: {
leave_type: string
days_used: number
days_remaining: number
}[]
upcoming_leave: {
start_date: string
end_date: string
days: number
type: string
}[]
patterns: {
peak_months: string[] // Most leave taken
average_request_lead_time: number // Days in advance
}
}

Leave Type Breakdown

Leave TypeColourTypical Allocation
Annual Leave#3B82F6 (Blue)25-28 days
Sick Leave#EF4444 (Red)10 days
Personal Leave#8B5CF6 (Purple)3-5 days
Compassionate#EC4899 (Pink)As needed
Study Leave#06B6D4 (Cyan)Policy-based

Impact Analysis

The report includes leave impact assessment:

  • Coverage gaps - Periods with potential understaffing
  • Approval recommendations - Based on team coverage
  • Carry-over projections - Unused leave forecasts

Skills Matrix Report

Purpose

Map staff skills, certifications, and identify training gaps across the organisation.

Metrics Included

// Source: src/types/reporting.ts:292-330
interface SkillsMatrixData {
skills_overview: {
total_skills: number // Skills tracked
certified_skills: number // With valid certs
expired_certifications: number // Needs renewal
skills_gaps: SkillGap[] // Missing skills
}
staff_skills: {
staff_id: string
staff_name: string
skills: {
skill_name: string
proficiency_level: 'basic' | 'intermediate' | 'advanced' | 'expert'
certified: boolean
certification_expiry: string | null
last_assessed: string
}[]
training_recommendations: string[]
}[]
skill_distribution: {
skill_name: string
staff_count: number
coverage_percentage: number
}[]
}

Proficiency Levels

LevelDescriptionRequirements
BasicFoundational knowledgeTraining complete
IntermediateWorking knowledge6+ months experience
AdvancedExpert capability2+ years + certification
ExpertMaster level5+ years + advanced cert

Certification Tracking

  • Expiring soon (within 30 days)
  • Expired (requires immediate action)
  • Valid (current certification)
  • Not required (skill doesn't need cert)

Cost Analysis Report

Purpose

Analyse labour costs, overtime expenditure, and budget performance across the organisation.

Metrics Included

// Source: src/types/reporting.ts:332-380
interface CostAnalysisData {
overview: {
total_labor_cost: number // All wages
regular_cost: number // Standard pay
overtime_cost: number // OT premiums
benefits_cost: number // Additional costs
average_cost_per_hour: number // £/hour
budget_total: number // Planned budget
budget_variance: number // Actual vs planned
}
staff_costs: {
staff_id: string
staff_name: string
role: string
hourly_rate: number
hours_worked: number
regular_cost: number
overtime_cost: number
total_cost: number
}[]
department_breakdown: {
department: string
total_cost: number
staff_count: number
average_cost: number
}[]
trend_data: {
period: string
cost: number
overtime_percentage: number
}[]
}

Cost Metrics Dashboard

// Dashboard display in ReportingDashboard.tsx:946-968
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
<div className="text-center">
<div className="text-3xl font-bold text-accent-coral">
£{costData.overview.total_labor_cost.toFixed(0)}
</div>
<div className="text-secondary-text">Total Labor Cost</div>
</div>
<div className="text-center">
<div className="text-3xl font-bold text-accent-coral">
£{costData.overview.overtime_cost.toFixed(0)}
</div>
<div className="text-secondary-text">Overtime Cost</div>
</div>
<div className="text-center">
<div className="text-3xl font-bold text-accent-coral">
£{costData.overview.average_cost_per_hour.toFixed(2)}
</div>
<div className="text-secondary-text">Avg Cost / Hour</div>
</div>
</div>

Budget Variance Analysis

VarianceStatusAction
≤-10%Under budgetReview allocation
-10% to +5%On targetContinue monitoring
+5% to +10%Over budgetInvestigate causes
>+10%CriticalImmediate review

Compliance Report

Purpose

Monitor compliance with working time regulations, rest periods, and organisational policies.

Metrics Included

// Source: src/types/reporting.ts:382-414
interface ComplianceReportData {
overview: {
compliance_rate: number // Overall %
total_violations: number // All violations
critical_violations: number // Serious breaches
warnings: number // Minor issues
last_audit_date: string
}
working_time_compliance: {
max_weekly_hours_violations: number // >48 hours
break_violations: number // Missed breaks
rest_period_violations: number // <11hr rest
consecutive_days_violations: number // >6 days
}
policy_compliance: {
policy_name: string
compliance_rate: number
violations: {
staff_id: string
staff_name: string
violation_type: string
date: string
details: string
}[]
}[]
recommendations: string[]
}

UK Working Time Regulations

RegulationLimitMonitored
Weekly Hours≤48 hours average
Daily Rest≥11 hours between shifts
Weekly Rest≥24 hours per week
Breaks20 min per 6+ hour shift
Consecutive Days≤6 days without rest

Violation Severity

LevelDescriptionExample
CriticalLegal breach>60 hours/week
HighPolicy violationMissed rest period
MediumPattern concernRepeated minor issues
LowMinor deviationSingle break missed

Report Access & Permissions

Role-Based Access

// Source: src/app/api/reports/run/route.ts:144-152
const role = getAuthRole(user)
if (role !== 'SYSTEM_ADMIN' && role !== 'COMPANY_MANAGER') {
return ApiResponses.error(
new DatabaseError('Reporting access requires company manager or system admin role', 403, 'FORBIDDEN'),
403
)
}
RoleAccess Level
System AdminAll reports, all companies
Company ManagerAll reports, own company only
StaffNo report access


Source Files:

  • src/types/reporting.ts - Complete report type definitions
  • src/components/reporting/ReportingDashboard.tsx - Dashboard component
  • src/app/api/reports/run/route.ts - Report execution API
  • src/services/reportingService.ts - Report generation service