121 lines
3.4 KiB
TypeScript
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
|
|
})
|
|
}
|
|
}
|