import { AppRequest, AppResponse } from '@/server/web';
import { API_CONFIG } from '@/lib/config';

// 转换外部API数据格式到内部格式 - 最新剧集API使用vod_id作为实际视频ID
function transformExternalData(externalItem: any) {
  return {
    id: externalItem.id ? externalItem.id.toString() : (externalItem.vod_id?.toString() || ''), // 保持原有id作为唯一标识
    vod_id: externalItem.vod_id, // 使用vod_id作为实际的视频ID，用于获取全集地址
    name: externalItem.vod_name || '未知短剧', // 最新剧集API返回的是vod_name
    cover: externalItem.vod_pic || 'https://via.placeholder.com/300x400', // 最新剧集API返回的是vod_pic
    update_time: externalItem.vod_time || new Date().toISOString(), // 最新剧集API返回的是vod_time
    score: externalItem.vod_score || externalItem.vod_douban_score || 0, // 最新剧集API返回的是vod_score
    total_episodes: externalItem.vod_total || '1', // 最新剧集API返回的是vod_total
    vod_class: externalItem.vod_class || '', // 添加分类字段映射
    vod_tag: externalItem.vod_tag || '', // 添加标签字段映射
  };
}

export async function GET(request: AppRequest) {
  try {
    const { searchParams } = new URL(request.url);
    const page = searchParams.get('page') || '1';

    const apiUrl = new URL(`${API_CONFIG.shortdrama.baseUrl}/vod/latest`);
    apiUrl.searchParams.append('page', page);

    const controller = new AbortController();
    const timeoutId = setTimeout(() => controller.abort(), 5000);

    const response = await fetch(apiUrl.toString(), {
      method: 'GET',
      headers: API_CONFIG.shortdrama.headers,
      signal: controller.signal,
    });

    clearTimeout(timeoutId);

    if (!response.ok) {
      throw new Error(`API request failed: ${response.status}`);
    }

    const externalData = await response.json();

    // 处理外部API响应格式
    if (externalData && externalData.list && Array.isArray(externalData.list)) {
      const transformedData = externalData.list.map(transformExternalData);
      return AppResponse.json(transformedData);
    } else {
      throw new Error('Invalid response format from external API');
    }
  } catch (error) {
    console.error('Short drama latest API error:', error);

    // 返回默认最新数据作为备用（格式与真实API一致）
    const mockData = Array.from({ length: 25 }, (_, index) => {
      const classOptions = ['都市情感', '古装宫廷', '现代言情', '豪门世家', '职场励志'];
      const tagOptions = [
        '甜宠,霸总,现代',
        '穿越,古装,宫斗',
        '复仇,虐渣,打脸',
        '重生,逆袭,强者归来',
        '家庭,伦理,现实'
      ];

      return {
        id: `mock_id_${index + 100}`, // 模拟字符串ID
        vod_id: index + 100, // 模拟数字vod_id，用于获取全集地址
        vod_name: `最新短剧 ${index + 1}`,
        vod_pic: 'https://via.placeholder.com/300x400',
        vod_time: new Date(Date.now() - index * 24 * 60 * 60 * 1000).toISOString().replace('T', ' ').substring(0, 19),
        vod_score: Math.floor(Math.random() * 4) + 7, // 7-10的随机分数
        vod_total: `${Math.floor(Math.random() * 30) + 10}`, // 模拟总集数
        vod_class: classOptions[index % classOptions.length], // 模拟分类
        vod_tag: tagOptions[index % tagOptions.length], // 模拟标签
      };
    });

    // 确保返回数组
    return AppResponse.json(mockData);
  }
}
