diff --git a/src/Core/DBMigrator.php b/src/Core/DBMigrator.php index 30478cc9..10bf9092 100644 --- a/src/Core/DBMigrator.php +++ b/src/Core/DBMigrator.php @@ -14,7 +14,9 @@ class DBMigrator { use DBMigratorVip; /** Current schema version; changing it re-runs dbDelta. */ - const SCHEMA_VERSION = '2.5.0'; + // 2.5.1: order_aftersale 新增 images 列(售后举证图片)。dbDelta 仅在版本变化时 + // 重跑,新增/调整列必须同步升版本,否则老安装不会执行 ALTER TABLE。 + const SCHEMA_VERSION = '2.5.1'; const OPT_KEY = 'aksrt_db_schema_version'; diff --git a/tests/widget-system/after-sale-policy-contract.test.cjs b/tests/widget-system/after-sale-policy-contract.test.cjs index 71e4628e..a23aee82 100644 --- a/tests/widget-system/after-sale-policy-contract.test.cjs +++ b/tests/widget-system/after-sale-policy-contract.test.cjs @@ -181,6 +181,17 @@ test('after-sale tickets persist evidence images and expose the latest row', () const schema = read('src/Core/DBMigratorPart2.php') assert.match(schema, /CREATE TABLE \{\$prefix\}aksrt_order_aftersale[\s\S]*?images LONGTEXT DEFAULT NULL[\s\S]*?refund_amount/) + // images 列随 schema 2.5.1 引入:dbDelta 只在版本变化时重跑,列变更必须同步升版本, + // 否则老安装不会 ALTER TABLE,写入直接报 Unknown column 'images'。 + const migrator = read('src/Core/DBMigrator.php') + const version = migrator.match(/const SCHEMA_VERSION = '(\d+)\.(\d+)\.(\d+)'/) + assert.ok(version, 'DBMigrator exposes a numeric SCHEMA_VERSION') + const [major, minor, patch] = version.slice(1).map(Number) + assert.ok( + major > 2 || (major === 2 && minor > 5) || (major === 2 && minor === 5 && patch >= 1), + `SCHEMA_VERSION must be at least 2.5.1 after adding order_aftersale.images, got ${major}.${minor}.${patch}` + ) + const service = read('src/Payment/AfterSaleService.php') assert.match(service, /public function create\(int \$user_id, string \$order_number, string \$reason, array \$images = \[\]\)/) assert.match(service, /\$images = \$this->sanitize_images\(\$images\);/)