games-development-ai/game-cloud/scripts/p3b_scaffold_pong.sql
zizi ce9085df6b feat(runner-v2): P3 3a+3b-A 派发面 plumbing——便宜模型生成游戏经后端 dispatch 自动入 feed 真玩(零回归验)
3a canary:pong 真 bundle→buildGamePackage→发布→feed 引擎真渲真玩(gameId 9301,brick-2 真值通路 mvn 13/13 验)。3b-A 派发面:执行器对 generic dispatch 外置 worker→worker 回调→buildGamePackage→feed,stub worker e2e 实证(任务129→版本93111→gameId 9302 引擎真渲 CDP 11/11)。

改动:① 点亮 AigcTemplateConstants(List.of(generic))+PromptResourceLoader ② 派发面 AigcGenerateExecutor(dispatchGeneric 分支:仅 dispatchTemplateId=generic 走、其余进程内 LLM 旧路逐行不变=零回归)+WorkerDispatchClient+AigcExecutorProperties/Configuration ③ 内网回调 AdminAigcTaskController @PermitAll /dify/callback-internal(注入系统身份解 updater-null=部署窗口#3 同根因复发,镜像 executeWithSystemIdentity)④ stub worker scripts/wg1_stub_worker.py + 灌库/发布桩 p3_*/p3b_* + config worker-url ⑤ 单测 +3 派发面用例(dispatch/失败/零回归 clicker 不 dispatch)⑥ 蒸馏 ai-generation-pipeline.md §⓪′ 派发面范式+2 红线。

零回归硬约束:AigcGenerateExecutorTest 20/0/0、AigcTaskServiceImplTest 9/0/0,clicker 仍进程内(dispatchSender 零交互)。主笔亲核 gating diff(:342-344 仅 generic)+肉眼复核 feed 真玩截图。🔴 安全红线(留 3b-B):/dify/callback-internal 跳 RBAC 仅恃内网兜底,真 worker/外部接入前必补 HMAC/mTLS 服务间签名。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 14:19:25 +00:00

72 lines
4.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================================================
-- 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 直写)。
-- 本脚本只建一款【已发布 projectgameId=9302+ 占位 version(93020)+ feed_rank】
-- ① 提交 generic 任务携 gameId=9302project 须先存在);
-- ② 回调链建【新】version(N)+runtime_package(engineBundle=stub 回的 pong)
-- ③ 跑 p3b_publish_flip.sql <N> 把 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 行
-- IDgameId=9302 / 占位 versionId=93020 / pkgId=93020 / feedRankId=93020高位区与 9201/9301 零碰撞)
-- 占位 version 93020 的 package_json 为空feed 卡先有占位包,翻到回调新版本 N 后服务真 pong
-- 幂等:先 DELETE 同 gameId/占位 ID 行再 INSERT纯重建可重复执行。注意不删回调新建的 versionN≠93020
-- tenantstaging 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 先指占位 93020flip 后改指回调新版本 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 派发面 e2egeneric 任务派发 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_packagestatus=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_rankzone_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;