Merge pull request #246 from langflow-ai/docling-onboarding-detection

Add docling banner to onboarding
This commit is contained in:
Mike Fortman 2025-10-09 14:03:58 -05:00 committed by GitHub
commit aee0a20302
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 23 additions and 4 deletions

View file

@ -86,13 +86,26 @@ function DoclingSetupDialog({
); );
} }
export function DoclingHealthBanner({ className }: DoclingHealthBannerProps) { // Custom hook to check docling health status
export function useDoclingHealth() {
const { data: health, isLoading, isError } = useDoclingHealthQuery(); const { data: health, isLoading, isError } = useDoclingHealthQuery();
const [showDialog, setShowDialog] = useState(false);
const isHealthy = health?.status === "healthy" && !isError; const isHealthy = health?.status === "healthy" && !isError;
const isUnhealthy = health?.status === "unhealthy" || isError; const isUnhealthy = health?.status === "unhealthy" || isError;
return {
health,
isLoading,
isError,
isHealthy,
isUnhealthy,
};
}
export function DoclingHealthBanner({ className }: DoclingHealthBannerProps) {
const { isLoading, isHealthy, isUnhealthy } = useDoclingHealth();
const [showDialog, setShowDialog] = useState(false);
// Only show banner when service is unhealthy // Only show banner when service is unhealthy
if (isLoading || isHealthy) { if (isLoading || isHealthy) {
return null; return null;

View file

@ -7,6 +7,7 @@ import {
type OnboardingVariables, type OnboardingVariables,
useOnboardingMutation, useOnboardingMutation,
} from "@/app/api/mutations/useOnboardingMutation"; } from "@/app/api/mutations/useOnboardingMutation";
import { DoclingHealthBanner, useDoclingHealth } from "@/components/docling-health-banner";
import IBMLogo from "@/components/logo/ibm-logo"; import IBMLogo from "@/components/logo/ibm-logo";
import OllamaLogo from "@/components/logo/ollama-logo"; import OllamaLogo from "@/components/logo/ollama-logo";
import OpenAILogo from "@/components/logo/openai-logo"; import OpenAILogo from "@/components/logo/openai-logo";
@ -34,6 +35,7 @@ import { OpenAIOnboarding } from "./components/openai-onboarding";
function OnboardingPage() { function OnboardingPage() {
const { data: settingsDb, isLoading: isSettingsLoading } = const { data: settingsDb, isLoading: isSettingsLoading } =
useGetSettingsQuery(); useGetSettingsQuery();
const { isHealthy: isDoclingHealthy } = useDoclingHealth();
const redirect = "/"; const redirect = "/";
@ -114,7 +116,7 @@ function OnboardingPage() {
onboardingMutation.mutate(onboardingData); onboardingMutation.mutate(onboardingData);
}; };
const isComplete = !!settings.llm_model && !!settings.embedding_model; const isComplete = !!settings.llm_model && !!settings.embedding_model && isDoclingHealthy;
return ( return (
<div className="min-h-dvh w-full flex gap-5 flex-col items-center justify-center bg-background relative p-4"> <div className="min-h-dvh w-full flex gap-5 flex-col items-center justify-center bg-background relative p-4">
@ -130,6 +132,8 @@ function OnboardingPage() {
)} )}
/> />
<DoclingHealthBanner className="absolute top-0 left-0 right-0 w-full z-20" />
<div className="flex flex-col items-center gap-5 min-h-[550px] w-full z-10"> <div className="flex flex-col items-center gap-5 min-h-[550px] w-full z-10">
<div className="flex flex-col items-center justify-center gap-4"> <div className="flex flex-col items-center justify-center gap-4">
<h1 className="text-2xl font-medium font-chivo"> <h1 className="text-2xl font-medium font-chivo">
@ -197,7 +201,9 @@ function OnboardingPage() {
</TooltipTrigger> </TooltipTrigger>
{!isComplete && ( {!isComplete && (
<TooltipContent> <TooltipContent>
Please fill in all required fields {!!settings.llm_model && !!settings.embedding_model && !isDoclingHealthy
? "docling-serve must be running to continue"
: "Please fill in all required fields"}
</TooltipContent> </TooltipContent>
)} )}
</Tooltip> </Tooltip>