balibabu
feat: select the corresponding parsing method according to the file type and after the document is successfully uploaded, use the ChunkMethodModal to select the parsing method. and remove ChunkMethodModal from knowledge-file (#158)
71b7e06
import { | |
useFetchTenantInfo, | |
useSelectParserList, | |
} from '@/hooks/userSettingHook'; | |
import { useEffect, useMemo, useState } from 'react'; | |
const ParserListMap = new Map([ | |
[ | |
['pdf'], | |
[ | |
'naive', | |
'resume', | |
'manual', | |
'paper', | |
'book', | |
'laws', | |
'presentation', | |
'one', | |
], | |
], | |
[ | |
['doc', 'docx'], | |
['naive', 'resume', 'book', 'laws', 'one'], | |
], | |
[ | |
['xlsx', 'xls'], | |
['naive', 'qa', 'table', 'one'], | |
], | |
[['ppt', 'pptx'], ['presentation']], | |
[ | |
['jpg', 'jpeg', 'png', 'gif', 'bmp', 'tif', 'tiff', 'webp', 'svg', 'ico'], | |
['picture'], | |
], | |
[['txt'], ['naive', 'resume', 'book', 'laws', 'one', 'qa', 'table']], | |
[['csv'], ['naive', 'resume', 'book', 'laws', 'one', 'qa', 'table']], | |
]); | |
const getParserList = ( | |
values: string[], | |
parserList: Array<{ | |
value: string; | |
label: string; | |
}>, | |
) => { | |
return parserList.filter((x) => values?.some((y) => y === x.value)); | |
}; | |
export const useFetchParserListOnMount = ( | |
parserId: string, | |
documentExtension: string, | |
) => { | |
const [selectedTag, setSelectedTag] = useState(''); | |
const parserList = useSelectParserList(); | |
const nextParserList = useMemo(() => { | |
const key = [...ParserListMap.keys()].find((x) => | |
x.some((y) => y === documentExtension), | |
); | |
if (key) { | |
const values = ParserListMap.get(key); | |
return getParserList(values ?? [], parserList); | |
} | |
return getParserList( | |
['naive', 'resume', 'book', 'laws', 'one', 'qa', 'table'], | |
parserList, | |
); | |
}, [parserList, documentExtension]); | |
useFetchTenantInfo(); | |
useEffect(() => { | |
setSelectedTag(parserId); | |
}, [parserId]); | |
const handleChange = (tag: string, checked: boolean) => { | |
const nextSelectedTag = checked ? tag : selectedTag; | |
setSelectedTag(nextSelectedTag); | |
}; | |
return { parserList: nextParserList, handleChange, selectedTag }; | |
}; | |