use-document-request.ts


Overview

This file provides a suite of custom React hooks designed for managing documents within a knowledge base application. These hooks encapsulate API interactions related to document upload, fetching, status updates, execution, removal, renaming, parser configuration, metadata updates, and creation.

Leveraging React Query for data fetching and mutation, and integrating with a knowledge base service (kbService), the hooks provide:

These hooks abstract away the complexity of API communication and state management for document operations, allowing UI components to interact with documents in a declarative and reactive manner.


Detailed Explanations

Enum: DocumentApiAction

Defines constants representing different document-related API actions used as keys for React Query mutations and queries.

Key

Description

UploadDocument

Upload documents to knowledge base

FetchDocumentList

Retrieve list of documents

UpdateDocumentStatus

Change document status

RunDocumentByIds

Execute documents by their IDs

RemoveDocument

Delete documents

SaveDocumentName

Rename a document

SetDocumentParser

Change document parser configuration

SetDocumentMeta

Update document metadata

FetchDocumentFilter

Get available document filters

CreateDocument

Create a new document


Hook: useUploadNextDocument

Uploads one or more files to the knowledge base linked to the current knowledge base ID.

Parameters

Returns

Implementation Details

Usage Example

const { uploadDocument, loading } = useUploadNextDocument();

const handleFiles = (files: File[]) => {
  uploadDocument(files).then(response => {
    if (response?.code === 0) {
      console.log('Upload successful');
    }
  });
};

Hook: useFetchDocumentList

Fetches and manages the paginated and filtered list of documents for the current knowledge base.

Returns

Implementation Details

Usage Example

const {
  loading,
  documents,
  pagination,
  handleInputChange,
  setPagination,
  filterValue,
  handleFilterSubmit,
} = useFetchDocumentList();

return (
  <input value={searchString} onChange={handleInputChange} />
  // render documents list with pagination controls
);

Hook: useGetDocumentFilter

Retrieves available filters (e.g., by run status or file suffix) for documents in the current knowledge base.

Returns

Implementation Details


Hook: useSetDocumentStatus

Updates the active/inactive status of one or more documents.

Returns

Parameters

Implementation Details


Hook: useRunDocument

Triggers the execution ("run") of documents by their IDs.

Returns

Parameters

Implementation Details


Hook: useRemoveDocument

Deletes one or multiple documents from the knowledge base.

Returns

Parameters

Implementation Details


Hook: useSaveDocumentName

Renames a document.

Returns

Parameters

Implementation Details


Hook: useSetDocumentParser

Sets the parser configuration for a document.

Returns

Parameters

Implementation Details


Hook: useSetDocumentMeta

Updates metadata for a document.

Returns

Parameters

Implementation Details


Hook: useCreateDocument

Creates a new document under the current knowledge base.

Returns

Parameters

Implementation Details


Important Implementation Details and Algorithms


File Interaction with Other Parts of the System


Visual Diagram

flowchart TD
    A[useUploadNextDocument] -->|Uploads files| KBService[KnowledgeBaseService]
    B[useFetchDocumentList] -->|Fetches documents| KBService
    B --> |Uses| useDebounce
    B --> |Uses| useHandleSearchChange
    B --> |Uses| useGetPaginationWithRouter
    C[useGetDocumentFilter] -->|Fetches filters| KBService
    D[useSetDocumentStatus] -->|Updates status| KBService
    E[useRunDocument] -->|Runs documents| KBService
    F[useRemoveDocument] -->|Removes documents| KBService
    G[useSaveDocumentName] -->|Renames document| KBService
    H[useSetDocumentParser] -->|Sets parser config| KBService
    I[useSetDocumentMeta] -->|Updates metadata| KBService
    J[useCreateDocument] -->|Creates document| KBService
    KBService -->|API Calls| Backend[Backend API]

    style KBService fill:#f9f,stroke:#333,stroke-width:2px
    style Backend fill:#bbf,stroke:#333,stroke-width:2px

Summary

use-document-request.ts is a critical utility file in the knowledge base application that abstracts API interactions into React Query-powered hooks. These hooks enable UI components to manage documents efficiently with features like debounced search, pagination, filtering, real-time updates, and rich user feedback, all while maintaining synchronization with the backend service and application routing.