From 16f87d4123ce250d3f548bf4e8f410d4c9ab4c7e Mon Sep 17 00:00:00 2001 From: yml2213 Date: Thu, 5 Nov 2026 12:02:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(systemconfig):=20=E4=BF=9D=E7=95=99?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E9=80=89=E9=A1=B9=E7=89=88=E6=9C=AC=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E5=BC=80=E5=85=B3=E9=87=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/features/listings/api/listingOptions.spec.ts | 8 ++++++++ frontend/src/features/listings/api/listingOptions.ts | 3 +++ 2 files changed, 11 insertions(+) diff --git a/frontend/src/features/listings/api/listingOptions.spec.ts b/frontend/src/features/listings/api/listingOptions.spec.ts index 9c05f454..a84f162e 100644 --- a/frontend/src/features/listings/api/listingOptions.spec.ts +++ b/frontend/src/features/listings/api/listingOptions.spec.ts @@ -3,6 +3,14 @@ import { describe, expect, it } from 'vitest' import { mergeListingPublishOptions } from './listingOptions' describe('mergeListingPublishOptions', () => { + it('保留配置结构版本,避免保存时触发旧版迁移', () => { + const options = mergeListingPublishOptions({ + schema_version: 2, + }) + + expect(options.schema_version).toBe(2) + }) + it('读取后台配置的押金说明', () => { const options = mergeListingPublishOptions({ price_config: { diff --git a/frontend/src/features/listings/api/listingOptions.ts b/frontend/src/features/listings/api/listingOptions.ts index b4eeac65..e5d9cd1a 100644 --- a/frontend/src/features/listings/api/listingOptions.ts +++ b/frontend/src/features/listings/api/listingOptions.ts @@ -102,6 +102,7 @@ export interface ListingPublishAgreements { } export interface ListingPublishOptions { + schema_version: number /** 发布页是否展示「是否解锁德穆兰」选项 */ unlock_demulan_enabled: boolean next_season_pass_enabled: boolean @@ -147,6 +148,7 @@ const defaultDepositTooltip = `1. 系统推荐押金(基础覆盖) 若您在设置足额押金后仍感不放心,可选择购买平台提供的《全额包赔服务》。一旦发生封号损失,将获得账号市场价值的全额赔付,让您的出租过程后顾无忧。` export const emptyListingPublishOptions: ListingPublishOptions = { + schema_version: 2, unlock_demulan_enabled: false, next_season_pass_enabled: false, server_options: [], @@ -240,6 +242,7 @@ export function mergeListingPublishOptions( options?: Partial ): ListingPublishOptions { return { + schema_version: readPositiveInteger(options?.schema_version, 2), unlock_demulan_enabled: options?.unlock_demulan_enabled === true, next_season_pass_enabled: options?.next_season_pass_enabled === true, server_options: normalizeStringList(options?.server_options),