-
多智能体圆桌会商中心
-
- 分布式领域专家实时动态博弈与纳什协商收敛中
-
+
+ {useStep1InputAppearance ? (
+
+
+
{headerTitle || "多智能体会商"}
-
-
-
+ ) : (
+
+
+
+
多智能体圆桌会商中心
+
+ 分布式领域专家实时动态博弈与纳什协商收敛中
+
+
+
+ )}
+
+ {!useStep1InputAppearance && (
+
+ )}
{/* 后台挂起:查看历史记录时隐藏(isViewingHistory),
重新从第一步进入第二步研讨时(isViewingHistory 为假)正常显示。 */}
{SHOW_BACKGROUND_SUSPEND && !isViewingHistory && (
@@ -455,12 +483,17 @@ export function Step2Panel(props: Step2PanelProps) {
type="button"
onClick={onBackgroundSuspend}
title="把当前研讨转入后台自动跑到结果绘制完成;可离开页面,进度在历史记录里查看"
- className="bg-slate-100 hover:bg-slate-200 text-slate-700 text-[calc(10px*var(--ui-font-scale,1))] font-bold px-2.5 py-1 rounded-xl flex items-center gap-1 transition border border-slate-200/60 shadow-sm dark:bg-secondary dark:text-foreground dark:border-border"
+ className={
+ useStep1InputAppearance
+ ? "eightbf-roundtable__suspend-button"
+ : "bg-slate-100 hover:bg-slate-200 text-slate-700 text-[calc(10px*var(--ui-font-scale,1))] font-bold px-2.5 py-1 rounded-xl flex items-center gap-1 transition border border-slate-200/60 shadow-sm dark:bg-secondary dark:text-foreground dark:border-border"
+ }
>
-
+ {!useStep1InputAppearance && }
后台挂起
)}
+ {headerRightSlot}
@@ -530,7 +563,12 @@ export function Step2Panel(props: Step2PanelProps) {
// 另一轴会被计算成 auto,任何子元素溢出一两像素都会让整列横向可滚 → 鼠标移到右侧
// 竖滚条滑块时极易误触发横向拖动、抓不住滑块。宽内容(代码块/表格)在各自气泡内
// 已有 max-w-full + overflow-x-auto 自带横滚,故此处裁掉横向不影响查看。
- className="flex-1 min-h-0 overflow-y-auto overflow-x-hidden p-6 space-y-4 bg-white border-t border-slate-150 border-b border-slate-150 shadow-inner"
+ className={cn(
+ "flex-1 min-h-0 overflow-y-auto overflow-x-hidden p-6 space-y-4",
+ useStep1InputAppearance
+ ? "eightbf-roundtable-step2-log"
+ : "bg-white border-t border-slate-150 border-b border-slate-150 shadow-inner",
+ )}
>
{isInitializing && step2RoundtableDialogues.length === 0 && (
@@ -791,7 +829,16 @@ export function Step2Panel(props: Step2PanelProps) {
seatMessages={activeSeatMessages}
taskArtifactSubmission={taskArtifactSubmission}
>
-
{chatBody}
+
+ {chatBody}
+
);
}
diff --git a/frontend-web/src/roundtable-planning/pages/RoundtablePlanningPage.tsx b/frontend-web/src/roundtable-planning/pages/RoundtablePlanningPage.tsx
index 96b9722d..7a03cbc6 100644
--- a/frontend-web/src/roundtable-planning/pages/RoundtablePlanningPage.tsx
+++ b/frontend-web/src/roundtable-planning/pages/RoundtablePlanningPage.tsx
@@ -102,7 +102,9 @@ import type {
DraftStep2RunSnapshot,
DraftStep2Snapshot,
DraftStep3Snapshot,
+ DraftStep3SummarySnapshot,
} from "@/roundtable-planning/api/drafts";
+import type { ThreadIdMap } from "@/roundtable-planning/api/multi-agent";
import {
useStep1Intent,
type InteractiveMessage,
@@ -316,6 +318,8 @@ export default function RoundtablePlanningPage({
renderStep2LeftSidebarHeader,
/** 第一阶段使用内嵌右栏时,隐藏通用的模型/摘要/澄清记录栏。 */
hideDefaultStep1RightSidebar = false,
+ step2HeaderTitle,
+ step2HeaderRightSlot,
/** 独立业务页的工作区品牌区,取代通用步骤导航。 */
headerLeftSlot,
/** 放在历史记录后面的独立业务操作或状态。 */
@@ -343,6 +347,11 @@ export default function RoundtablePlanningPage({
selectedModel: string;
modelOptions: Array<{ label: string; value: string }>;
onSelectedModelChange: (model: string) => void;
+ step2Dialogues: unknown[];
+ step2ThreadIds: ThreadIdMap | null;
+ step2CoordinatorName: string | null;
+ step2SeatStubMessages: Record
;
+ step3Summary: DraftStep3SummarySnapshot | null;
}) => ReactNode;
renderStep1LeftSidebar?: (context: { intentReady: object | null }) => ReactNode;
renderStep2LeftSidebarHeader?: (context: {
@@ -350,6 +359,10 @@ export default function RoundtablePlanningPage({
onCollapse: () => void;
}) => ReactNode;
hideDefaultStep1RightSidebar?: boolean;
+ /** 8BF 第二步对话区标题,与第一步顶栏同一套样式。 */
+ step2HeaderTitle?: string;
+ /** 8BF 第二步顶栏右侧附加操作(如返回)。 */
+ step2HeaderRightSlot?: ReactNode;
headerLeftSlot?: ReactNode;
headerActionAfterHistory?: ReactNode;
hideHeaderSaveDraft?: boolean;
@@ -2401,6 +2414,11 @@ export default function RoundtablePlanningPage({
selectedModel,
modelOptions: availableModels.map((model) => ({ label: model.name, value: model.name })),
onSelectedModelChange: setSelectedModel,
+ step2Dialogues: step2.step2RoundtableDialogues,
+ step2ThreadIds: step2.threadIds,
+ step2CoordinatorName: step2.coordinatorName,
+ step2SeatStubMessages: step2.seatStubMessages,
+ step3Summary: step3Report?.summaryReport ?? null,
}) :