import apiClient from '../../../shared/services/apiClient'; // ==================== REVENUE ANALYTICS ==================== export interface RevPARData { revpar: number; total_revenue: number; available_room_nights: number; period_days: number; total_rooms: number; } export interface ADRData { adr: number; period: { start: string | null; end: string | null; }; } export interface OccupancyRateData { occupancy_rate: number; occupied_room_nights: number; available_room_nights: number; period_days: number; } export interface RevenueForecastData { forecast: Array<{ date: string; forecasted_revenue: number; confidence: string; }>; average_daily_revenue: number; forecast_period: number; based_on_days: number; } export interface MarketPenetrationData { total_bookings: number; penetration_by_room_type: Array<{ room_type: string; bookings: number; revenue: number; market_share: number; }>; period: { start: string; end: string; }; } // ==================== OPERATIONAL ANALYTICS ==================== export interface StaffPerformanceData { staff_performance: Array<{ staff_id: number; staff_name: string; email: string; check_ins_handled: number; performance_score: number; }>; period: { start: string; end: string; }; } export interface ServiceUsageData { services: Array<{ service_id: number; service_name: string; category: string; usage_count: number; total_revenue: number; average_price: number; }>; total_services: number; total_usage: number; total_revenue: number; } export interface OperationalEfficiencyData { conversion_rate: number; average_booking_value: number; cancellation_rate: number; total_bookings: number; confirmed_bookings: number; cancelled_bookings: number; } // ==================== GUEST ANALYTICS ==================== export interface GuestLTVData { guests: Array<{ user_id: number; name: string; email: string; total_bookings: number; lifetime_value: number; average_booking_value: number; }>; average_ltv: number; total_guests_analyzed: number; } export interface CustomerAcquisitionCostData { new_customers: number; period: { start: string; end: string; }; note: string; } export interface RepeatGuestRateData { repeat_guest_rate: number; total_guests: number; repeat_guests: number; one_time_guests: number; } export interface GuestSatisfactionTrendsData { trends: Array<{ date: string; average_rating: number; review_count: number; }>; overall_average_rating: number; total_reviews: number; } // ==================== FINANCIAL ANALYTICS ==================== export interface ProfitLossData { total_revenue: number; refunds: number; net_revenue: number; gross_profit: number; period: { start: string; end: string; }; } export interface PaymentMethodAnalyticsData { payment_methods: Array<{ payment_method: string; transaction_count: number; total_amount: number; average_amount: number; percentage: number; }>; total_transactions: number; total_amount: number; } export interface RefundAnalysisData { refunds: Array<{ date: string; refund_count: number; refund_amount: number; }>; total_refund_amount: number; total_refund_count: number; average_refund_amount: number; } // ==================== COMPREHENSIVE ANALYTICS ==================== export interface ComprehensiveAnalyticsData { period: { start: string | null; end: string | null; }; revenue?: { revpar: RevPARData; adr: ADRData; occupancy_rate: OccupancyRateData; revenue_forecast: RevenueForecastData; market_penetration: MarketPenetrationData; }; operational?: { staff_performance: StaffPerformanceData; service_usage: ServiceUsageData; operational_efficiency: OperationalEfficiencyData; }; guest?: { lifetime_value: GuestLTVData; customer_acquisition_cost: CustomerAcquisitionCostData; repeat_guest_rate: RepeatGuestRateData; satisfaction_trends: GuestSatisfactionTrendsData; }; financial?: { profit_loss: ProfitLossData; payment_methods: PaymentMethodAnalyticsData; refund_analysis: RefundAnalysisData; }; } export interface AnalyticsParams { from?: string; to?: string; days?: number; include_revenue?: boolean; include_operational?: boolean; include_guest?: boolean; include_financial?: boolean; } // ==================== API FUNCTIONS ==================== // Revenue Analytics export const getRevPAR = async (params?: AnalyticsParams): Promise<{ status: string; data: RevPARData }> => { const response = await apiClient.get('/analytics/revenue/revpar', { params }); return response.data; }; export const getADR = async (params?: AnalyticsParams): Promise<{ status: string; data: ADRData }> => { const response = await apiClient.get('/analytics/revenue/adr', { params }); return response.data; }; export const getOccupancyRate = async (params?: AnalyticsParams): Promise<{ status: string; data: OccupancyRateData }> => { const response = await apiClient.get('/analytics/revenue/occupancy', { params }); return response.data; }; export const getRevenueForecast = async (days: number = 30): Promise<{ status: string; data: RevenueForecastData }> => { const response = await apiClient.get('/analytics/revenue/forecast', { params: { days } }); return response.data; }; export const getMarketPenetration = async (params?: AnalyticsParams): Promise<{ status: string; data: MarketPenetrationData }> => { const response = await apiClient.get('/analytics/revenue/market-penetration', { params }); return response.data; }; // Operational Analytics export const getStaffPerformance = async (params?: AnalyticsParams): Promise<{ status: string; data: StaffPerformanceData }> => { const response = await apiClient.get('/analytics/operational/staff-performance', { params }); return response.data; }; export const getServiceUsageAnalytics = async (params?: AnalyticsParams): Promise<{ status: string; data: ServiceUsageData }> => { const response = await apiClient.get('/analytics/operational/service-usage', { params }); return response.data; }; export const getOperationalEfficiency = async (params?: AnalyticsParams): Promise<{ status: string; data: OperationalEfficiencyData }> => { const response = await apiClient.get('/analytics/operational/efficiency', { params }); return response.data; }; // Guest Analytics export const getGuestLifetimeValue = async (params?: AnalyticsParams): Promise<{ status: string; data: GuestLTVData }> => { const response = await apiClient.get('/analytics/guest/lifetime-value', { params }); return response.data; }; export const getCustomerAcquisitionCost = async (params?: AnalyticsParams): Promise<{ status: string; data: CustomerAcquisitionCostData }> => { const response = await apiClient.get('/analytics/guest/acquisition-cost', { params }); return response.data; }; export const getRepeatGuestRate = async (params?: AnalyticsParams): Promise<{ status: string; data: RepeatGuestRateData }> => { const response = await apiClient.get('/analytics/guest/repeat-rate', { params }); return response.data; }; export const getGuestSatisfactionTrends = async (params?: AnalyticsParams): Promise<{ status: string; data: GuestSatisfactionTrendsData }> => { const response = await apiClient.get('/analytics/guest/satisfaction-trends', { params }); return response.data; }; // Financial Analytics export const getProfitLoss = async (params?: AnalyticsParams): Promise<{ status: string; data: ProfitLossData }> => { const response = await apiClient.get('/analytics/financial/profit-loss', { params }); return response.data; }; export const getPaymentMethodAnalytics = async (params?: AnalyticsParams): Promise<{ status: string; data: PaymentMethodAnalyticsData }> => { const response = await apiClient.get('/analytics/financial/payment-methods', { params }); return response.data; }; export const getRefundAnalysis = async (params?: AnalyticsParams): Promise<{ status: string; data: RefundAnalysisData }> => { const response = await apiClient.get('/analytics/financial/refunds', { params }); return response.data; }; // Comprehensive Analytics export const getComprehensiveAnalytics = async (params?: AnalyticsParams): Promise<{ status: string; data: ComprehensiveAnalyticsData }> => { const response = await apiClient.get('/analytics/comprehensive', { params }); return response.data; }; const analyticsService = { // Revenue Analytics getRevPAR, getADR, getOccupancyRate, getRevenueForecast, getMarketPenetration, // Operational Analytics getStaffPerformance, getServiceUsageAnalytics, getOperationalEfficiency, // Guest Analytics getGuestLifetimeValue, getCustomerAcquisitionCost, getRepeatGuestRate, getGuestSatisfactionTrends, // Financial Analytics getProfitLoss, getPaymentMethodAnalytics, getRefundAnalysis, // Comprehensive getComprehensiveAnalytics, }; export default analyticsService;