+ {isEmbeddingContext && (
+
}
+ onClick={handleReturnToEmbeddingParent}
+ >
+ 返回
+
+ )}
)}
@@ -4215,23 +4392,17 @@ const FLOW_NODE_GAP = 10;
function BusinessChainFlow({
chain,
nodes,
- session,
activeNodeKey,
- onSelectIntent,
onSelectNode,
onSelectSeat,
- onSelectBuiltin,
className,
embedded = false,
}: {
chain: BusinessChain | null;
nodes: PositionRoundtableNode[];
- session: PositionRoundtableSession | null;
activeNodeKey: string | null;
- onSelectIntent?: () => void;
onSelectNode: (node: PositionRoundtableNode) => void;
onSelectSeat?: (seat: BusinessChain["seats"][number], stageIndex: number, seatIndex: number) => void;
- onSelectBuiltin: (kind: "summary" | "action_plan") => void;
className?: string;
embedded?: boolean;
}) {
@@ -4287,12 +4458,9 @@ function BusinessChainFlow({
);
diff --git a/frontend-web/src/roundtable-planning/pages/BusinessChainEditorPage.tsx b/frontend-web/src/roundtable-planning/pages/BusinessChainEditorPage.tsx
index 2d4c3bc3..5c711392 100644
--- a/frontend-web/src/roundtable-planning/pages/BusinessChainEditorPage.tsx
+++ b/frontend-web/src/roundtable-planning/pages/BusinessChainEditorPage.tsx
@@ -82,8 +82,11 @@ import { listAgents } from "@/core/agents";
import { getStoredAuth } from "@/core/auth";
import {
POSITION_OPTIONS,
+ setRuntimePositionOptions,
+ type PositionOption,
type PositionId,
} from "@/position-roundtable/lib/positions";
+import { usePositionRoles } from "@/strategy-components/api/position-roles";
import {
filterRecommendCandidates,
@@ -160,6 +163,33 @@ export default function BusinessChainEditorPage() {
// 岗位配置只由岗位协同页入口开启,普通圆桌编辑器完全不显示也不依赖该控件。
// `returnTo` 只接受站内绝对路径,避免把导航带往外部地址。
const positionConfigMode = searchParams.get("mode") === "position";
+ // This is the same directory the administrator edits in “岗位角色配置”.
+ // The editor used to read the static POSITION_OPTIONS array below, which
+ // meant a newly configured role never appeared in this seat dropdown.
+ const { data: configuredPositionRoles = [] } = usePositionRoles({
+ refreshOnMountOrFocus: positionConfigMode,
+ });
+ const positionOptions = useMemo