/**
 * 表单统计 API
 * 
 * 调用后端真实的统计API
 */

import apiClient from '@/lib/api-client';

// ============================================
// 类型定义
// ============================================

export interface FormStatistics {
  totalSubmissions: number;
  totalForms: number;
  activeForms: number;
  draftForms: number;
  avgProcessingTime: string;
  avgProcessingTimeMs: number;
  approvalRate: number;
  activeUsers: number;
}

export interface FormSubmissionTrend {
  date: string;
  submissions: number;
  approvals: number;
  rejections: number;
}

export interface TopForm {
  formDefinitionId: string;
  formName: string;
  slug: string;
  submissions: number;
  approvals: number;
  rejections: number;
  approvalRate: number;
  avgProcessingTime: number; // 毫秒
}

export interface CategoryDistribution {
  category: string;
  count: number;
  percentage: number;
}

export interface FormStatisticsResponse {
  stats: FormStatistics;
  topForms: TopForm[];
  trends: FormSubmissionTrend[];
  categoryDistribution: CategoryDistribution[];
  timeRange: {
    from: string;
    to: string;
  };
}

// ============================================
// API 函数
// ============================================

/**
 * 获取表单统计数据
 */
export async function getFormStatistics(
  timeRange: '7d' | '30d' | '90d' | '1y' = '30d',
  category?: string,
): Promise<FormStatisticsResponse> {
  const params: any = { timeRange };
  if (category) {
    params.category = category;
  }

  return apiClient.get('/form-management/statistics', { params });
}

/**
 * 格式化处理时间
 */
export function formatProcessingTime(milliseconds: number): string {
  const hours = Math.floor(milliseconds / 3600000);
  const minutes = Math.floor((milliseconds % 3600000) / 60000);
  
  if (hours > 0) {
    return `${hours}.${Math.floor(minutes / 6)} 小时`;
  } else if (minutes > 0) {
    return `${minutes} 分钟`;
  } else {
    return '< 1 分钟';
  }
}

