From cf5550ab0a8d1ce80d57b16fc4d30d18323eb839 Mon Sep 17 00:00:00 2001 From: fengxiangdebaozi <10845145+fengxiangdebaozi@user.noreply.gitee.com> Date: Wed, 10 Jun 2026 18:58:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=9C=B0=E5=9D=80=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/core/page-layout/sidebar-menu.ts | 9 ++- .../components/BusinessChainPicker.tsx | 81 ++++++++++++++----- 2 files changed, 66 insertions(+), 24 deletions(-) diff --git a/frontend-web/src/core/page-layout/sidebar-menu.ts b/frontend-web/src/core/page-layout/sidebar-menu.ts index 1d3f3bd3..59d15e9d 100644 --- a/frontend-web/src/core/page-layout/sidebar-menu.ts +++ b/frontend-web/src/core/page-layout/sidebar-menu.ts @@ -62,8 +62,13 @@ export const sidebarMenuItems: MenuItem[] = [ path: "/page/strategy/qa/multi-agent-roundtable", }, // { id: "expert-qa", label: "专家问答", icon: Brain, path: "/page/strategy/qa/expert-qa" }, - { id: "qa-zzjc", label: "zzjc支持", icon: Bot }, - { id: "qa-zzxd", label: "zzXD应用", icon: Layout }, + { + id: "qa-zzjc", + label: "zzjc支持", + icon: Bot, + path: "/page/strategy/agents/6bf/chats/new", + }, + { id: "qa-zzxd", label: "zzXD应用", icon: Layout, path: "/page/strategy/agents/10d69686718349688e58a8790cb61024/chats/new", }, { id: "qa-research", label: "课题研究", icon: FileText, path: "/page/canvas/ai-writing" }, ], }, diff --git a/frontend-web/src/roundtable-planning/components/BusinessChainPicker.tsx b/frontend-web/src/roundtable-planning/components/BusinessChainPicker.tsx index 05dda9b6..bb431011 100644 --- a/frontend-web/src/roundtable-planning/components/BusinessChainPicker.tsx +++ b/frontend-web/src/roundtable-planning/components/BusinessChainPicker.tsx @@ -289,6 +289,43 @@ function ChainCard({ const deletedCount = chain.seats.length - survivingCount; const usable = survivingCount >= CHAIN_MIN_SEATS; + // ── 席位编排(体现「同层并行 · 层间串行」)───────────────────────────── + // 名称回退表:实时 name(nameById)→ 落库快照(seat.name)→ agent_id。 + const seatById = new Map(chain.seats.map((s) => [s.agent_id, s] as const)); + // 带 stages(分层编排)按 stages 渲染(过滤空阶段);否则每席位各成一段、顺序串行。 + const stages = + chain.stages && chain.stages.length > 0 + ? chain.stages.filter((s) => s.length > 0) + : chain.seats.map((s) => [s.agent_id]); + // 跨阶段累加的全局序号 —— 决定头像配色,与展平 seats 顺序对齐。 + const orderById = new Map(); + let seatOrder = 0; + for (const stageIds of stages) { + for (const id of stageIds) { + orderById.set(id, seatOrder); + seatOrder += 1; + } + } + // 单个席位 tag:存活按配色,已删除置灰删除线(保留旧行为)。 + const seatTag = (agentId: string) => { + const alive = isExisting(agentId); + const label = nameById.get(agentId) ?? seatById.get(agentId)?.name ?? agentId; + return ( + + {label} + + ); + }; + return (