-- ============================================================================ -- P3·3b-A 派发面 e2e·四态脚手架(gameId=9302)—— adapt 自 p3_scaffold_pong.sql / p2_scaffold_4state.sql -- 缘由:3b-A 证「派发→stub worker→回调→buildGamePackage→新版本→入 feed」全 plumbing。 -- 与 3a 直灌库桩(9301)不同:3b-A 的 engineBundle 由【回调链 handleCallback】产出(非 SQL 直写)。 -- 本脚本只建一款【已发布 project(gameId=9302)+ 占位 version(93020)+ feed_rank】,供: -- ① 提交 generic 任务携 gameId=9302(project 须先存在); -- ② 回调链建【新】version(N)+runtime_package(engineBundle=stub 回的 pong); -- ③ 跑 p3b_publish_flip.sql 把 project.current_version_id/feed_rank 翻到新版本 N → feed 服务回调产物。 -- 四态:game_project.status=4(PUBLISHED) ∧ game_version.status=3 ∧ game_runtime_package.status=1 ∧ game_feed_rank 行 -- ID:gameId=9302 / 占位 versionId=93020 / pkgId=93020 / feedRankId=93020(高位区,与 9201/9301 零碰撞) -- 占位 version 93020 的 package_json 为空(feed 卡先有占位包,翻到回调新版本 N 后服务真 pong)。 -- 幂等:先 DELETE 同 gameId/占位 ID 行再 INSERT(纯重建,可重复执行)。注意:不删回调新建的 version(N≠93020)。 -- tenant:staging tenant.enable=false → tenant_id=0 -- 用法: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; -- 清旧(幂等重建;删该 gameId 全部 version/package/feed_rank,含上轮回调新建的——重跑前清场) DELETE FROM game_feed_rank WHERE game_id = 9302; DELETE FROM game_runtime_package WHERE game_id = 9302; DELETE FROM game_version WHERE game_id = 9302; DELETE FROM game_project WHERE id = 9302; -- ① project:已发布(status=4),current_version_id 先指占位 93020(flip 后改指回调新版本 N) INSERT INTO game_project (id, creator_user_id, title, summary, cover_url, tags, template_id, age_rating, status, current_version_id, launch_zone_id, featured, play_count, like_count, creator, create_time, updater, update_time, deleted, tenant_id) VALUES (9302, 1, '弹球(generic 派发·回调入feed)', 'P3 3b-A 派发面 e2e:generic 任务派发 stub worker 回 pong bundle 经回调链入 feed', 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==', 'P3,3b-A,dispatch,generic,pong', 'generic', 'all', 4, 93020, NULL, b'0', 0, 0, 'p3b-scaffold', NOW(), 'p3b-scaffold', NOW(), b'0', 0); -- ② 占位 version:已发布(status=3),仅供脚手架四态成立;回调会另建新 version(N) INSERT INTO game_version (id, game_id, version_no, gen_task_id, package_url, bundle_size, checksum, status, creator, create_time, updater, update_time, deleted, tenant_id) VALUES (93020, 9302, 1, NULL, '', 0, '', 3, 'p3b-scaffold', NOW(), 'p3b-scaffold', NOW(), b'0', 0); -- ③ 占位 runtime_package:status=1 + 空 package_json(占位包;flip 前 feed 卡指它,flip 后指回调新包) INSERT INTO game_runtime_package (id, game_id, version_id, template_id, package_url, entry, runtime_version, preload_policy, bundle_size, checksum, sandbox_attr, allow_origins, status, creator, create_time, updater, update_time, deleted, tenant_id, package_json) VALUES (93020, 9302, 93020, 'generic', '', 'index.html', '1.0.0', 'eager', 0, '', 'allow-scripts', '', 1, 'p3b-scaffold', NOW(), 'p3b-scaffold', NOW(), b'0', 0, NULL); -- ④ feed_rank:zone_id=0(混合流) + status=1 入流(flip 后把 version_id 改指回调新版本 N) INSERT INTO game_feed_rank (id, game_id, version_id, zone_id, quality_score, boost, sort_score, pinned, status, creator, create_time, updater, update_time, deleted, tenant_id) VALUES (93020, 9302, 93020, 0, 0.0000, 0.0000, 0.0000, 0, 1, 'p3b-scaffold', NOW(), 'p3b-scaffold', NOW(), b'0', 0); COMMIT; -- 回读四态 SELECT 'project' k, id, status, current_version_id FROM game_project WHERE id=9302 UNION ALL SELECT 'version', id, status, game_id FROM game_version WHERE id=93020 UNION ALL SELECT 'runtime_pkg', id, status, version_id FROM game_runtime_package WHERE id=93020 UNION ALL SELECT 'feed_rank', id, status, version_id FROM game_feed_rank WHERE id=93020;