import { useRef } from "react"; import { ArrowRight, Bot, ChevronDown, ChevronUp } from "lucide-react"; import { Handle, Position, type NodeProps } from "@xyflow/react"; import type { CanvasNodeData } from "@/lib/layout"; import { QueryAttemptList } from "@/components/flow/QueryAttemptList"; import { SourceComparisonButton } from "@/components/flow/SourceComparisonButton"; import { useRetrievalHoverPreview } from "@/components/flow/RetrievalHoverPreview"; export function RetrievalAgentCard({ data }: NodeProps) { const node = data as unknown as CanvasNodeData; const item = node.item; if (!item || item.itemType !== "retrieval-agent") return null; return ; } function RetrievalAgentCardContent({ node, item }: { node: CanvasNodeData; item: Extract, { itemType: "retrieval-agent" }> }) { const cardRef = useRef(null); const hoverPreview = useRetrievalHoverPreview({ anchorRef: cardRef, buildId: node.buildId, item, onOpenDetail: () => node.onOpen(item, "business") }); const run = item.run; const expanded = Boolean(node.expanded); const query = run.querySummary; const queryListId = `query-list-${run.eventId}`; return <>
{ if (event.key === "Enter" || event.key === " ") { event.preventDefault(); node.onOpen(item, "business"); } }}>
Agent 取数{run.status === "completed" ? "已完成" : run.status === "failed" ? "失败" : run.status === "interrupted" ? "构建中断" : "进行中"}

{run.businessLabel}

取数目标

{run.taskPreview || "任务未记录"}

查询过程

{query.total} 次 · {query.hit} 次命中 · {query.empty} 次无结果{query.failure ? <> · {query.failure} 次失败 : null}{query.interrupted ? <> · {query.interrupted} 次中断 : null}{query.unknown ? <> · {query.unknown} 次结果待确认 : null}

初筛整理

{run.screening.preview || (run.screening.state === "running" ? "正在整理查询结果" : "初筛整理未记录")}

{expanded ? : null}
{hoverPreview.preview}; }