File upload polling for ingestion status
This commit is contained in:
parent
6b2e1a3587
commit
37cf89c2b5
1 changed files with 27 additions and 1 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, computed, h } from 'vue'
|
import { ref, onMounted, onUnmounted, computed, h } from 'vue'
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import {
|
import {
|
||||||
Card,
|
Card,
|
||||||
|
|
@ -275,6 +275,7 @@ const retryIngestion = async (uuid: string) => {
|
||||||
const idx = trainingFiles.value.findIndex((f) => f.uuid === uuid)
|
const idx = trainingFiles.value.findIndex((f) => f.uuid === uuid)
|
||||||
if (idx !== -1) trainingFiles.value[idx] = response.data
|
if (idx !== -1) trainingFiles.value[idx] = response.data
|
||||||
message.success('Ingestion re-queued')
|
message.success('Ingestion re-queued')
|
||||||
|
schedulePoll()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to retry ingestion:', error)
|
console.error('Failed to retry ingestion:', error)
|
||||||
message.error('Failed to retry ingestion')
|
message.error('Failed to retry ingestion')
|
||||||
|
|
@ -461,6 +462,7 @@ const uploadFileFromWizard = async () => {
|
||||||
|
|
||||||
trainingFiles.value.unshift(uploaded)
|
trainingFiles.value.unshift(uploaded)
|
||||||
wizardUploadedFiles.value.unshift(uploaded)
|
wizardUploadedFiles.value.unshift(uploaded)
|
||||||
|
schedulePoll()
|
||||||
message.success(`File "${wizardSelectedFile.value.name}" uploaded successfully`)
|
message.success(`File "${wizardSelectedFile.value.name}" uploaded successfully`)
|
||||||
wizardSelectedFile.value = null
|
wizardSelectedFile.value = null
|
||||||
wizardFileDescription.value = ''
|
wizardFileDescription.value = ''
|
||||||
|
|
@ -503,6 +505,7 @@ const handleUploadModalOk = async () => {
|
||||||
if (!uploaded) return
|
if (!uploaded) return
|
||||||
|
|
||||||
trainingFiles.value.unshift(uploaded)
|
trainingFiles.value.unshift(uploaded)
|
||||||
|
schedulePoll()
|
||||||
message.success(`File "${uploadSelectedFile.value.name}" uploaded successfully`)
|
message.success(`File "${uploadSelectedFile.value.name}" uploaded successfully`)
|
||||||
uploadModalVisible.value = false
|
uploadModalVisible.value = false
|
||||||
uploadSelectedFile.value = null
|
uploadSelectedFile.value = null
|
||||||
|
|
@ -647,12 +650,31 @@ const saveDescription = async () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let pollTimer: ReturnType<typeof setTimeout> | null = null
|
||||||
|
|
||||||
|
const schedulePoll = () => {
|
||||||
|
const hasIngesting = trainingFiles.value.some((f) => f.status === 'ingesting')
|
||||||
|
if (!hasIngesting) return
|
||||||
|
pollTimer = setTimeout(async () => {
|
||||||
|
await fetchTrainingFiles()
|
||||||
|
schedulePoll()
|
||||||
|
}, 5000)
|
||||||
|
}
|
||||||
|
|
||||||
|
const stopPoll = () => {
|
||||||
|
if (pollTimer !== null) {
|
||||||
|
clearTimeout(pollTimer)
|
||||||
|
pollTimer = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
await fetchOrganization()
|
await fetchOrganization()
|
||||||
await fetchMembers()
|
await fetchMembers()
|
||||||
await fetchInvites()
|
await fetchInvites()
|
||||||
await fetchRoles()
|
await fetchRoles()
|
||||||
await fetchTrainingFiles()
|
await fetchTrainingFiles()
|
||||||
|
schedulePoll()
|
||||||
|
|
||||||
const currentUserUuid = auth.user?.uuid
|
const currentUserUuid = auth.user?.uuid
|
||||||
const isOwner = organization.value?.owner?.uuid === currentUserUuid
|
const isOwner = organization.value?.owner?.uuid === currentUserUuid
|
||||||
|
|
@ -664,6 +686,10 @@ onMounted(async () => {
|
||||||
router.replace(`/organization/${organizationUuid}`)
|
router.replace(`/organization/${organizationUuid}`)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
onUnmounted(() => {
|
||||||
|
stopPoll()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue