feat: remove WorkflowSimpleNodeContent and update WorkflowNodeCard for optional children rendering

This commit is contained in:
mlogclub
2026-06-28 12:44:38 +08:00
parent 4ac2dedf97
commit 1525f2e919
3 changed files with 3 additions and 48 deletions
@@ -3,7 +3,6 @@ import { Field, type WorkflowNodeRegistry, useNodeRender } from "@flowgram.ai/fr
import type { AIWorkflowNodeSpec } from "@/lib/api/admin" import type { AIWorkflowNodeSpec } from "@/lib/api/admin"
import { WorkflowConditionNodeContent } from "./workflow-condition-node-content" import { WorkflowConditionNodeContent } from "./workflow-condition-node-content"
import { WorkflowNodeCard } from "./workflow-node-card" import { WorkflowNodeCard } from "./workflow-node-card"
import { WorkflowSimpleNodeContent } from "./workflow-simple-node-content"
export function buildFlowgramNodeRegistries(nodeSpecs: AIWorkflowNodeSpec[]): WorkflowNodeRegistry[] { export function buildFlowgramNodeRegistries(nodeSpecs: AIWorkflowNodeSpec[]): WorkflowNodeRegistry[] {
const seen = new Set<string>() const seen = new Set<string>()
@@ -89,9 +88,7 @@ function FlowgramNodeForm({
/> />
)} )}
</Field> </Field>
) : ( ) : null}
<WorkflowSimpleNodeContent spec={spec} />
)}
</WorkflowNodeCard> </WorkflowNodeCard>
)} )}
</Field> </Field>
@@ -18,7 +18,7 @@ export function WorkflowNodeCard({
spec?: AIWorkflowNodeSpec spec?: AIWorkflowNodeSpec
selected: boolean selected: boolean
width?: "normal" | "wide" width?: "normal" | "wide"
children: ReactNode children?: ReactNode
}) { }) {
const meta = getWorkflowNodeMeta(nodeType) const meta = getWorkflowNodeMeta(nodeType)
@@ -46,7 +46,7 @@ export function WorkflowNodeCard({
{spec.description} {spec.description}
</div> </div>
) : null} ) : null}
<div className="border-t bg-muted/20 px-3 py-2.5">{children}</div> {children ? <div className="border-t bg-muted/20 px-3 py-2.5">{children}</div> : null}
</div> </div>
</div> </div>
) )
@@ -1,42 +0,0 @@
import type { AIWorkflowNodeSpec } from "@/lib/api/admin"
export function WorkflowSimpleNodeContent({
spec,
}: {
spec?: AIWorkflowNodeSpec
}) {
const inputCount = spec?.inputSchema?.length ?? 0
const outputCount = spec?.outputSchema?.length ?? 0
const hasSchema = inputCount > 0 || outputCount > 0
if (!hasSchema && !spec?.riskLevel && !spec?.interruptible) {
return (
<div className="text-xs leading-5 text-muted-foreground">
</div>
)
}
return (
<div className="flex flex-wrap items-center gap-1.5">
{inputCount > 0 ? <NodeInfoChip label={`入参 ${inputCount}`} /> : null}
{outputCount > 0 ? <NodeInfoChip label={`出参 ${outputCount}`} /> : null}
{spec?.riskLevel ? <NodeInfoChip label={riskLevelLabel(spec.riskLevel)} /> : null}
{spec?.interruptible ? <NodeInfoChip label="可中断" /> : null}
</div>
)
}
function NodeInfoChip({ label }: { label: string }) {
return (
<span className="inline-flex h-5 items-center rounded-md border bg-background px-1.5 text-[11px] leading-none text-muted-foreground">
{label}
</span>
)
}
function riskLevelLabel(riskLevel: AIWorkflowNodeSpec["riskLevel"]) {
if (riskLevel === "high") return "高风险"
if (riskLevel === "medium") return "中风险"
return "低风险"
}