From 170e252e6ff0ea242d31ac6a96c7279c7ea3f746 Mon Sep 17 00:00:00 2001 From: limeng <1131177064@qq.com> Date: Wed, 23 Sep 2026 11:46:37 +0800 Subject: [PATCH] fix: schedule online daifa mirror refresh at 5am --- app/Console/Kernel.php | 16 +++++++++++++--- deploy/activate-incremental-release.sh | 1 + deploy/activate-release.sh | 1 + .../Deployment/BusinessMirrorScheduleTest.php | 13 ++++++++++++- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 7ec03ff1..805820ce 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -35,11 +35,21 @@ class Kernel extends ConsoleKernel $schedule->command('storage-temp:clear')->dailyAt('17:00'); $schedule->command('model:prune')->dailyAt('17:00'); - // 线上代发价格:每天凌晨 00:00 全量/增量同步一次钉钉线上代发业务报销流程。 + // 线上代发价格:每天凌晨 05:00 刷新钉钉审批、采购单和订单关联镜像。 // 生产环境由 business-mirror:sync-tables 的 cron 持续增量覆盖,此处保证 - // 一个固定的每日零点刷新入口;命令本身在非刷新环境会安全跳过。 + // 一个固定的每日刷新入口;命令本身在非刷新环境会安全跳过。 $schedule->command('business-mirror:sync-ding-online-daifa-price') - ->dailyAt('00:00') + ->dailyAt('05:00') + ->withoutOverlapping(60) + ->runInBackground(); + + $schedule->command('business-mirror:sync-product-purchase-prices') + ->dailyAt('05:00') + ->withoutOverlapping(60) + ->runInBackground(); + + $schedule->command('business-mirror:sync-tables operations_replica.rpt.jst_Orders') + ->dailyAt('05:00') ->withoutOverlapping(60) ->runInBackground(); diff --git a/deploy/activate-incremental-release.sh b/deploy/activate-incremental-release.sh index 206518d0..6e77564f 100644 --- a/deploy/activate-incremental-release.sh +++ b/deploy/activate-incremental-release.sh @@ -181,6 +181,7 @@ CRON_TZ=Asia/Shanghai * * * * * root /usr/bin/flock -n /run/caiwu-upstream-sync.lock /bin/sh -c '/usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-product-catalog --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-product-purchase-prices --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-store-report --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan upstream:snapshots:refresh-all --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-product-prices --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-tables --quiet' >/dev/null 2>&1 0 0 * * * root /usr/bin/flock -w 3600 /run/caiwu-upstream-sync.lock /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-third-party-warehouse-storage --max-batches=0 --quiet >/dev/null 2>&1 0 0 * * * root /usr/bin/flock -w 3600 /run/caiwu-upstream-sync.lock /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-jushuitan-cost-price-history --quiet >/dev/null 2>&1 +0 5 * * * root /usr/bin/flock -w 3600 /run/caiwu-upstream-sync.lock /bin/sh -c '/usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-product-purchase-prices --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-tables operations_replica.rpt.jst_Orders --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-ding-online-daifa-price --quiet' >/dev/null 2>&1 */2 * * * * root /usr/bin/flock -n /run/caiwu-esign-polling.lock /usr/bin/docker exec -u www-data caiwu_app php artisan esign:poll-signatures --quiet >/dev/null 2>&1 EOF chmod 644 /etc/cron.d/caiwu-jiansun-snapshots diff --git a/deploy/activate-release.sh b/deploy/activate-release.sh index db27238d..f8a60b05 100644 --- a/deploy/activate-release.sh +++ b/deploy/activate-release.sh @@ -185,6 +185,7 @@ CRON_TZ=Asia/Shanghai * * * * * root /usr/bin/flock -n /run/caiwu-upstream-sync.lock /bin/sh -c '/usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-product-catalog --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-product-purchase-prices --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-store-report --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan upstream:snapshots:refresh-all --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-product-prices --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-tables --quiet' >/dev/null 2>&1 0 0 * * * root /usr/bin/flock -w 3600 /run/caiwu-upstream-sync.lock /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-third-party-warehouse-storage --max-batches=0 --quiet >/dev/null 2>&1 0 0 * * * root /usr/bin/flock -w 3600 /run/caiwu-upstream-sync.lock /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-jushuitan-cost-price-history --quiet >/dev/null 2>&1 +0 5 * * * root /usr/bin/flock -w 3600 /run/caiwu-upstream-sync.lock /bin/sh -c '/usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-product-purchase-prices --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-tables operations_replica.rpt.jst_Orders --quiet; /usr/bin/docker exec -u www-data caiwu_app php artisan business-mirror:sync-ding-online-daifa-price --quiet' >/dev/null 2>&1 */2 * * * * root /usr/bin/flock -n /run/caiwu-esign-polling.lock /usr/bin/docker exec -u www-data caiwu_app php artisan esign:poll-signatures --quiet >/dev/null 2>&1 EOF chmod 644 /etc/cron.d/caiwu-jiansun-snapshots diff --git a/tests/Unit/Deployment/BusinessMirrorScheduleTest.php b/tests/Unit/Deployment/BusinessMirrorScheduleTest.php index 48f7f8ae..2a4d6839 100644 --- a/tests/Unit/Deployment/BusinessMirrorScheduleTest.php +++ b/tests/Unit/Deployment/BusinessMirrorScheduleTest.php @@ -30,12 +30,23 @@ class BusinessMirrorScheduleTest extends TestCase $this->assertLessThan($pricePosition, $catalogPosition, $script); $this->assertLessThan($genericPosition, $catalogPosition, $script); $this->assertSame(1, substr_count($contents, 'business-mirror:sync-product-catalog --quiet'), $script); - $this->assertSame(1, substr_count($contents, 'business-mirror:sync-product-purchase-prices --quiet'), $script); + $this->assertSame(2, substr_count($contents, 'business-mirror:sync-product-purchase-prices --quiet'), $script); $this->assertSame(1, substr_count($contents, 'business-mirror:sync-store-report --quiet'), $script); $this->assertStringContainsString('docker exec -u www-data caiwu_app', $contents, $script); $this->assertStringContainsString('/run/caiwu-upstream-sync.lock', $contents, $script); $this->assertStringContainsString("CRON_TZ=Asia/Shanghai\n", $contents, $script); $this->assertStringContainsString('0 0 * * * root', $contents, $script); + $this->assertStringContainsString('0 5 * * * root', $contents, $script); + $this->assertStringContainsString( + 'business-mirror:sync-tables operations_replica.rpt.jst_Orders --quiet', + $contents, + $script, + ); + $this->assertStringContainsString( + 'business-mirror:sync-ding-online-daifa-price --quiet', + $contents, + $script, + ); $this->assertStringContainsString( 'business-mirror:sync-third-party-warehouse-storage --max-batches=0 --quiet', $contents,