import request from '@/utils/request' import type { AxiosResponse } from 'axios' export interface ParseParams { files: File[] output_dir: string lang_list: string backend: string parse_method: string formula_enable: boolean table_enable: boolean server_url?: string start_page_id: number end_page_id: number return_md: boolean return_middle_json: boolean response_format_zip: boolean } export interface ParseResult { backend: string version: string results: Record }> } export interface ParseProgress { progress: number stage: string status: 'pending' | 'processing' | 'completed' | 'failed' error: string | null file_names: string } export interface MindmapOrganizeProgress extends ParseProgress { result_md?: string | null } export const documentApi = { /** * 解析文档 */ parseDocument(params: ParseParams, taskId?: string): Promise { const formData = new FormData() // 添加文件 params.files.forEach(file => { formData.append('files', file) }) // 添加其他参数 formData.append('output_dir', params.output_dir) formData.append('lang_list', params.lang_list) formData.append('backend', params.backend) formData.append('parse_method', params.parse_method) formData.append('formula_enable', params.formula_enable.toString()) formData.append('table_enable', params.table_enable.toString()) formData.append('start_page_id', params.start_page_id.toString()) formData.append('end_page_id', params.end_page_id.toString()) formData.append('return_md', params.return_md.toString()) formData.append('return_middle_json', params.return_middle_json.toString()) formData.append('response_format_zip', params.response_format_zip.toString()) if (params.server_url) { formData.append('server_url', params.server_url) } if (taskId) { formData.append('task_id', taskId) } return request.post('/file_parse', formData, { headers: { 'Content-Type': 'multipart/form-data', ...(taskId ? { 'X-Task-ID': taskId } : {}) } }).then(result => { console.log("解析成功:", result); return result as unknown as ParseResult; }).catch(error => { console.error("解析失败:", error); throw error; }) }, createParseTask(taskId: string): Promise { return request.post(`/parse_tasks/${encodeURIComponent(taskId)}`).then(result => { return result as unknown as ParseProgress }) }, /** * 查询解析进度 */ getParseProgress(taskId: string): Promise { return request.get(`/parse_progress/${taskId}`).then(result => { return result as unknown as ParseProgress }) }, createMindmapTask(taskId: string, markdown: string, mode = 'smart', prompt?: string): Promise { return request.post(`/mindmap_tasks/${encodeURIComponent(taskId)}`, { markdown, mode, prompt }).then(result => { return result as unknown as MindmapOrganizeProgress }) }, getMindmapProgress(taskId: string): Promise { return request.get(`/mindmap_progress/${encodeURIComponent(taskId)}`).then(result => { return result as unknown as MindmapOrganizeProgress }) } }