fix: run selected ai wash preset only
This commit is contained in:
parent
5e0464c522
commit
fe18aa0000
@ -572,17 +572,22 @@ export function AiWashWorkspace({
|
||||
}),
|
||||
[enabledPresets, modelOptionByRef, selectedLevelIndexByControl, selectedUserModel, selectedUserModelId]
|
||||
);
|
||||
const shouldShowUserModelSelector = useMemo(
|
||||
const selectedExecutionState = useMemo(
|
||||
() =>
|
||||
!config.hideModelSelector &&
|
||||
presetExecutionStates.some((item) => item.usesUserSelectableModel),
|
||||
[config.hideModelSelector, presetExecutionStates]
|
||||
presetExecutionStates.find((item) => item.presetId === selectedResultId) ||
|
||||
presetExecutionStates.find(
|
||||
(item) => item.presetId === selectedPreviewResult?.presetId
|
||||
) ||
|
||||
presetExecutionStates.find((item) => item.preset.isDefault) ||
|
||||
presetExecutionStates[0] ||
|
||||
null,
|
||||
[presetExecutionStates, selectedPreviewResult?.presetId, selectedResultId]
|
||||
);
|
||||
const hasExecutableModelRefs = useMemo(
|
||||
() =>
|
||||
presetExecutionStates.length > 0 &&
|
||||
presetExecutionStates.every((item) => Boolean(item.effectiveModelRef)),
|
||||
[presetExecutionStates]
|
||||
const selectedPresetHasExecutableModel = Boolean(
|
||||
selectedExecutionState?.effectiveModelRef
|
||||
);
|
||||
const shouldShowUserModelSelector = Boolean(
|
||||
!config.hideModelSelector && selectedExecutionState?.usesUserSelectableModel
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
@ -727,8 +732,12 @@ export function AiWashWorkspace({
|
||||
toast.error("请先选择一个可用的生图模型");
|
||||
return;
|
||||
}
|
||||
if (!hasExecutableModelRefs) {
|
||||
toast.error("当前没有可用的 AI洗图 生图模型,请先在系统设置中配置模型");
|
||||
if (!selectedExecutionState) {
|
||||
toast.error("请先选择一个 AI洗图增强预设");
|
||||
return;
|
||||
}
|
||||
if (!selectedPresetHasExecutableModel) {
|
||||
toast.error("当前预设没有可用的 AI洗图 生图模型,请先在系统设置中配置模型");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -737,31 +746,33 @@ export function AiWashWorkspace({
|
||||
setHistorySourceOverride("");
|
||||
setIsSubmitting(true);
|
||||
setLastErrorMessage("");
|
||||
const activeExecutionState = selectedExecutionState;
|
||||
const activePreset = activeExecutionState.preset;
|
||||
setResults(
|
||||
enabledPresets.map((preset) => ({
|
||||
presetId: preset.id,
|
||||
title: preset.title,
|
||||
description: preset.description,
|
||||
prompt:
|
||||
presetExecutionStates.find((item) => item.presetId === preset.id)
|
||||
?.resolvedPrompt || preset.prompt,
|
||||
modelId:
|
||||
presetExecutionStates.find((item) => item.presetId === preset.id)
|
||||
?.resolvedModel?.modelId ||
|
||||
preset.modelId,
|
||||
isDefault: preset.isDefault,
|
||||
status: "submitting",
|
||||
}))
|
||||
);
|
||||
setSelectedResultId(
|
||||
(enabledPresets.find((preset) => preset.isDefault) || enabledPresets[0])?.id ||
|
||||
""
|
||||
enabledPresets.map((preset) => {
|
||||
const executionState =
|
||||
presetExecutionStates.find((item) => item.presetId === preset.id) || null;
|
||||
const isActivePreset = preset.id === activePreset.id;
|
||||
return {
|
||||
presetId: preset.id,
|
||||
title: preset.title,
|
||||
description: preset.description,
|
||||
prompt: executionState?.resolvedPrompt || preset.prompt,
|
||||
modelId:
|
||||
executionState?.resolvedModel?.modelId ||
|
||||
executionState?.effectiveModelRef ||
|
||||
preset.modelId,
|
||||
isDefault: preset.isDefault,
|
||||
status: isActivePreset ? ("submitting" as const) : ("idle" as const),
|
||||
};
|
||||
})
|
||||
);
|
||||
setSelectedResultId(activePreset.id);
|
||||
setComparePositionById(
|
||||
enabledPresets.reduce<Record<string, number>>((accumulator, preset) => {
|
||||
accumulator[preset.id] = 50;
|
||||
return accumulator;
|
||||
}, {})
|
||||
(current) => ({
|
||||
...current,
|
||||
[activePreset.id]: 50,
|
||||
})
|
||||
);
|
||||
|
||||
const startedAt = Date.now();
|
||||
@ -781,7 +792,7 @@ export function AiWashWorkspace({
|
||||
}
|
||||
|
||||
const taskResults = await Promise.all<AiWashTaskOutcome>(
|
||||
presetExecutionStates.map(async (executionState, index) => {
|
||||
[activeExecutionState].map(async (executionState, index) => {
|
||||
const { preset } = executionState;
|
||||
try {
|
||||
if (!executionState.effectiveModelRef) {
|
||||
@ -843,9 +854,7 @@ export function AiWashWorkspace({
|
||||
error: "",
|
||||
}));
|
||||
|
||||
if (preset.isDefault || index === 0) {
|
||||
setSelectedResultId((current) => current || preset.id);
|
||||
}
|
||||
setSelectedResultId(preset.id);
|
||||
|
||||
return {
|
||||
presetId: preset.id,
|
||||
@ -917,7 +926,7 @@ export function AiWashWorkspace({
|
||||
toast.success(
|
||||
failedItems.length > 0
|
||||
? `AI洗图已完成 ${successfulItems.length} 组,另有 ${failedItems.length} 组失败`
|
||||
: `AI洗图已完成,共生成 ${successfulItems.length} 组结果`
|
||||
: `AI洗图已完成:${selected?.title || "当前预设"}`
|
||||
);
|
||||
} else {
|
||||
const message = failedItems[0]?.error || "AI洗图失败";
|
||||
@ -932,10 +941,11 @@ export function AiWashWorkspace({
|
||||
config.imageSize,
|
||||
config.promptExtend,
|
||||
enabledPresets,
|
||||
hasExecutableModelRefs,
|
||||
presetExecutionStates,
|
||||
persistHistoryBatches,
|
||||
resolvedHistoryScopeKey,
|
||||
selectedExecutionState,
|
||||
selectedPresetHasExecutableModel,
|
||||
selectedUserModel,
|
||||
shouldShowUserModelSelector,
|
||||
updateResultCard,
|
||||
@ -992,13 +1002,6 @@ export function AiWashWorkspace({
|
||||
? comparePositionById[selectedPreviewResult.presetId] ?? 50
|
||||
: 50;
|
||||
const previewHasImage = Boolean(selectedPreviewResult?.imageUrl);
|
||||
const selectedExecutionState =
|
||||
presetExecutionStates.find(
|
||||
(item) => item.presetId === selectedPreviewResult?.presetId
|
||||
) ||
|
||||
presetExecutionStates.find((item) => item.preset.isDefault) ||
|
||||
presetExecutionStates[0] ||
|
||||
null;
|
||||
|
||||
return (
|
||||
<div className="relative flex h-full w-full bg-[#ffffff] text-[#111111]">
|
||||
@ -1378,7 +1381,7 @@ export function AiWashWorkspace({
|
||||
isSubmitting ||
|
||||
!compareSourceUrl ||
|
||||
enabledPresets.length === 0 ||
|
||||
!hasExecutableModelRefs ||
|
||||
!selectedPresetHasExecutableModel ||
|
||||
(shouldShowUserModelSelector && !selectedUserModel)
|
||||
}
|
||||
onClick={handleSubmit}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user