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

@@ -10,6 +10,7 @@ export type DatasetSourceDTO = {
iconUrl: string
description: string
enabled: boolean
builtIn: boolean
lastSyncedAt: string | null
itemCount: number
createdAt: string
@@ -33,16 +34,25 @@ export type DatasetItemDTO = {
export type DatasetCronDTO = {
id: string
sourceId: string
schedule: string
status: string
enabled: boolean
nextRunAt: string | null
lastRunAt: string | null
lastResult: string
createdAt: string
updatedAt: string
}
export type DatasetItemPageDTO = {
items: DatasetItemDTO[]
total: number
limit: number
offset: number
}
export type DatasetDepositDTO = {
noteId: string
projectId: string
}
export type DatasetSourceInput = {
name: string
kind: DatasetSourceKind
@@ -53,8 +63,8 @@ export type DatasetSourceInput = {
}
export type DatasetItemUpdate = {
status: DatasetItemDTO['status']
starred: boolean
status?: DatasetItemDTO['status']
starred?: boolean
}
export function listDatasetSources(session: ApiSession, signal?: AbortSignal) {
@@ -85,9 +95,16 @@ export function deleteDatasetSource(session: ApiSession, sourceId: string) {
})
}
export function listDatasetItems(session: ApiSession, sourceId?: string, signal?: AbortSignal) {
const query = sourceId ? `?sourceId=${encodeURIComponent(sourceId)}` : ''
return apiRequest<DatasetItemDTO[]>(`/api/v1/dataset-items${query}`, { token: session.token, signal })
export function listDatasetItems(
session: ApiSession,
sourceId?: string,
offset = 0,
limit = 50,
signal?: AbortSignal,
) {
const params = new URLSearchParams({ offset: String(offset), limit: String(limit) })
if (sourceId) params.set('sourceId', sourceId)
return apiRequest<DatasetItemPageDTO>(`/api/v1/dataset-items?${params}`, { token: session.token, signal })
}
export function updateDatasetItem(session: ApiSession, itemId: string, input: DatasetItemUpdate) {
@@ -105,3 +122,15 @@ export function queueDatasetSync(session: ApiSession) {
body: {},
})
}
export function listDatasetCrons(session: ApiSession, signal?: AbortSignal) {
return apiRequest<DatasetCronDTO[]>('/api/v1/dataset-crons', { token: session.token, signal })
}
export function depositDatasetItem(session: ApiSession, itemId: string, projectId: string) {
return apiRequest<DatasetDepositDTO>(`/api/v1/dataset-items/${itemId}/deposit`, {
method: 'POST',
token: session.token,
body: { projectId },
})
}