后台定价输入解析不再把小数与半截数字静默截断
- apps/admin-web/src/pages/adminEditorGenerationPricing.ts:parsePositiveInteger 改用 Number + Number.isInteger,`3.9`、`12abc` 这类输入收敛成 0 交给提交前校验,而不是截成 3 / 12 - apps/admin-web/src/pages/adminEditorGenerationPricing.test.ts:补小数与尾随非数字字符的用例
This commit is contained in:
@@ -28,10 +28,12 @@ function pricingFixture(): EditorGenerationPricingConfigPayload {
|
||||
};
|
||||
}
|
||||
|
||||
test('数值解析把空串、非数字与 0 收敛成 0', () => {
|
||||
test('数值解析把空串、非数字、小数与 0 收敛成 0', () => {
|
||||
expect(parsePositiveInteger('12')).toBe(12);
|
||||
expect(parsePositiveInteger('')).toBe(0);
|
||||
expect(parsePositiveInteger('abc')).toBe(0);
|
||||
expect(parsePositiveInteger('12abc')).toBe(0);
|
||||
expect(parsePositiveInteger('3.9')).toBe(0);
|
||||
expect(parsePositiveInteger('0')).toBe(0);
|
||||
expect(parsePositiveInteger('-3')).toBe(0);
|
||||
});
|
||||
|
||||
@@ -31,10 +31,12 @@ export function editorModel3dAddOnLabel(addOn: string) {
|
||||
return EDITOR_MODEL3D_ADD_ON_LABELS[addOn] ?? addOn;
|
||||
}
|
||||
|
||||
/** 输入框文本转整数;空串、非数字、0 与负数一律收敛成 0,交给提交前校验拦住。 */
|
||||
/** 输入框文本转整数;空串、非数字、小数、0 与负数一律收敛成 0,交给提交前校验拦住。 */
|
||||
export function parsePositiveInteger(value: string) {
|
||||
const parsed = Number.parseInt(value, 10);
|
||||
return Number.isFinite(parsed) && parsed > 0 ? parsed : 0;
|
||||
// 用 Number 而不是 parseInt:parseInt 会把 `3.9` 截成 3、`12abc` 截成 12,
|
||||
// 等于把编辑中的半截输入静默当成合法值存下去。
|
||||
const parsed = Number(value);
|
||||
return Number.isInteger(parsed) && parsed > 0 ? parsed : 0;
|
||||
}
|
||||
|
||||
export function isPositiveMudPoints(value: number | null | undefined) {
|
||||
|
||||
Reference in New Issue
Block a user