UnisMindMap/web_ui/src/api/document.ts

121 lines
3.4 KiB
TypeScript

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<string, {
md_content?: string
middle_json?: string
model_output?: string
content_list?: string
images?: Record<string, string>
}>
}
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<ParseResult> {
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<ParseProgress> {
return request.post(`/parse_tasks/${encodeURIComponent(taskId)}`).then(result => {
return result as unknown as ParseProgress
})
},
/**
* 查询解析进度
*/
getParseProgress(taskId: string): Promise<ParseProgress> {
return request.get(`/parse_progress/${taskId}`).then(result => {
return result as unknown as ParseProgress
})
},
createMindmapTask(taskId: string, markdown: string, mode = 'smart', prompt?: string): Promise<MindmapOrganizeProgress> {
return request.post(`/mindmap_tasks/${encodeURIComponent(taskId)}`, {
markdown,
mode,
prompt
}).then(result => {
return result as unknown as MindmapOrganizeProgress
})
},
getMindmapProgress(taskId: string): Promise<MindmapOrganizeProgress> {
return request.get(`/mindmap_progress/${encodeURIComponent(taskId)}`).then(result => {
return result as unknown as MindmapOrganizeProgress
})
}
}