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: {