退役模型版本在报价与提交路径上一起回落默认版本

- src/components/image-editor/model3d-generation/Model3dGenerationFormModel.ts:resolveModel3dModelVersion 改为走 normalizeModel3dModelVersion,老快照里契约中已不存在的版本不再直接进 MODEL3D_MODEL_TABLE 查表(原来会抛异常),报价与提交体也不会分裂成两个版本;此前该归一化函数只有测试在用
- src/components/image-editor/model3d-generation/Model3dGenerationFormModel.test.ts:补 resolveModel3dModelVersion 收到退役版本的用例
This commit is contained in:
2026-09-24 17:27:17 +08:00
parent 9840f17189
commit fe44054aa2
2 changed files with 15 additions and 3 deletions
@@ -1,6 +1,9 @@
import { describe, expect, it } from 'vitest';
import type { Model3dTextureQuality } from '../../../../packages/shared/src/contracts/model3d';
import type {
Model3dModelVersion,
Model3dTextureQuality,
} from '../../../../packages/shared/src/contracts/model3d';
import type {
Model3dAddOnPriceKey,
Model3dPricingConfig,
@@ -257,6 +260,10 @@ describe('模型版本', () => {
expect(resolveModel3dModelVersion(undefined)).toBe(
DEFAULT_MODEL3D_MODEL_VERSION,
);
// 老快照里存着已退役版本时,报价与提交也必须一起回落到默认版本,而不是查表抛异常。
expect(
resolveModel3dModelVersion('v1.0-20190101' as Model3dModelVersion),
).toBe(DEFAULT_MODEL3D_MODEL_VERSION);
expect(normalizeModel3dModelVersion(' P2-20260801 ')).toBe('P2-20260801');
// 老快照里的退役版本不发给服务端。
expect(normalizeModel3dModelVersion('v1.0-20190101')).toBe(
@@ -202,11 +202,16 @@ export function resolveModel3dGenerationParams({
return { ok: true, params };
}
/** 提交与报价共用的模型版本:缺字段(老快照)时回落到默认版本。 */
/**
* 提交与报价共用的模型版本:缺字段(老快照)或存的是已退役版本时回落到默认版本。
*
* 收敛必须发生在读表之前:`resolveModel3dModelFamily` 直接按版本查表,契约里没有的版本会抛异常,
* 面板、报价与提交体因此都得走同一个入口。
*/
export function resolveModel3dModelVersion(
model: Model3dModelVersion | null | undefined,
): Model3dModelVersion {
return model ?? DEFAULT_MODEL3D_MODEL_VERSION;
return normalizeModel3dModelVersion(model);
}
/**