fix: complete exploration data flow

This commit is contained in:
2026-07-23 22:25:12 +08:00
parent 55ff320cec
commit 5a1b04c4ed
12 changed files with 952 additions and 189 deletions

View File

@@ -7,6 +7,8 @@ import { createAISession, listAIExperts, listAISessions, type CreateAISessionInp
import {
createDatasetSource,
deleteDatasetSource,
depositDatasetItem,
listDatasetCrons,
listDatasetItems,
listDatasetSources,
queueDatasetSync,
@@ -75,9 +77,9 @@ function App() {
return listDatasetSources(session, signal)
}, [session])
const handleListDatasetItems = useCallback((signal?: AbortSignal) => {
const handleListDatasetItems = useCallback((sourceId?: string, offset = 0, limit = 50, signal?: AbortSignal) => {
if (!session) return Promise.reject(new Error('未登录'))
return listDatasetItems(session, undefined, signal)
return listDatasetItems(session, sourceId, offset, limit, signal)
}, [session])
const handleCreateDatasetSource = useCallback((input: DatasetSourceInput) => {
@@ -105,6 +107,27 @@ function App() {
return queueDatasetSync(session)
}, [session])
const handleListDatasetCrons = useCallback((signal?: AbortSignal) => {
if (!session) return Promise.reject(new Error('未登录'))
return listDatasetCrons(session, signal)
}, [session])
const handleDepositDatasetItem = useCallback(async (itemId: string, projectId: string) => {
if (!session) throw new Error('未登录')
const result = await depositDatasetItem(session, itemId, projectId)
const workspaceIndex = workspaces.findIndex((workspace) => workspace.project.id === projectId)
if (workspaceIndex >= 0) {
try {
const payload = await fetchProjectWorkspace(session, projectId)
const refreshed = mapWorkspace(payload, workspaceIndex)
setWorkspaces((current) => current.map((workspace) => workspace.project.id === projectId ? refreshed : workspace))
} catch {
return { ...result, refreshFailed: true }
}
}
return result
}, [session, workspaces])
const dark = theme === 'dark'
const activeWorkspace = workspaces.find((workspace) => workspace.project.id === activeProjectID) ?? workspaces[0]
const activeTagOptions = activeWorkspace?.tags.filter((tag) => tag !== 'all' && tag !== '全部') ?? []
@@ -418,6 +441,8 @@ function App() {
onDeleteDatasetSource={handleDeleteDatasetSource}
onUpdateDatasetItem={handleUpdateDatasetItem}
onQueueDatasetSync={handleQueueDatasetSync}
onListDatasetCrons={handleListDatasetCrons}
onDepositDatasetItem={handleDepositDatasetItem}
/>
) : (
<Spin loading />