fix: skip scale adjust verification rejection

This commit is contained in:
134 2026-06-22 02:51:22 +08:00
parent 9e8817f89e
commit 39b4bd5983

View File

@ -664,83 +664,14 @@ async function applyScaleAdjustVerificationToImages(params: {
const { images, verification, debugLabel } = params;
if (!verification || images.length === 0) return images;
try {
const sourceImage = await loadScaleAdjustSourceImage(verification);
if (!sourceImage) {
return images;
}
const { sourceBuffer, sourceHeight, sourceWidth } = sourceImage;
const checkedImages: ParsedImage[] = [];
for (const [index, image] of images.entries()) {
const generatedUrl = image.originalUrl || image.thumbnailUrl;
const generatedBuffer = Buffer.from(await fetchImageBufferFromUrl(generatedUrl));
const diffScores = await getScaleAdjustDiffScores({
generatedBuffer,
sourceBuffer,
sourceHeight,
sourceWidth,
regions: verification.regions,
});
const outsideDiffScores = await getScaleAdjustOutsideDiffScores({
generatedBuffer,
sourceBuffer,
sourceHeight,
sourceWidth,
verification,
});
const isVisuallyUnchanged =
diffScores.length > 0 &&
diffScores.every((score) => score < SCALE_ADJUST_VISUAL_DIFF_THRESHOLD);
const outsideChanged = isScaleAdjustOutsideChanged(outsideDiffScores);
if (!isVisuallyUnchanged && !outsideChanged) {
console.info("[Canvas Generate Image] Scale adjust output accepted:", {
debugLabel,
diffScores: diffScores.map((score) => Math.round(score * 10) / 10),
imageIndex: index + 1,
outsideDiffScores: outsideDiffScores.map(
(score) => Math.round(score * 10) / 10
),
protectedRegionCount: verification.protectedRegions?.length || 0,
scalePercent: verification.scalePercent,
});
checkedImages.push(image);
continue;
}
const rejection = new ScaleAdjustOutputRejectedError({
diffScores,
outsideDiffScores,
reason: outsideChanged ? "outside-frame-changed" : "unchanged-output",
});
console.warn("[Canvas Generate Image] Scale adjust output rejected:", {
debugLabel,
diffScores: diffScores.map((score) => Math.round(score * 10) / 10),
imageIndex: index + 1,
outsideDiffScores: outsideDiffScores.map(
(score) => Math.round(score * 10) / 10
),
protectedRegionCount: verification.protectedRegions?.length || 0,
reason: rejection.reason,
scalePercent: verification.scalePercent,
});
throw rejection;
}
return checkedImages;
} catch (error) {
if (error instanceof ScaleAdjustOutputRejectedError) {
throw error;
}
console.warn("[Canvas Generate Image] Scale adjust verification skipped:", {
debugLabel,
error: error instanceof Error ? error.message : String(error),
regionCount: verification.regions.length,
scalePercent: verification.scalePercent,
});
return images;
}
console.info("[Canvas Generate Image] Scale adjust verification disabled:", {
debugLabel,
imageCount: images.length,
protectedRegionCount: verification.protectedRegions?.length || 0,
regionCount: verification.regions.length,
scalePercent: verification.scalePercent,
});
return images;
}
function buildLocalEditCompositeMaskSvg(params: {