feat: extend supply workbench demo and map navigation
This commit is contained in:
@@ -80,4 +80,33 @@ describe("scheduled condition backend boundaries", () => {
|
||||
expect(screen.getByText(/只保存在当前页面/)).toBeVisible();
|
||||
expect(screen.queryByText("系统工单已提交")).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("renders an event-triggered water-quality task as a workflow before opening chat", () => {
|
||||
const onContinueConversation = vi.fn();
|
||||
render(
|
||||
<ConditionDetailPanel
|
||||
condition={{
|
||||
...baseCondition,
|
||||
id: "peripheral-water-quality-order-1",
|
||||
taskId: "water-quality-complaint",
|
||||
dataSource: "mock",
|
||||
sessionId: "agent-session-water-quality",
|
||||
title: "水质投诉调查",
|
||||
status: "running",
|
||||
riskLevel: "attention",
|
||||
scheduledAt: new Date().toISOString(),
|
||||
durationMinutes: 15,
|
||||
evidence: ["来源工单:order-1", "投诉位置:演示小区"]
|
||||
}}
|
||||
dataSource="mock"
|
||||
onContinueConversation={onContinueConversation}
|
||||
/>
|
||||
);
|
||||
|
||||
expect(screen.getByText("演示执行流程 · 水质投诉调查流程")).toBeVisible();
|
||||
expect(screen.getAllByText("校验上游水质监测").at(-1)).toBeVisible();
|
||||
expect(screen.getAllByText("核查二次供水").at(-1)).toBeVisible();
|
||||
fireEvent.click(screen.getByRole("button", { name: "与 Agent 协同" }));
|
||||
expect(onContinueConversation).toHaveBeenCalledOnce();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -226,7 +226,10 @@ function ConditionRecordDetailPanel({
|
||||
backendCondition ? (
|
||||
<PersistedRunningConditionBody condition={condition} />
|
||||
) : (
|
||||
<RunningConditionBody condition={condition} />
|
||||
<RunningConditionBody
|
||||
condition={condition}
|
||||
onContinueConversation={onContinueConversation}
|
||||
/>
|
||||
)
|
||||
) : backendCondition ? (
|
||||
<PersistedConditionBody
|
||||
@@ -416,8 +419,15 @@ function WorkOrderDetailPanel({
|
||||
);
|
||||
}
|
||||
|
||||
function RunningConditionBody({ condition }: { condition: ScheduledConditionRecord }) {
|
||||
function RunningConditionBody({
|
||||
condition,
|
||||
onContinueConversation
|
||||
}: {
|
||||
condition: ScheduledConditionRecord;
|
||||
onContinueConversation: () => void;
|
||||
}) {
|
||||
const runningEvidence = (condition.evidence ?? []).slice(0, 2);
|
||||
const conversationAvailable = condition.taskId === "water-quality-complaint";
|
||||
const [nowMs, setNowMs] = useState(() => Date.now());
|
||||
|
||||
useEffect(() => {
|
||||
@@ -435,11 +445,12 @@ function RunningConditionBody({ condition }: { condition: ScheduledConditionReco
|
||||
<RunningEvidencePreview items={runningEvidence} />
|
||||
<DecisionActionStrip
|
||||
icon={Bot}
|
||||
title="阶段判断"
|
||||
title={conversationAvailable ? "Agent 协同" : "阶段判断"}
|
||||
value={condition.recommendation ?? "等待本轮工况完成后再确认是否生成处置建议。"}
|
||||
actionLabel="等待完成"
|
||||
actionDisabled
|
||||
actionTitle="任务执行中,完成后可继续对话"
|
||||
actionLabel={conversationAvailable ? "与 Agent 协同" : "等待完成"}
|
||||
actionDisabled={!conversationAvailable}
|
||||
actionTitle={conversationAvailable ? "打开这条任务关联的 Agent 会话" : "任务执行中,完成后可继续对话"}
|
||||
onAction={conversationAvailable ? onContinueConversation : undefined}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user