import request from '@/utils/request'

// 报表分析API服务

/**
 * 获取仪表板数据
 * @param {Object} query - 查询参数
 * @param {string} query.role - 用户角色
 * @param {string} query.dateRange - 日期范围
 * @returns {Promise} API响应
 */
export function getDashboardData(query) {
  return request({
    url: '/api/reports/dashboard',
    method: 'get',
    params: query
  })
}

/**
 * 生成报表
 * @param {Object} data - 报表生成参数
 * @param {string} data.reportType - 报表类型
 * @param {string} data.startDate - 开始日期
 * @param {string} data.endDate - 结束日期
 * @param {Array} data.filters - 过滤条件
 * @param {string} data.format - 输出格式 ('pdf', 'excel', 'csv')
 * @returns {Promise} API响应
 */
export function generateReport(data) {
  return request({
    url: '/api/reports/generate',
    method: 'post',
    data: data
  })
}

/**
 * 获取报表列表
 * @param {Object} query - 查询参数
 * @returns {Promise} API响应
 */
export function listReports(query) {
  return request({
    url: '/api/reports',
    method: 'get',
    params: query
  })
}

/**
 * 获取报表详情
 * @param {string} id - 报表ID
 * @returns {Promise} API响应
 */
export function getReport(id) {
  return request({
    url: `/api/reports/${id}`,
    method: 'get'
  })
}

/**
 * 导出报表
 * @param {string} id - 报表ID
 * @param {string} format - 导出格式
 * @returns {Promise} API响应
 */
export function exportReport(id, format = 'pdf') {
  return request({
    url: `/api/reports/${id}/export`,
    method: 'get',
    params: { format },
    responseType: 'blob'
  })
}

/**
 * 删除报表
 * @param {string} id - 报表ID
 * @returns {Promise} API响应
 */
export function deleteReport(id) {
  return request({
    url: `/api/reports/${id}`,
    method: 'delete'
  })
}

/**
 * 获取财务报表数据
 * @param {Object} query - 查询参数
 * @param {string} query.reportPeriod - 报告期间
 * @param {string} query.companyId - 公司ID（可选）
 * @returns {Promise} API响应
 */
export function getFinancialReport(query) {
  return request({
    url: '/api/reports/financial',
    method: 'get',
    params: query
  })
}

/**
 * 进行风险分析
 * @param {Object} data - 分析参数
 * @param {string} data.analysisType - 分析类型
 * @param {Array} data.targetIds - 分析目标ID列表
 * @param {Object} data.parameters - 分析参数
 * @returns {Promise} API响应
 */
export function performRiskAnalysis(data) {
  return request({
    url: '/api/reports/risk-analysis',
    method: 'post',
    data: data
  })
}

/**
 * 获取统计数据
 * @param {Object} query - 查询参数
 * @param {string} query.statType - 统计类型
 * @param {string} query.period - 统计周期
 * @param {string} query.groupBy - 分组字段
 * @returns {Promise} API响应
 */
export function getStatistics(query) {
  return request({
    url: '/api/reports/statistics',
    method: 'get',
    params: query
  })
}

/**
 * 获取趋势分析数据
 * @param {Object} query - 查询参数
 * @param {string} query.metric - 指标名称
 * @param {string} query.period - 分析周期
 * @param {string} query.startDate - 开始日期
 * @param {string} query.endDate - 结束日期
 * @returns {Promise} API响应
 */
export function getTrendAnalysis(query) {
  return request({
    url: '/api/reports/trend-analysis',
    method: 'get',
    params: query
  })
}

/**
 * 获取对比分析数据
 * @param {Object} data - 对比参数
 * @param {Array} data.compareTargets - 对比目标
 * @param {Array} data.metrics - 对比指标
 * @param {string} data.period - 对比周期
 * @returns {Promise} API响应
 */
export function getComparisonAnalysis(data) {
  return request({
    url: '/api/reports/comparison-analysis',
    method: 'post',
    data: data
  })
}

/**
 * 获取报表模板列表
 * @returns {Promise} API响应
 */
export function getReportTemplates() {
  return request({
    url: '/api/reports/templates',
    method: 'get'
  })
}

/**
 * 创建自定义报表模板
 * @param {Object} data - 模板数据
 * @param {string} data.templateName - 模板名称
 * @param {Object} data.templateConfig - 模板配置
 * @returns {Promise} API响应
 */
export function createReportTemplate(data) {
  return request({
    url: '/api/reports/templates',
    method: 'post',
    data: data
  })
}

/**
 * 获取实时数据
 * @param {Object} query - 查询参数
 * @param {Array} query.metrics - 指标列表
 * @returns {Promise} API响应
 */
export function getRealTimeData(query) {
  return request({
    url: '/api/reports/realtime',
    method: 'get',
    params: query
  })
}