fix: remove marketplace brand marks from detail replacement

This commit is contained in:
Your Name 2026-06-02 23:03:42 +08:00
parent 91b1d868d4
commit 4e6f47d35f
2 changed files with 23 additions and 0 deletions

View File

@ -305,6 +305,10 @@ export type NormalizedAgentModeSourceImage = {
assetId: string | null;
};
export function isMarketplaceProductDetailReferenceId(value: unknown) {
return /^product-id-(taobao|1688|douyin|jd)-/i.test(String(value || "").trim());
}
export type ReplacementReferenceDecision = {
shouldReplace: boolean;
containsFurnitureProduct: boolean;
@ -1771,6 +1775,7 @@ export function buildAgentReplacementPrompt(params: {
basePrompt: string;
modeType: "detail_replacement" | "sku_replacement";
replacementStrategy?: AgentDetailReplacementStrategy;
marketplaceProductDetailReference?: boolean;
referenceLabel: string;
referenceIndex: number;
totalReferences: number;
@ -1823,6 +1828,14 @@ export function buildAgentReplacementPrompt(params: {
imageOrderLines.push(
`图片${nextImageIndex}:当前参考图底板(唯一版式基准图),必须保留它的文字排版、信息区、分割线、留白、机位和整体结构。`
);
const marketplaceBrandRemovalLines =
params.modeType === "detail_replacement" && params.marketplaceProductDetailReference
? [
"【市场ID参考图去品牌规则】当前参考图来自外部市场商品详情,原图里可能包含第三方品牌名、Logo、店铺名、商标、水印、角标、平台标识或商家专属视觉符号;这些都属于污染层,最终结果必须去掉。",
"去品牌时只清理品牌/Logo/水印本身:保留原来的版式位置、留白、文字层级和信息结构,可把对应区域处理成干净留白、中性图形、无品牌装饰或与当前页面风格一致的空白占位;不要照抄或变体复刻原商标。",
"如果参考图标题、标签或画面中出现可识别的外部品牌字样,不要保留该品牌名,不要换成相似字,不要生成伪 Logo;需要文字时只保留非品牌卖点语义或改成无品牌通用描述。",
]
: [];
const scenePlanLines = params.scenePlan
? [
@ -1895,6 +1908,7 @@ export function buildAgentReplacementPrompt(params: {
"【图片顺序规则】",
...imageOrderLines,
...scenePlanLines,
...marketplaceBrandRemovalLines,
"你现在做的是‘仅替换产品’,不是重建场景,也不是重新设计整张详情图。",
"忽略用户补充提示词里的场景风格、氛围、空间改造要求;这一次只服务于产品主体替换。",
"最后一张参考图是唯一底板,除产品主体/产品展示区外,其余所有内容都必须保持不变。",
@ -1921,6 +1935,7 @@ export function buildAgentReplacementPrompt(params: {
"【图片顺序规则】",
...imageOrderLines,
...scenePlanLines,
...marketplaceBrandRemovalLines,
"你现在做的是“详情参考图背景/场景图替换”,不是重新设计整张详情图。",
"【版式锁层规则】把最后一张参考图当成 PSD 模板:文字、标题、编号、卖点标签、按钮、图标、白底/浅色底、留白、分割线、圆角图片框、图片框裁切边界都属于锁定版式层,不允许移动、缩放、重排或重新设计。",
"如果参考图是“上方文字/标签白底区 + 下方图片/场景圆角框”的结构,必须原样保留标题区高度、文字换行、文字字号、文字左上角位置、标签位置、图片框起始高度、圆角、左右边距和上下留白;禁止把新场景铺到标题白底区背后。",

View File

@ -279,6 +279,7 @@ import {
import {
analyzeReplacementExecutionPlan,
buildAgentReplacementPrompt,
isMarketplaceProductDetailReferenceId,
normalizeAgentModeDetailReplacementStrategy,
normalizeAgentModeReferences,
normalizeAgentModeSourceImages,
@ -3465,6 +3466,9 @@ export async function POST(request: Request) {
basePrompt: baseReplacementPrompt,
modeType: "detail_replacement",
replacementStrategy: detailReplacementStrategy,
marketplaceProductDetailReference:
isMarketplaceProductDetailReferenceId(reference.id) ||
isMarketplaceProductDetailReferenceId(reference.candidateId),
referenceLabel: reference.label,
referenceIndex,
totalReferences: replacementReferences.length,
@ -4247,6 +4251,10 @@ export async function POST(request: Request) {
: "sku_replacement",
replacementStrategy:
isDetailReplacementPreset ? detailReplacementStrategy : undefined,
marketplaceProductDetailReference:
isDetailReplacementPreset &&
(isMarketplaceProductDetailReferenceId(reference.id) ||
isMarketplaceProductDetailReferenceId(reference.candidateId)),
referenceLabel: reference.label,
referenceIndex,
totalReferences: replacementReferences.length,