-- ============================================================================ -- P3·W-G1 派发面终局 e2e·gameId=9307 主路尝试#2(井字棋·已验证过九门题型,tap-targets driver) -- 缘由:主路#1(gen9306 whack-style)栽于 driver-coverage(design agent 给 driver:none、未导出 targets 数组→ -- harness 盲打打不中随机目标→score 恒 0、latch 不触发,8/9 门过仅 H 挂,非模型壁垒)。 -- #2 换【已实证过九门】的井字棋题型:brief 显式要求导出 targets[{x,y,idx,occupied}] 数组 + 携 tap-targets -- play_spec,design agent 据此产适配性 driver,harness 读格位自动点空格真玩 → moves↑ + 终局 latch。 -- ID:gameId=9307 / 占位 versionId=93070 / pkgId=93070 / feedRankId=93070 / trace_id='wg1-3bB-gen9307-001' -- 用法: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; DELETE FROM game_aigc_task WHERE trace_id = 'wg1-3bB-gen9307-001'; DELETE FROM game_feed_rank WHERE game_id = 9307; DELETE FROM game_runtime_package WHERE game_id = 9307; DELETE FROM game_version WHERE game_id = 9307; DELETE FROM game_project WHERE id = 9307; 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 (9307, 1, '井字棋(generic 真生成·回调入feed)', 'P3 W-G1 派发面视觉终局#2:井字棋经 worker 真生成 GameHostFactory 过九门(tap-targets 适配真玩),回调携 engineBundle 入 feed 真玩', 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==', 'P3,3b-B,dispatch,generic,real-gen,tic-tac-toe', 'generic', 'all', 4, 93070, NULL, b'0', 0, 0, '0', NOW(), '0', NOW(), b'0', 0); 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 (93070, 9307, 1, NULL, '', 0, '', 3, '0', NOW(), '0', NOW(), b'0', 0); 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 (93070, 9307, 93070, 'generic', '', 'index.html', '1.0.0', 'eager', 0, '', 'allow-scripts', '', 1, '0', NOW(), '0', NOW(), b'0', 0, NULL); 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 (93070, 9307, 93070, 0, 0.0000, 0.0000, 0.0000, 0, 1, '0', NOW(), '0', NOW(), b'0', 0); 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, 9307, NULL, 'generic', '做经典井字棋(三连棋)。竖屏逻辑视口390×844,深色背景铺满。居中3×3棋盘:左上约(30,255)边长约330,每格约110×110,亮色线条画网格;三列中心x≈85/195/305,三行中心y≈310/420/530。玩家执X:点【空】格落X(亮色居中);随后AI执O,用受控random在剩余空格选一格落O(简单AI即可);点已占格忽略。胜负:任一行/列/对角线三格同色=该方胜;九格满且无三连=平局。顶部单行文本HUD:对局中显示轮到谁("X走"/"O走"),终局显示结果("X胜"/"O胜"/"平局")。【终态契约】分胜负或平局即进终态:把_forensicsView().state().phase置\'gameover\'并【驻留】,绝不自动重开/不下一帧复位回playing(宿主每500ms轮询phase);gameover下点棋盘一律忽略不重置。【务必导出可测状态】_forensicsView().state()返回纯只读实时真值,除phase外额外导出:result(null|\'X\'|\'O\'|\'draw\'),moves(整数,已落子数,开局0每落子+1),board(长9数组,行优先,元素null|\'X\'|\'O\'),targets(长9数组,元素{x,y,idx,occupied}:x/y为该格中心逻辑像素坐标、idx0..8、occupied是否已落子布尔)。harness依targets自动点空格真玩、依moves/phase验进展与终局。反馈:每次落子触发getEngine().particles.spawnEmitter粒子+getEngine().audio.synth.synthSfx音效;分胜负时额外明显反馈。网格线/X/O/文字均亮色实心,X与O视觉区分清晰。', '0000000000000000000000000000000000000000000000000000000000009307', 0, 0, NULL, '', '', NULL, 'wg1-3bB-gen9307-001', '0', NOW(), '0', NOW(), NULL, b'0', 0); COMMIT; SELECT 'project' k, id, status, current_version_id FROM game_project WHERE id=9307 UNION ALL SELECT 'version', id, status, game_id FROM game_version WHERE id=93070 UNION ALL SELECT 'runtime_pkg', id, status, version_id FROM game_runtime_package WHERE id=93070 UNION ALL SELECT 'feed_rank', id, status, version_id FROM game_feed_rank WHERE id=93070; SELECT 'aigc_task' k, id, status, game_id, template_id, LEFT(prompt,24) prompt24, trace_id FROM game_aigc_task WHERE trace_id='wg1-3bB-gen9307-001';