// =============================================================================
// 企微IT智能服务台 — 待办事项 API 调用模块
// =============================================================================
// 说明：封装与待办事项相关的所有 HTTP 请求
// 对应后端 API：/api/todo-items
// 包括：获取待办列表、获取待办详情、更新待办状态
// =============================================================================

import apiClient from './index'
import type { AxiosResponse } from 'axios'

// --------------------------------------------------------------------------
// TypeScript 类型定义 — 与后端 Schema 保持一致
// --------------------------------------------------------------------------

/** 待办事项对象（对应后端 TodoItemResponse） */
export interface TodoItemData {
  /** 待办唯一标识 */
  id: string
  /** 待办类型: ticket/approval/device */
  type: string
  /** 待办标题 */
  title: string
  /** 优先级: urgent/high/normal */
  priority: string
  /** 详细描述（JSON） */
  description: Record<string, any>
  /** 状态: pending/processing/resolved */
  status: string
  /** 分配的坐席ID */
  assigned_agent_id: string | null
  /** 企业微信企业ID */
  corp_id: string
  /** 创建时间 */
  created_at: string
  /** 更新时间 */
  updated_at: string
}

/** 待办事项列表响应 */
export interface TodoItemListData {
  /** 待办事项列表 */
  items: TodoItemData[]
  /** 总数 */
  total: number
}

// --------------------------------------------------------------------------
// API 函数
// --------------------------------------------------------------------------

/**
 * 获取当前坐席待办列表
 *
 * @param params - 查询参数
 * @param params.status - 按状态过滤（可选）
 * @param params.priority - 按优先级过滤（可选）
 * @returns 待办事项列表数据
 */
export async function getTodoItems(params?: {
  status?: string
  priority?: string
}): Promise<TodoItemListData> {
  const response: AxiosResponse = await apiClient.get('/todo-items', { params })
  return response.data.data
}

/**
 * 获取待办事项详情
 *
 * @param id - 待办事项ID
 * @returns 待办事项详情
 */
export async function getTodoItem(id: string): Promise<TodoItemData> {
  const response: AxiosResponse = await apiClient.get(`/todo-items/${id}`)
  return response.data.data
}

/**
 * 更新待办事项状态
 *
 * @param id - 待办事项ID
 * @param status - 新状态（pending/processing/resolved）
 * @returns 更新后的待办事项
 */
export async function updateTodoStatus(id: string, status: string): Promise<TodoItemData> {
  const response: AxiosResponse = await apiClient.put(`/todo-items/${id}/status`, {
    status,
  })
  return response.data.data
}
