From 73f34ecbc9934cdb4f21a753217667a3727cdc62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Tue, 22 Sep 2026 13:26:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=A1=A5=E4=B8=8A=E3=80=8C?= =?UTF-8?q?=E5=88=86=E4=BB=B6=20+=20=E6=96=B9=E5=BD=A2=E5=B8=83=E7=BA=BF?= =?UTF-8?q?=20/=20=E6=99=BA=E8=83=BD=E4=BD=8E=E5=A4=9A=E8=BE=B9=E5=BD=A2?= =?UTF-8?q?=E3=80=8D=E7=9A=84=E4=BA=92=E6=96=A5=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - src/components/image-editor/model3d-generation/Model3dGenerationFormModel.ts:resolveModel3dGenerationParams 增加 generateParts 与 quad / smartLowPoly 的互斥判定,与 provider 的 validate_generation_options 对齐;此前纯几何档位下这两个开关仍可同开,前端能出价、提交后才被后端拒 - src/components/image-editor/model3d-generation/Model3dGenerationFormModel.test.ts:新增该组合被拒的用例 验证:npx vitest run src/components/image-editor/model3d-generation(40 用例全绿) --- .../Model3dGenerationFormModel.test.ts | 21 +++++++++++++++++++ .../Model3dGenerationFormModel.ts | 8 +++++++ 2 files changed, 29 insertions(+) diff --git a/src/components/image-editor/model3d-generation/Model3dGenerationFormModel.test.ts b/src/components/image-editor/model3d-generation/Model3dGenerationFormModel.test.ts index 8b6815d0d..ac7b3938d 100644 --- a/src/components/image-editor/model3d-generation/Model3dGenerationFormModel.test.ts +++ b/src/components/image-editor/model3d-generation/Model3dGenerationFormModel.test.ts @@ -159,6 +159,27 @@ describe('resolveModel3dGenerationParams', () => { }).ok, ).toBe(false); }); + + it('分件不允许与方形布线 / 智能低多边形同时开,这是后端也会拒的组合', () => { + const conflictingSwitches: Array<{ quad: boolean; smartLowPoly: boolean }> = + [ + { quad: true, smartLowPoly: false }, + { quad: false, smartLowPoly: true }, + ]; + for (const switches of conflictingSwitches) { + expect( + resolveModel3dGenerationParams({ + tier: 'geometry-only', + quad: switches.quad, + smartLowPoly: switches.smartLowPoly, + generateParts: true, + }), + ).toEqual({ + ok: false, + reason: '分件生成不能与方形布线或智能低多边形同时使用', + }); + } + }); }); describe('resolveModel3dAddOnKeys', () => { diff --git a/src/components/image-editor/model3d-generation/Model3dGenerationFormModel.ts b/src/components/image-editor/model3d-generation/Model3dGenerationFormModel.ts index 9dd729390..70ac03cae 100644 --- a/src/components/image-editor/model3d-generation/Model3dGenerationFormModel.ts +++ b/src/components/image-editor/model3d-generation/Model3dGenerationFormModel.ts @@ -105,6 +105,14 @@ export function resolveModel3dGenerationParams({ if (texture && generateParts) { return { ok: false, reason: '分件生成只支持纯几何档位' }; } + // 与 provider 的 `validate_generation_options` 对齐:generate_parts=true 不能和 + // quad / smart_low_poly 同时开,前端先挡住,避免出价成功后才在服务端被拒。 + if (generateParts && (quad || smartLowPoly)) { + return { + ok: false, + reason: '分件生成不能与方形布线或智能低多边形同时使用', + }; + } return { ok: true, params: {