Files
knowledge-governance/web/src/sourceRefreshPolicy.ts
T
2026-10-27 09:28:16 +08:00

36 lines
1.4 KiB
TypeScript

import {
activateSourceSettingsRevision,
createSourceSettingsRevision,
fetchSourceSettingsRevisions,
} from './sourceConnections'
import type { SourceConnectionListItem, SourceSettingsRevision } from './sourceConnections'
export function configuredInterval(connection: SourceConnectionListItem, revisions: SourceSettingsRevision[]): number {
const active = revisions.find((item) => item.state === 'active')
if (active) {
const seconds = Number(active.refresh_interval_seconds ?? 0)
if (!Number.isInteger(seconds) || seconds < 0) throw new Error('刷新周期无效,未修改设置')
return seconds
}
if (connection.schedule_configured) throw new Error(`${connection.name}:无法读取活动刷新策略,未修改设置`)
return 0
}
export async function saveSourceRefresh(
connection: SourceConnectionListItem,
enabled: boolean,
interval?: number
): Promise<void> {
const seconds = interval ?? configuredInterval(connection, await fetchSourceSettingsRevisions(connection.id))
if (!enabled && connection.source_type === 'manual') throw new Error('手工来源不支持自动刷新')
const created = await createSourceSettingsRevision(connection.id, {
source_type: connection.source_type,
name: connection.name,
endpoint: '',
credential_ref: '',
enabled,
schedule: { refresh_interval_seconds: seconds > 0 ? seconds : null },
})
await activateSourceSettingsRevision(connection.id, created.id)
}