mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-08-12 20:03:40 +08:00
Fix: table parser metadata (#15127)
### What problem does this PR solve? This PR improves the table upload flow for CSV/Excel files by allowing table column role configuration at upload time. Previously, users had to: 1. Upload and parse a table file. 2. Open parser settings and manually set table column roles. 3. Re-parse the file for the roles to take effect. This was inefficient and required an unnecessary second parse. With this change: 1. When the knowledge base uses table parsing, the upload dialog extracts CSV/Excel headers client-side. 2. Users can choose Auto mode or Manual mode. 3. In Manual mode, users can assign per-column roles before upload. 4. The selected parser config is sent with the upload request and applied server-side during document creation. Result: configured table column roles are applied from the first parse. ### Type of change - [x] New Feature (non-breaking change which adds functionality) Co-authored-by: Ahmad Intisar <ahmadintisar@Ahmads-MacBook-M4-Pro.local>
This commit is contained in:
@@ -242,6 +242,7 @@ export default function Dataset() {
|
||||
onOk={onDocumentUploadOk}
|
||||
loading={documentUploadLoading}
|
||||
showParseOnCreation
|
||||
isTableParser={knowledgeBase?.chunk_method === 'table'}
|
||||
></FileUploadDialog>
|
||||
)}
|
||||
{createVisible && (
|
||||
|
||||
@@ -17,9 +17,27 @@ export const useHandleUploadDocument = () => {
|
||||
const { runDocumentByIds } = useRunDocument();
|
||||
|
||||
const onDocumentUploadOk = useCallback(
|
||||
async ({ fileList, parseOnCreation }: UploadFormSchemaType) => {
|
||||
async ({
|
||||
fileList,
|
||||
parseOnCreation,
|
||||
tableColumnMode,
|
||||
tableColumnRoles,
|
||||
}: UploadFormSchemaType) => {
|
||||
if (fileList.length > 0) {
|
||||
const ret = await uploadDocument(fileList);
|
||||
// Build parser_config if column roles are configured
|
||||
let parserConfig: Record<string, any> | undefined;
|
||||
if (
|
||||
tableColumnMode === 'manual' &&
|
||||
tableColumnRoles &&
|
||||
Object.keys(tableColumnRoles).length > 0
|
||||
) {
|
||||
parserConfig = {
|
||||
table_column_mode: 'manual',
|
||||
table_column_roles: tableColumnRoles,
|
||||
};
|
||||
}
|
||||
|
||||
const ret = await uploadDocument(fileList as File[], parserConfig);
|
||||
|
||||
// Check for success (code === 0) or partial success (code === 500 with some files)
|
||||
const isSuccess = ret?.code === 0;
|
||||
|
||||
Reference in New Issue
Block a user