getTaskStatus static method
查询视频生成任务状态
taskId 任务ID
language 语言代码(可选,默认根据系统语言)
返回 VideoTaskStatusResult 包含任务状态、进度等信息
Implementation
static Future<VideoTaskStatusResult> getTaskStatus(
  String taskId, {
  String? language,
}) async {
  final lang = language ?? PlatformDispatcher.instance.locale.languageCode;
  final i18n = ShopPageI18n(lang);
  try {
    print('${i18n.get('video_querying_status')}: $taskId');
    final response = await http.get(
      Uri.parse('${EnvironmentConfig.baseUrl}/api/shopping/action?taskId=$taskId'),
      headers: {
        'Content-Type': 'application/json; charset=UTF-8',
      },
    );
    print('📥 任务状态响应: ${response.statusCode}');
    if (response.statusCode == 200) {
      final result = jsonDecode(utf8.decode(response.bodyBytes)) as Map<String, dynamic>;
      if (result['success'] == true) {
        final data = result['data'] as Map<String, dynamic>;
        final statusString = data['status'] as String;
        final mappedStatus = VideoTaskStatus.fromString(statusString);
        print('📊 任务状态: $statusString -> ${mappedStatus.value}');
        print('📈 进度: ${data['progress']}%');
        return VideoTaskStatusResult(
          success: true,
          taskId: data['task_id'] as String,
          status: mappedStatus,
          progress: (data['progress'] as num?)?.toDouble(),
          message: data['message'] as String,
          videoUrl: data['video_url'] as String?,
          analysis: data['analysis'] as Map<String, dynamic>?,
          script: data['script'] as Map<String, dynamic>?,
          error: data['error'] as String?,
          createdAt: data['created_at'] as String?,
          updatedAt: data['updated_at'] as String?,
        );
      } else {
        return VideoTaskStatusResult(
          success: false,
          taskId: taskId,
          status: VideoTaskStatus.failed,
          message: result['message'] as String? ?? i18n.get('video_query_failed'),
          error: result['error'] as String?,
        );
      }
    } else {
      return VideoTaskStatusResult(
        success: false,
        taskId: taskId,
        status: VideoTaskStatus.failed,
        message: '${i18n.get('video_server_error')} (${response.statusCode})',
        error: 'HTTP ${response.statusCode}',
      );
    }
  } catch (e) {
    print('❌ 查询任务状态失败: $e');
    return VideoTaskStatusResult(
      success: false,
      taskId: taskId,
      status: VideoTaskStatus.failed,
      message: i18n.get('video_query_failed'),
      error: e.toString(),
    );
  }
}