games-development-ai/game-cloud/scripts/p3bB_publish_flip_9303.sql
zizi c99014c243 test(aigc-3b-B): 派发面 e2e 真证安全面+全自动管线闭合(HMAC双向),P5 生成质量转 L1
3b-B e2e(mini-desktop 真跑·证据 wg1/gen-worker/evidence-3bB/):

 P0-P4 安全面+全自动管线=真证闭合(铁证 backend-callback-hmac.log + p4*.txt):
- HMAC 双向证:缺签名头→HTTP 401 / 错签(deadbeef≠482147b5)→HTTP 401 / 正签→过门(走到下游"任务不存在"非401)
  =关死 /dify/callback-internal 裸 @PermitAll 缺口
- 全自动派发链真通:执行器认领 taskId→dispatchGeneric 投 §6.1 job→worker 真生成(真烧模型)→
  HMAC 签名回调→验签通过→handleCallback 落库(gen-9303/9304/9305 三轮齐全)

 P5 一句话真生成=未达终局:三款全 nine_gate_failed。但截图(gen-9303-after-play.png)证生成
  真出 on-theme 可渲可动的「点击小怪物」游戏(Score/3s 倒计时/多彩怪物 monsters/targetScore=12),
  仅点击→计分坏(Score 仍 0)→九门确定性地板正确拦截「看着像但玩不了」=质量门正确履职、拒发不可玩。

判:L0 交付(管线+安全+质量门)已完成且证;缺=便宜模型把「点击命中→计分」写对=L1 生成域
  (prompt 点击坑+模型档+player/calibration,run_studio 自修 max_repairs 未救回)→转 L1 v3 迭代。

附带:serve-and-play.sh 跨平台 Chrome 探测(CHROME_BIN 覆盖>Linux /usr/bin>macOS>PATH 兜底,
  Linux 在前因 mini-desktop x86 是权威 e2e 机);p3bB_*.sql 发布四态/翻 feed 桩。

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

48 lines
3.1 KiB
SQL
Raw Permalink 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-B 派发面终局 e2e·发布翻转把 gameId=9303 的 feed 卡翻到【回调链新建的真生成 version】
-- 缘由:回调链 handleCallback 建【新】version(N)+runtime_package(engineBundle=worker 真生成 bundle),但
-- 新 runtime_package 落库 status=0未发布且 project.current_version_id/feed_rank 仍指占位 93030。
-- 本脚本把三处翻到回调新版本 N使 feed 服务【回调链产物】(=真生成游戏),完成终局闭环。
-- 自动选 NgameId=9303 下 gen_task_id 非空(=回调建的,占位 93030 的 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 Ngen_task_id 非空 = 回调链建的;占位 93030 gen_task_id 为 NULL 被排除)
SET @vid := (SELECT id FROM game_version
WHERE game_id = 9303 AND gen_task_id IS NOT NULL AND deleted = b'0'
ORDER BY id DESC LIMIT 1);
-- ① 把回调新版本对应的 runtime_package 发布status 0→1占位 93030 包仍在但不再被 feed 指
UPDATE game_runtime_package SET status = 1, updater = '0', update_time = NOW()
WHERE game_id = 9303 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 = 9303 AND @vid IS NOT NULL;
-- ③ feed_rank.version_id 指向回调新版本 Nfeed 卡 /play 取此 version 的包 = 回调真生成产物)
UPDATE game_feed_rank SET version_id = @vid, updater = '0', update_time = NOW()
WHERE game_id = 9303 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=9303
UNION ALL SELECT 'feed_rank.version', version_id FROM game_feed_rank WHERE game_id=9303
UNION ALL SELECT 'new_pkg.status', status FROM game_runtime_package WHERE game_id=9303 AND version_id=@vid
UNION ALL SELECT 'new_pkg.bundleSize', bundle_size FROM game_runtime_package WHERE game_id=9303 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=9303 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=9303 AND version_id=@vid;