diff --git a/web/src/功能/任务运行/任务详情.tsx b/web/src/功能/任务运行/任务详情.tsx
index b7d3fb9..68b9aca 100644
--- a/web/src/功能/任务运行/任务详情.tsx
+++ b/web/src/功能/任务运行/任务详情.tsx
@@ -1,6 +1,9 @@
import { useEffect, useState } from "react";
import { useQueryClient } from "@tanstack/react-query";
import { Ui任务上下文 } from "../上下文";
+import { Ui消息流 } from "../创作对话/消息流";
+import { Ui作者动作 } from "../创作对话/作者动作";
+import { useMuse作者会话 } from "../../应用/作者会话";
import { Ui恢复控制 } from "./恢复控制";
import { 订阅任务事件 } from "../../接口/事件连接";
import { 查询键 } from "../../接口/查询键";
@@ -17,6 +20,14 @@ export function Ui任务详情({
const cache = useQueryClient();
const [events, setEvents] = useState<任务事件[]>([]);
const [notice, setNotice] = useState("");
+ const 生成中 = task.task_type === "生成正文";
+ const 候选事件 = [...events]
+ .reverse()
+ .find((条) => 条.event_type === "candidate.saved");
+ const 候选ID = 生成中
+ ? ((候选事件?.payload as { candidate_id?: string } | undefined)?.candidate_id ??
+ null)
+ : null;
useEffect(
() =>
订阅任务事件(task.task_id, {
@@ -76,6 +87,39 @@ export function Ui任务详情({
+ {生成中 && (
+
+
+
创作对话
+ 生成过程与候选检查
+
+
+ {候选ID && }
+
+ )}
);
}
+
+/** 生成候选的检查与决定面板;作者会话由此处自取,任务列表无需传递。 */
+function Ui生成候选动作({
+ scope,
+ candidateId,
+}: {
+ scope: string | null;
+ candidateId: string;
+}) {
+ const 会话 = useMuse作者会话();
+ if (!会话.data) return