/
gr.ev.vl
/
TestGen
Обзор
Документация
Войти
/
gr.ev.vl
/
TestGen
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/frontend/src/api/export.ts
79 строк
2 KB
gr.ev.vl
2
07 июн 2026, 00:58
07 июн 2026, 00:58
09d9c21
Код
Авторство
О чём код?
/** * API-методы для экспорта. */ import apiClient from "./client"; import { getAccessToken } from "../utils/tokens"; import type { ExportFormat } from "../constants/enums"; export interface ExportRequest { question_ids: string[]; format: ExportFormat; include_explanations?: boolean; include_taxonomy?: boolean; } export interface ExportJob { id: string; format: string; question_count: number; file_name: string; file_size_bytes: number | null; created_at: string; } export async function exportQuestions(data: ExportRequest): Promise<ExportJob> { const response = await apiClient.post<ExportJob>("/export", data); return response.data; } /** * Скачать файл экспорта с токеном аутентификации. */ export async function downloadExport(jobId: string, fileName: string): Promise<void> { const token = getAccessToken(); const url = `${apiClient.defaults.baseURL}/export/download/${jobId}`; console.log(`📥 Скачивание файла: ${url}`); console.log(` Токен: ${token ? token.substring(0, 20) + '...' : 'ОТСУТСТВУЕТ'}`); try { const response = await fetch(url, { headers: { "Authorization": `Bearer ${token}`, }, }); console.log(` Статус: ${response.status} ${response.statusText}`); console.log(` Content-Type: ${response.headers.get('content-type')}`); if (!response.ok) { const errorText = await response.text(); console.error(` Ошибка: ${errorText}`); throw new Error(`Ошибка скачивания: ${response.status} - ${errorText}`); } const blob = await response.blob(); console.log(` Размер файла: ${blob.size} байт`); const downloadUrl = window.URL.createObjectURL(blob); const a = document.createElement("a"); a.href = downloadUrl; a.download = fileName; document.body.appendChild(a); a.click(); document.body.removeChild(a); window.URL.revokeObjectURL(downloadUrl); console.log(`✅ Файл скачан: ${fileName}`); } catch (err) { console.error(`❌ Ошибка скачивания:`, err); throw err; } } export async function getExportHistory(): Promise<ExportJob[]> { const response = await apiClient.get<ExportJob[]>("/export/history"); return response.data; }