-- ============================================================================
-- 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。
-- ID：gameId=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 的同根因兜底）
-- tenant：staging 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 先指占位 93030（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
  (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_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
  (93030, 9303, 93030, 'generic', '', 'index.html', '1.0.0', 'eager',
   0, '', 'allow-scripts', '', 1,
   '0', NOW(), '0', 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
  (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';
