-- ============================================================================ -- P3·W-G1 派发面终局 e2e·发布翻转(把 gameId=9307 的 feed 卡翻到【回调链新建的真生成 version】) -- 缘由:回调链 handleCallback 建【新】version(N)+runtime_package(engineBundle=worker 真生成 bundle),但 -- 新 runtime_package 落库 status=0(未发布),且 project.current_version_id/feed_rank 仍指占位 93070。 -- 本脚本把三处翻到回调新版本 N,使 feed 服务【回调链产物】(=真生成游戏),完成终局闭环。 -- 自动选 N:gameId=9307 下 gen_task_id 非空(=回调建的,占位 93070 的 gen_task_id 为 NULL)的最新 version。 -- 幂等:纯 UPDATE 翻指针,可重复执行(再跑选同一 N)。 -- 用法:docker exec -i game-staging-mysql mysql --default-character-set=utf8mb4 -uroot -p"$MYSQL_ROOT_PASSWORD" < 本文件 -- ============================================================================ USE `ruoyi-vue-pro`; SET NAMES utf8mb4; START TRANSACTION; -- 选回调新建的最新 version N(gen_task_id 非空 = 回调链建的;占位 93070 gen_task_id 为 NULL 被排除) SET @vid := (SELECT id FROM game_version WHERE game_id = 9307 AND gen_task_id IS NOT NULL AND deleted = b'0' ORDER BY id DESC LIMIT 1); -- ① 把回调新版本对应的 runtime_package 发布(status 0→1);占位 93070 包仍在但不再被 feed 指 UPDATE game_runtime_package SET status = 1, updater = '0', update_time = NOW() WHERE game_id = 9307 AND version_id = @vid AND @vid IS NOT NULL; -- ② project.current_version_id 指向回调新版本 N UPDATE game_project SET current_version_id = @vid, updater = '0', update_time = NOW() WHERE id = 9307 AND @vid IS NOT NULL; -- ③ feed_rank.version_id 指向回调新版本 N(feed 卡 /play 取此 version 的包 = 回调真生成产物) UPDATE game_feed_rank SET version_id = @vid, updater = '0', update_time = NOW() WHERE game_id = 9307 AND @vid IS NOT NULL; COMMIT; -- 回读:翻转后的指针 + 新版本运行包态(@vid 即 feed 现服务的 versionId,供 CDP driver 用) SELECT @vid AS flipped_version_id; SELECT 'project.current_version' k, current_version_id v FROM game_project WHERE id=9307 UNION ALL SELECT 'feed_rank.version', version_id FROM game_feed_rank WHERE game_id=9307 UNION ALL SELECT 'new_pkg.status', status FROM game_runtime_package WHERE game_id=9307 AND version_id=@vid UNION ALL SELECT 'new_pkg.bundleSize', bundle_size FROM game_runtime_package WHERE game_id=9307 AND version_id=@vid; -- 校验 engineBundle 真入包(LENGTH>0 = 回调把真生成 bundle 落进 package_json) SELECT 'engineBundle_in_pkg_len' k, CHAR_LENGTH(JSON_UNQUOTE(JSON_EXTRACT(package_json, '$.engineBundle'))) v FROM game_runtime_package WHERE game_id=9307 AND version_id=@vid; -- 校验 checksum 自洽(列值 == 对所存 package_json 重算的 sha256)——宿主完整性校验链不变量 SELECT 'checksum_selfconsistent' k, (checksum = LOWER(SHA2(package_json, 256))) v FROM game_runtime_package WHERE game_id=9307 AND version_id=@vid;