Add ingest flow handling and UI updates in KnowledgeSourcesPage

This commit introduces state management for ingest flow IDs and corresponding edit URLs in the KnowledgeSourcesPage component. It enhances the user interface by adding a new section for file ingestion, allowing users to customize their file processing pipeline. The changes improve the overall functionality and maintainability of the settings page, contributing to a more robust and well-documented codebase.
This commit is contained in:
Gabriel Luiz Freitas Almeida 2025-09-04 10:24:11 -03:00
parent 83438a7c93
commit 3118e54b69
2 changed files with 43 additions and 6 deletions

View file

@ -57,7 +57,7 @@ function AdminPage() {
})
const result = await response.json()
if (response.ok) {
setUploadStatus(`File uploaded successfully! ID: ${result.id}`)
setSelectedFile(null)
@ -132,23 +132,23 @@ function AdminPage() {
})
const result = await response.json()
if (response.status === 201) {
// New flow: Got task ID, use centralized tracking
const taskId = result.task_id || result.id
const totalFiles = result.total_files || 0
if (!taskId) {
throw new Error("No task ID received from server")
}
// Add task to centralized tracking
addTask(taskId)
setUploadStatus(`🔄 Processing started for ${totalFiles} files. Check the task notification panel for real-time progress. (Task ID: ${taskId})`)
setFolderPath("")
setPathUploadLoading(false)
} else if (response.ok) {
// Original flow: Direct response with results
const successful = result.results?.filter((r: {status: string}) => r.status === "indexed").length || 0

View file

@ -57,7 +57,9 @@ function KnowledgeSourcesPage() {
// Settings state
// Note: backend internal Langflow URL is not needed on the frontend
const [flowId, setFlowId] = useState<string>('1098eea1-6649-4e1d-aed1-b77249fb8dd0')
const [ingestFlowId, setIngestFlowId] = useState<string>('')
const [langflowEditUrl, setLangflowEditUrl] = useState<string>('')
const [langflowIngestEditUrl, setLangflowIngestEditUrl] = useState<string>('')
const [publicLangflowUrl, setPublicLangflowUrl] = useState<string>('')
// Fetch settings from backend
@ -69,9 +71,18 @@ function KnowledgeSourcesPage() {
if (settings.flow_id) {
setFlowId(settings.flow_id)
}
if (settings.ingest_flow_id) {
console.log('Setting ingestFlowId to:', settings.ingest_flow_id)
setIngestFlowId(settings.ingest_flow_id)
} else {
console.log('No ingest_flow_id in settings:', settings)
}
if (settings.langflow_edit_url) {
setLangflowEditUrl(settings.langflow_edit_url)
}
if (settings.langflow_ingest_edit_url) {
setLangflowIngestEditUrl(settings.langflow_ingest_edit_url)
}
if (settings.langflow_public_url) {
setPublicLangflowUrl(settings.langflow_public_url)
}
@ -344,6 +355,32 @@ function KnowledgeSourcesPage() {
</Button>
</div>
{/* Ingest Flow Section */}
<div className="flex items-center justify-between py-4">
<div>
<h3 className="text-lg font-medium">File ingestion</h3>
<p className="text-sm text-muted-foreground">Customize your file processing and indexing pipeline</p>
</div>
<Button
onClick={() => {
const derivedFromWindow = typeof window !== 'undefined'
? `${window.location.protocol}//${window.location.hostname}:7860`
: ''
const base = (publicLangflowUrl || derivedFromWindow || 'http://localhost:7860').replace(/\/$/, '')
const computed = ingestFlowId ? `${base}/flow/${ingestFlowId}` : base
const url = langflowIngestEditUrl || computed
window.open(url, '_blank')
}}
>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="22" viewBox="0 0 24 22" className="h-4 w-4 mr-2">
<path fill="currentColor" d="M13.0486 0.462158H9.75399C9.44371 0.462158 9.14614 0.586082 8.92674 0.806667L4.03751 5.72232C3.81811 5.9429 3.52054 6.06682 3.21026 6.06682H1.16992C0.511975 6.06682 -0.0165756 6.61212 0.000397655 7.2734L0.0515933 9.26798C0.0679586 9.90556 0.586745 10.4139 1.22111 10.4139H3.59097C3.90124 10.4139 4.19881 10.2899 4.41821 10.0694L9.34823 5.11269C9.56763 4.89211 9.8652 4.76818 10.1755 4.76818H13.0486C13.6947 4.76818 14.2185 4.24157 14.2185 3.59195V1.63839C14.2185 0.988773 13.6947 0.462158 13.0486 0.462158Z"></path>
<path fill="currentColor" d="M19.5355 11.5862H22.8301C23.4762 11.5862 24 12.1128 24 12.7624V14.716C24 15.3656 23.4762 15.8922 22.8301 15.8922H19.957C19.6467 15.8922 19.3491 16.0161 19.1297 16.2367L14.1997 21.1934C13.9803 21.414 13.6827 21.5379 13.3725 21.5379H11.0026C10.3682 21.5379 9.84945 21.0296 9.83309 20.392L9.78189 18.3974C9.76492 17.7361 10.2935 17.1908 10.9514 17.1908H12.9918C13.302 17.1908 13.5996 17.0669 13.819 16.8463L18.7082 11.9307C18.9276 11.7101 19.2252 11.5862 19.5355 11.5862Z"></path>
<path fill="currentColor" d="M19.5355 2.9796L22.8301 2.9796C23.4762 2.9796 24 3.50622 24 4.15583V6.1094C24 6.75901 23.4762 7.28563 22.8301 7.28563H19.957C19.6467 7.28563 19.3491 7.40955 19.1297 7.63014L14.1997 12.5868C13.9803 12.8074 13.6827 12.9313 13.3725 12.9313H10.493C10.1913 12.9313 9.90126 13.0485 9.68346 13.2583L4.14867 18.5917C3.93087 18.8016 3.64085 18.9187 3.33917 18.9187H1.32174C0.675616 18.9187 0.151832 18.3921 0.151832 17.7425V15.7343C0.151832 15.0846 0.675616 14.558 1.32174 14.558H3.32468C3.63496 14.558 3.93253 14.4341 4.15193 14.2135L9.40827 8.92878C9.62767 8.70819 9.92524 8.58427 10.2355 8.58427H12.9918C13.302 8.58427 13.5996 8.46034 13.819 8.23976L18.7082 3.32411C18.9276 3.10353 19.2252 2.9796 19.5355 2.9796Z"></path>
</svg>
Edit in Langflow
</Button>
</div>
{/* Connectors Section */}
<div className="space-y-6">