fix: remove marketplace brand marks from detail replacement
This commit is contained in:
parent
91b1d868d4
commit
4e6f47d35f
@ -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 模板:文字、标题、编号、卖点标签、按钮、图标、白底/浅色底、留白、分割线、圆角图片框、图片框裁切边界都属于锁定版式层,不允许移动、缩放、重排或重新设计。",
|
||||
"如果参考图是“上方文字/标签白底区 + 下方图片/场景圆角框”的结构,必须原样保留标题区高度、文字换行、文字字号、文字左上角位置、标签位置、图片框起始高度、圆角、左右边距和上下留白;禁止把新场景铺到标题白底区背后。",
|
||||
|
||||
@ -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,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user