feat: connect explore datasets to backend

This commit is contained in:
2026-07-23 15:07:35 +08:00
parent 0ca2898ac0
commit 26dd3004a1
14 changed files with 1445 additions and 196 deletions

View File

@@ -4,6 +4,17 @@ import '@arco-design/web-react/dist/css/arco.css'
import '../App.css'
import { ApiError, login, setApiBaseUrl, type ApiSession } from '../api/client'
import { createAISession, listAIExperts, listAISessions, type CreateAISessionInput } from '../api/ai'
import {
createDatasetSource,
deleteDatasetSource,
listDatasetItems,
listDatasetSources,
queueDatasetSync,
updateDatasetItem,
updateDatasetSource,
type DatasetItemUpdate,
type DatasetSourceInput,
} from '../api/dataset'
import { analyzeInboxItem, confirmInboxItem } from '../api/inbox'
import { mapWorkspace } from '../api/mappers'
import {
@@ -59,6 +70,41 @@ function App() {
return createAISession(session, projectId, input, signal)
}, [session])
const handleListDatasetSources = useCallback((signal?: AbortSignal) => {
if (!session) return Promise.reject(new Error('未登录'))
return listDatasetSources(session, signal)
}, [session])
const handleListDatasetItems = useCallback((signal?: AbortSignal) => {
if (!session) return Promise.reject(new Error('未登录'))
return listDatasetItems(session, undefined, signal)
}, [session])
const handleCreateDatasetSource = useCallback((input: DatasetSourceInput) => {
if (!session) return Promise.reject(new Error('未登录'))
return createDatasetSource(session, input)
}, [session])
const handleUpdateDatasetSource = useCallback((sourceId: string, input: DatasetSourceInput) => {
if (!session) return Promise.reject(new Error('未登录'))
return updateDatasetSource(session, sourceId, input)
}, [session])
const handleDeleteDatasetSource = useCallback((sourceId: string) => {
if (!session) return Promise.reject(new Error('未登录'))
return deleteDatasetSource(session, sourceId)
}, [session])
const handleUpdateDatasetItem = useCallback((itemId: string, input: DatasetItemUpdate) => {
if (!session) return Promise.reject(new Error('未登录'))
return updateDatasetItem(session, itemId, input)
}, [session])
const handleQueueDatasetSync = useCallback(() => {
if (!session) return Promise.reject(new Error('未登录'))
return queueDatasetSync(session)
}, [session])
const dark = theme === 'dark'
const activeWorkspace = workspaces.find((workspace) => workspace.project.id === activeProjectID) ?? workspaces[0]
const activeTagOptions = activeWorkspace?.tags.filter((tag) => tag !== 'all' && tag !== '全部') ?? []
@@ -365,6 +411,13 @@ function App() {
onListAISessions={handleListAISessions}
onListAIExperts={handleListAIExperts}
onCreateAISession={handleCreateAISession}
onListDatasetSources={handleListDatasetSources}
onListDatasetItems={handleListDatasetItems}
onCreateDatasetSource={handleCreateDatasetSource}
onUpdateDatasetSource={handleUpdateDatasetSource}
onDeleteDatasetSource={handleDeleteDatasetSource}
onUpdateDatasetItem={handleUpdateDatasetItem}
onQueueDatasetSync={handleQueueDatasetSync}
/>
) : (
<Spin loading />