From 4ea02f25ac2212328390c9fac0e86bf5da682696 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 6 Oct 2026 22:37:32 +0800 Subject: [PATCH] =?UTF-8?q?fix(payment):=20=E8=A1=A5=E5=8D=87=20schema=20?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E4=BD=BF=E5=94=AE=E5=90=8E=E4=B8=BE=E8=AF=81?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=88=97=E5=9C=A8=E5=B7=B2=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E7=AB=99=E7=82=B9=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit order_aftersale 新增 images 列时未同步升 SCHEMA_VERSION,而 dbDelta 只在版本 变化时重跑,已安装站点不会执行 ALTER TABLE,提交售后申请直接报 Unknown column 'images'。SCHEMA_VERSION 2.5.0 -> 2.5.1,并在契约测试中 锁定「列变更必须同步升版本」,部署后进入一次 wp-admin 即自动补列。 --- src/Core/DBMigrator.php | 4 +++- .../widget-system/after-sale-policy-contract.test.cjs | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) 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\);/)