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>
72 lines
4.5 KiB
SQL
72 lines
4.5 KiB
SQL
-- ============================================================================
|
||
-- 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 直写)。
|
||
-- 本脚本只建一款【已发布 project(gameId=9302)+ 占位 version(93020)+ feed_rank】,供:
|
||
-- ① 提交 generic 任务携 gameId=9302(project 须先存在);
|
||
-- ② 回调链建【新】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 行
|
||
-- ID:gameId=9302 / 占位 versionId=93020 / pkgId=93020 / feedRankId=93020(高位区,与 9201/9301 零碰撞)
|
||
-- 占位 version 93020 的 package_json 为空(feed 卡先有占位包,翻到回调新版本 N 后服务真 pong)。
|
||
-- 幂等:先 DELETE 同 gameId/占位 ID 行再 INSERT(纯重建,可重复执行)。注意:不删回调新建的 version(N≠93020)。
|
||
-- tenant:staging 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 先指占位 93020(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
|
||
(9302, 1, '弹球(generic 派发·回调入feed)', 'P3 3b-A 派发面 e2e:generic 任务派发 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_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
|
||
(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_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
|
||
(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;
|