games-development-ai/contracts/db-schemas/V2.0.0__create_game_aigc.sql
zizi 063ec4edf2 docs(rename): ③ 文档/契约漂移清理——contracts+docs+根文档 yudao 标识同步 com.wanxiang.huijing(follow-up,脚本)
- 范围:全仓除已完成的 game-cloud/game-admin(及排除区);91 文件
- cn.iocoder.yudao→com.wanxiang.huijing / cn.wanxiang.game→com.wanxiang.huijing.game / cn.iocoder.cloud→com.wanxiang / Yudao*→Huijing* / bare yudao→huijing
- 含 contracts/api-schemas(apiInterface FQCN)、docs/architecture+agent-specs(含中文名,git ls-files -z 修复)、AGENTS.md/CLAUDE.md 等根文档
- 保留不动:上游归属 URL(gitee/github yudaocode·YunaiV,改则断链+违反署名)、game-cloud Flyway 迁移注释(保 checksum)、lockfile(装包重生)
- 纯文档/字符串,零构建影响(game-cloud/game-admin 字节码未动)

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

51 lines
6.2 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.

-- =============================================================================
-- 契约 #2 DB 迁移 | 模块aigcgame-module-aigc"做得出"生成入口)| ownerWS2
-- 文件V2.0.0__create_game_aigc.sqlFlyway只新增已合入禁止修改回滚写新补偿迁移
-- 内容aigc 模块核心表 —— 生成任务(异步队列 + 状态机 + 失败分类 + traceId + 产物引用)
-- 脊柱对接:输入 prompt+template_id产物=GamePackage(契约#4),经 game_id/version_id 关联 project.game_version
-- 状态机对齐契约#6 Dify output + RocketMQ 队列态Dify/MQ/LLM 仅对接点,本迁移不建外部资源。
-- 写权属决策5aigc 成功后只回填 game_version.id 关联 + 生成元数据gen_task_id不写 game_version 的 package_url/checksum/bundle_size
-- 这些的权威写者=runtime 编译成功后回写(见 runtime V3.0.0 / runtime.yaml。本表 result_package_url 仅为只读冗余镜像,非权威源。
-- 约定InnoDB + utf8mb4显式列含 Huijing 审计列 creator/create_time/updater/update_time/deleted + tenant_id
-- 状态机用 tinyint非法流转由 AigcTaskService 校验DO 层不承载校验;中文列注释;关键查询建索引。
-- 错误码段aigc = 1-101-***-***
-- =============================================================================
-- -----------------------------------------------------------------------------
-- 表game_aigc_task —— 生成任务表AigcTask异步队列 + 状态机)
-- 状态机 status0 queued 排队 → 1 running 生成中 →(2 succeeded 成功 / 3 failed 失败 / 4 timed_out 超时)
-- 旁路0/1 → 5 canceled 已取消(用户主动取消)
-- 合法流转由 AigcTaskService 校验:非终态(0/1)可 cancel终态失败(3/4)可 retry(新建任务)
-- 状态来源queued/canceled 由本服务写running/succeeded/failed/timed_out 由生成流程(Dify 回调对接点)驱动
-- 产物落地决策5 写权属status=2 时只回填 version_id 关联(game_version.id) + 生成元数据(gen_task_id)
-- aigc 不写 game_version 的 package_url/checksum/bundle_size权威写者=runtime 编译成功后回写(见 runtime V3.0.0 / runtime.yaml
-- -----------------------------------------------------------------------------
CREATE TABLE `game_aigc_task` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '生成任务 ID= 对外 taskId',
`creator_user_id` BIGINT NOT NULL COMMENT '创作者用户 IDDataPermission创作者只见自己任务',
`game_id` BIGINT NULL COMMENT '关联游戏 IDproject.game_project.idstudio 草稿场景传入,产物经此落 game_version',
`version_id` BIGINT NULL COMMENT '产物落地的版本 IDproject.game_version.idstatus=2 成功后回填',
`template_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '玩法模板 ID→ 契约#6 input.templateId空则由 Dify 意图解析匹配)',
`prompt` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '创作者一句话自然语言 Prompt→ 契约#6 input.prompt',
`prompt_hash` CHAR(64) NOT NULL DEFAULT '' COMMENT 'Prompt sha256产物缓存键相同 hash 命中缓存可跳过 LLM对齐 GamePackage.provenance.promptHash',
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态机0 queued 排队 1 running 生成中 2 succeeded 成功 3 failed 失败 4 timed_out 超时 5 canceled 已取消',
`progress` TINYINT NOT NULL DEFAULT 0 COMMENT '进度百分比 0-100前端进度条 P-CRT-12',
`quality_score` DECIMAL(4,3) NULL COMMENT '生成质量分(0-1),对齐契约#6 Dify output 0-1succeeded 回填,质量门禁参考;→ 契约#6 output.qualityScore≠ telemetry/feed 的运营质量分(0-100),两者口径不同、不可互相回灌',
`failure_reason` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '失败原因分类status=3/4 必填,取值对齐契约#6 output.failureReasonunsafe_prompt/intent_unclear/no_template_match/config_invalid/llm_error/timeout/asset_gen_failed',
`result_package_url` VARCHAR(512) NOT NULL DEFAULT '' COMMENT '产物 GamePackage(manifest) OSS URL 的只读冗余镜像(= game_version.package_url。aigc 不写此字段;权威写者=runtime 编译成功后回写 game_version.package_url见 runtime V3.0.0 / runtime.yaml本列仅供查询展示',
`retry_of` BIGINT NULL COMMENT '若本任务为重试,指向原任务 IDP-CRT-09 重生成血缘)',
`trace_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '贯穿全链路 traceId→ 契约#6 input/output.traceIdDify 回调据此定位任务)',
`creator` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建者Huijing 审计列)',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`finish_time` DATETIME NULL COMMENT '终态完成时间2/3/4/5 时写入)',
`deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除0未删 1已删',
`tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户 IDHuijing 多租户兼容MVP 单租户=0',
PRIMARY KEY (`id`),
KEY `idx_creator_status` (`creator_user_id`, `status`) COMMENT '我的任务列表查询(创作者+状态)',
KEY `idx_status_create` (`status`, `create_time`) COMMENT '管理端排障/生成成功率统计(按状态+时间)',
KEY `idx_trace` (`trace_id`) COMMENT 'Dify 回调对接点据 traceId 定位任务',
KEY `idx_game` (`game_id`) COMMENT '按关联游戏查生成任务(脊柱:回 project.game_version'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '生成任务表(异步队列+状态机aigc "做得出"入口)';