feat: add governed knowledge lifecycle
This commit is contained in:
@@ -1,6 +1,16 @@
|
||||
import { apiRequest } from '@/lib/api'
|
||||
import { apiRequest, apiUrl } from '@/lib/api'
|
||||
|
||||
import type { KnowledgeBase, KnowledgeItemInput, KnowledgeSearchResult } from './types'
|
||||
import type {
|
||||
AssetImpact,
|
||||
AssetVersionComparison,
|
||||
GovernedAsset,
|
||||
GovernedAssetType,
|
||||
GovernedAssetVersion,
|
||||
KnowledgeBase,
|
||||
KnowledgeDocument,
|
||||
KnowledgeItemInput,
|
||||
KnowledgeSearchResult
|
||||
} from './types'
|
||||
|
||||
export function listKnowledgeBases() {
|
||||
return apiRequest<KnowledgeBase[]>('/knowledge/bases')
|
||||
@@ -18,10 +28,37 @@ export function createKnowledgeBase(payload: {
|
||||
})
|
||||
}
|
||||
|
||||
export function listKnowledgeDocuments(knowledgeBaseId?: number, parseStatus?: string) {
|
||||
const query = new URLSearchParams()
|
||||
if (knowledgeBaseId) query.set('knowledge_base_id', String(knowledgeBaseId))
|
||||
if (parseStatus) query.set('parse_status', parseStatus)
|
||||
const suffix = query.size ? `?${query}` : ''
|
||||
return apiRequest<KnowledgeDocument[]>(`/knowledge/documents${suffix}`)
|
||||
}
|
||||
|
||||
export function uploadKnowledgeDocument(knowledgeBaseId: number, file: File) {
|
||||
const body = new FormData()
|
||||
body.append('file', file)
|
||||
return apiRequest<KnowledgeDocument>(
|
||||
`/knowledge/documents/upload?knowledge_base_id=${knowledgeBaseId}`,
|
||||
{ method: 'POST', body }
|
||||
)
|
||||
}
|
||||
|
||||
export function retryKnowledgeDocument(publicId: string) {
|
||||
return apiRequest<KnowledgeDocument>(`/knowledge/documents/${publicId}/retry`, {
|
||||
method: 'POST'
|
||||
})
|
||||
}
|
||||
|
||||
export function knowledgeDocumentDownloadUrl(publicId: string) {
|
||||
return apiUrl(`/knowledge/documents/${publicId}/download`)
|
||||
}
|
||||
|
||||
export function createKnowledgeItem(payload: KnowledgeItemInput) {
|
||||
return apiRequest('/knowledge/items', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(payload)
|
||||
body: JSON.stringify({ ...payload, status: 'draft' })
|
||||
})
|
||||
}
|
||||
|
||||
@@ -35,3 +72,70 @@ export function searchKnowledge(query: string, knowledgeBaseId?: number) {
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export function listGovernedAssets(assetType: GovernedAssetType, status?: string) {
|
||||
const query = new URLSearchParams({ asset_type: assetType })
|
||||
if (status && status !== 'all') query.set('status', status)
|
||||
return apiRequest<GovernedAsset[]>(`/knowledge/assets?${query}`)
|
||||
}
|
||||
|
||||
export function updateGovernedAssetVersion(
|
||||
publicId: string,
|
||||
version: number,
|
||||
content: Record<string, unknown>,
|
||||
changeSummary: string
|
||||
) {
|
||||
return apiRequest<GovernedAssetVersion>(
|
||||
`/knowledge/assets/${publicId}/versions/${version}`,
|
||||
{
|
||||
method: 'PATCH',
|
||||
body: JSON.stringify({ content, change_summary: changeSummary })
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
export function submitGovernedAssetVersion(publicId: string, version: number) {
|
||||
return apiRequest<GovernedAssetVersion>(
|
||||
`/knowledge/assets/${publicId}/versions/${version}/submit`,
|
||||
{ method: 'POST' }
|
||||
)
|
||||
}
|
||||
|
||||
export function reviewGovernedAssetVersion(
|
||||
publicId: string,
|
||||
version: number,
|
||||
decision: 'approve' | 'reject',
|
||||
comment: string
|
||||
) {
|
||||
return apiRequest<GovernedAssetVersion>(
|
||||
`/knowledge/assets/${publicId}/versions/${version}/${decision}`,
|
||||
{
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ comment })
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
export function rollbackGovernedAsset(publicId: string, sourceVersion: number) {
|
||||
return apiRequest<GovernedAssetVersion>(`/knowledge/assets/${publicId}/rollback`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
source_version: sourceVersion,
|
||||
change_summary: `回滚自 v${sourceVersion}`
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export function getGovernedAssetImpact(publicId: string) {
|
||||
return apiRequest<AssetImpact>(`/knowledge/assets/${publicId}/impact`)
|
||||
}
|
||||
|
||||
export function compareGovernedAssetVersions(
|
||||
publicId: string,
|
||||
left: number,
|
||||
right: number
|
||||
) {
|
||||
return apiRequest<AssetVersionComparison>(
|
||||
`/knowledge/assets/${publicId}/compare?left=${left}&right=${right}`
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user