import React, { useEffect, useState, useCallback, } from 'react'; import { useNavigate, connect, Dispatch } from 'umi' import { Card, Row, Col, Input, Select, Switch, Pagination, Spin, Button, Popconfirm } from 'antd'; import { MinusSquareOutlined, DeleteOutlined, } from '@ant-design/icons'; import type { PaginationProps } from 'antd'; import { api_host } from '@/utils/api' import CreateModal from '../knowledge-chunk/components/createModal' import styles from './index.less' import { debounce } from 'lodash'; import type { kSearchModelState } from './model' import type { chunkModelState } from '../knowledge-chunk/model' interface chunkProps { dispatch: Dispatch; kSearchModel: kSearchModelState; chunkModel: chunkModelState; kb_id: string } const Index: React.FC = ({ kSearchModel, chunkModel, dispatch, kb_id }) => { const { data = [], total, loading, d_list = [], question, doc_ids, pagination, } = kSearchModel const { chunk_id, doc_id, isShowCreateModal } = chunkModel const getChunkList = () => { dispatch({ type: 'kSearchModel/updateState', payload: { loading: true } }); interface payloadType { kb_id: string; question?: string; doc_ids: any[]; similarity_threshold?: number } const payload: payloadType = { kb_id, question, doc_ids, similarity_threshold: 0.1 } dispatch({ type: 'kSearchModel/chunk_list', payload: { ...payload, ...pagination } }); } const confirm = (id: string) => { console.log(id) dispatch({ type: 'kSearchModel/rm_chunk', payload: { chunk_ids: [id] }, callback: getChunkList }); }; const handleEditchunk = (item: any) => { const { chunk_id, doc_id } = item dispatch({ type: 'chunkModel/updateState', payload: { isShowCreateModal: true, chunk_id, doc_id }, callback: getChunkList }); } const onShowSizeChange: PaginationProps['onShowSizeChange'] = (page, size) => { dispatch({ type: 'kSearchModel/updateState', payload: { pagination: { page, size } } }); }; useEffect(() => { dispatch({ type: 'kSearchModel/updateState', payload: { loading: false, doc_ids: [], question: "" } }); dispatch({ type: 'kSearchModel/getKfList', payload: { kb_id } }); }, []) const switchChunk = (item: any, available_int: boolean) => { const { chunk_id, doc_id } = item dispatch({ type: 'kSearchModel/updateState', payload: { loading: true } }); dispatch({ type: 'kSearchModel/switch_chunk', payload: { chunk_ids: [chunk_id], doc_id, available_int }, callback: getChunkList }); } useEffect(() => { getChunkList() }, [doc_ids, pagination, question]) const debounceChange = debounce((value) => { dispatch({ type: 'kSearchModel/updateState', payload: { question: value } }); }, 300) const debounceCallback = useCallback((value: string) => debounceChange(value), []) const handleInputChange = (e: React.ChangeEvent) => { const value = e.target.value debounceCallback(value) } const handleSelectChange = (value: any[]) => { dispatch({ type: 'kSearchModel/updateState', payload: { doc_ids: value } }); } console.log('loading', loading) return (<>