import { ArrowRight, ChevronDown, FileText } from "lucide-react"; import { Handle, Position, type NodeProps } from "@xyflow/react"; import type { CanvasNodeData } from "@/lib/layout"; import { StatusBadge } from "@/components/ui/Badges"; import { SourceComparisonButton } from "@/components/flow/SourceComparisonButton"; export function RoundSummaryCard({ data }: NodeProps) { const { item, onOpen, onToggleRound } = data as unknown as CanvasNodeData; if (!item || item.itemType !== "round-summary") return null; const summary = item.round.summary; const approach = `${summary.approach.mode || "方式未记录"} · ${summary.approach.candidateCount} 个实现方案`; const decisionMeta = summary.decision.batchCount ? `${summary.decision.batchCount} 个决策批次${summary.decision.branchIds.length ? ` · 涉及方案 ${summary.decision.branchIds.join("、")}` : ""}` : summary.decision.summary; const outputs = [ summary.output.mergedContentCount ? summary.output.scriptSummary : null, summary.output.domainFactCount ? summary.output.domainSummary : null, ].filter((value): value is string => Boolean(value)); if (!outputs.length) outputs.push(summary.output.summary); return
{ if (event.key === "Enter" || event.key === " ") { event.preventDefault(); onOpen(item, "business"); } }}>
第 {item.roundIndex} 轮
本轮目标

{summary.goal.headline}

{summary.goal.itemCount ? {summary.goal.itemCount} 项具体任务 · 完整内容见详情 : summary.goal.truncated ? 完整内容见详情 : null}
; } function SummaryBlock({ label, value, values, detail, tone = "normal" }: { label: string; value?: string; values?: string[]; detail?: string; tone?: "normal" | "decision" | "success" | "warning" }) { const lines = values || (value ? [value] : []); return
{label}
{lines.map((line) =>

{line}

)}{detail && detail !== value ? {detail} : null}
; }