/**
 * 会议管理 API 模块（Phase B）
 *
 * 对应后端路由：/api/v1/admin/meetings
 * 所有接口需要 JWT + admin 角色权限
 *
 * 接口列表：
 * - GET /api/v1/admin/meetings        会议列表（分页 + 多条件筛选）
 * - GET /api/v1/admin/meetings/:id    会议详情（含参与者 + 录制列表）
 * - GET /api/v1/admin/meetings/stats  会议统计（卡片）
 */
import request from '@/utils/request'

/**
 * 获取会议列表
 * @param {Object} params
 * @param {number} [params.page]
 * @param {number} [params.page_size]
 * @param {string} [params.keyword] - 模糊匹配 title / room_code
 * @param {number} [params.status] - 0=未开始 1=进行中 2=已结束
 * @param {number} [params.host_id] - 主持人 ID
 * @param {boolean} [params.has_recording] - true=仅含录制的会议
 * @param {string} [params.start_time] - YYYY-MM-DD
 * @param {string} [params.end_time] - YYYY-MM-DD
 * @returns {Promise<{data:{total:number,list:Array,page:number,page_size:number}}>}
 */
export function getMeetingList(params) {
  return request({
    url: '/api/v1/admin/meetings',
    method: 'get',
    params
  })
}

/**
 * 获取会议详情（含参与者 + 录制列表）
 * @param {number} id - 会议主键 ID
 * @returns {Promise<{data:Object}>}
 */
export function getMeetingDetail(id) {
  return request({
    url: `/api/v1/admin/meetings/${id}`,
    method: 'get'
  })
}

/**
 * 获取会议统计（顶栏卡片）
 * @returns {Promise<{data:{total_count,active_count,today_count,recording_count}}>}
 */
export function getMeetingStats() {
  return request({
    url: '/api/v1/admin/meetings/stats',
    method: 'get'
  })
}

/**
 * 强制结束指定录制（admin 兜底操作）
 * 适用：host 失联未点停止 / ffmpeg 异常但 webhook 失效 / 长时间停留 recording 状态
 * 终态记录调用此接口幂等返回成功
 * @param {number} recordingID
 */
export function forceStopRecording(recordingID) {
  return request({
    url: `/api/v1/admin/meetings/recordings/${recordingID}/force-stop`,
    method: 'post'
  })
}
