games-development-ai/game-cloud/scripts/p3bB_scaffold_gen9303.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

90 lines
5.7 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-B 派发面终局 e2e·四态脚手架 + generic 生成任务gameId=9303一句话真生成
-- 缘由3b-B 证「提交 generic 任务 → 执行器轮询 CAS 认领 → dispatchGeneric 投递真 worker →
-- worker 真烧便宜模型 design+九门生成 GameHostFactory → 回调携 engineBundle 经 HMAC 验签落包入 feed」。
-- 与 3b-A(9302·stub 回 pong) 的差异:本款 engineBundle 是【真生成】(brief=限时点击小怪物得分),非固定 pong。
-- 本脚本建:① 已发布 project(gameId=9303)+占位 version(93030)+占位 pkg+feed_rank供组包/入 feed 四态成立);
-- ② game_aigc_task 一行(status=0 queued, template_id=generic, game_id=9303, prompt=一句话创意)
-- 供执行器 @Scheduled 扫到 → CAS 认领(0→1) → dispatchGeneric 投 worker :9401。
-- 回调链会另建【新】version(N)+runtime_package(engineBundle=worker 真生成 bundle);随后跑 p3bB_publish_flip.sql 翻 feed。
-- IDgameId=9303 / 占位 versionId=93030 / pkgId=93030 / feedRankId=93030 / taskId 自增(高位区,与 9201/9301/9302 零碰撞)
-- trace_id'wg1-3bB-gen9303-001'贯穿全链worker 回调 reqVO.traceId 须与此一致handleCallback 据此定位任务)
-- 手工 seed 行 creator/updater 填 '0'DefaultDBFieldHandler 无登录态取不到 userId 的同根因兜底)
-- tenantstaging tenant.enable=false → tenant_id=0
-- 幂等:先 DELETE 同 gameId/占位 ID 行 + 同 trace_id 任务再 INSERT纯重建可重复执行
-- 用法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 + 同 trace_id 任务,重跑前清场)
DELETE FROM game_aigc_task WHERE trace_id = 'wg1-3bB-gen9303-001';
DELETE FROM game_feed_rank WHERE game_id = 9303;
DELETE FROM game_runtime_package WHERE game_id = 9303;
DELETE FROM game_version WHERE game_id = 9303;
DELETE FROM game_project WHERE id = 9303;
-- ① project已发布(status=4)current_version_id 先指占位 93030flip 后改指回调新版本 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
(9303, 1, '打地鼠(generic 真生成·回调入feed)', 'P3 3b-B 派发面终局 e2e一句话创意经 worker 真生成 GameHostFactory 过九门,回调携 engineBundle 入 feed',
'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==',
'P3,3b-B,dispatch,generic,real-gen', 'generic', 'all',
4, 93030, NULL, b'0', 0, 0,
'0', NOW(), '0', 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
(93030, 9303, 1, NULL, '', 0, '',
3, '0', NOW(), '0', 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
(93030, 9303, 93030, 'generic', '', 'index.html', '1.0.0', 'eager',
0, '', 'allow-scripts', '', 1,
'0', NOW(), '0', 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
(93030, 9303, 93030, 0, 0.0000, 0.0000, 0.0000, 0, 1,
'0', NOW(), '0', NOW(), b'0', 0);
-- ⑤ generic 生成任务status=0 queued → 执行器 @Scheduled 扫到 CAS 认领 → dispatchGeneric 投 worker
-- prompt=一句话创意whack/点击得分型,避开 4 短板文本HUD/网格/CCD/拖拽);
-- prompt_hash 给占位非空值NOT NULL char(64);缓存键,本端到端不依赖命中);
-- failure_reason/result_package_url 占位空串NOT NULL
INSERT INTO game_aigc_task
(creator_user_id, game_id, version_id, template_id, prompt, prompt_hash,
status, progress, quality_score, failure_reason, result_package_url, retry_of, trace_id,
creator, create_time, updater, update_time, finish_time, deleted, tenant_id)
VALUES
(1, 9303, NULL, 'generic', '限时点击不断冒出的小怪物得分',
'0000000000000000000000000000000000000000000000000000000000000000',
0, 0, NULL, '', '', NULL, 'wg1-3bB-gen9303-001',
'0', NOW(), '0', NOW(), NULL, b'0', 0);
COMMIT;
-- 回读四态 + 任务
SELECT 'project' k, id, status, current_version_id FROM game_project WHERE id=9303
UNION ALL SELECT 'version', id, status, game_id FROM game_version WHERE id=93030
UNION ALL SELECT 'runtime_pkg', id, status, version_id FROM game_runtime_package WHERE id=93030
UNION ALL SELECT 'feed_rank', id, status, version_id FROM game_feed_rank WHERE id=93030;
SELECT 'aigc_task' k, id, status, game_id, template_id, prompt, trace_id
FROM game_aigc_task WHERE trace_id='wg1-3bB-gen9303-001';