-- pbl_compiler 表 DDL(自动生成,与 apps/pbls/scripts/ddl/pbls_tables.sql 同源) CREATE TABLE IF NOT EXISTS `pbl_compiler_version` ( `tenant_id` VARCHAR(32) NOT NULL COMMENT 租户ID(强制打头), `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键, `code` VARCHAR(64) NOT NULL COMMENT "版本编码", `semver` VARCHAR(64) NOT NULL COMMENT "语义化版本", `rules_hash` VARCHAR(32) NOT NULL COMMENT "规则集SHA256前缀", `entrypoint` VARCHAR(64) NOT NULL COMMENT "入口函数", `enabled` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "启用", `notes` TEXT NULL COMMENT "说明", `created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)", `updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)", PRIMARY KEY (`id`), UNIQUE KEY `uk_cv_code` (`tenant_id`, `code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT="编译器版本(29.6 确定性)"; CREATE TABLE IF NOT EXISTS `pbl_game_definition` ( `tenant_id` VARCHAR(32) NOT NULL COMMENT 租户ID(强制打头), `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键, `blueprint_id` BIGINT UNSIGNED NOT NULL COMMENT "来源蓝图", `blueprint_version_no` INT NOT NULL DEFAULT 0 COMMENT "蓝图版本", `compiler_version_id` BIGINT UNSIGNED NOT NULL COMMENT "编译版本", `content_fingerprint` VARCHAR(64) NOT NULL COMMENT "SHA-256 指纹", `definition_json` LONGTEXT NULL COMMENT "Game Definition 正文", `world_id` BIGINT UNSIGNED NOT NULL COMMENT "落库 world", `scene_id` BIGINT UNSIGNED NOT NULL COMMENT "落库 scene", `entity_count` INT NOT NULL DEFAULT 0 COMMENT "实体数", `event_count` INT NOT NULL DEFAULT 0 COMMENT "事件数", `quality_state` VARCHAR(64) NOT NULL COMMENT "编译时质量状态", `duration_ms` INT NOT NULL DEFAULT 0 COMMENT "耗时", `created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)", `updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)", PRIMARY KEY (`id`), UNIQUE KEY `uk_gd_fp` (`tenant_id`, `content_fingerprint`), KEY `idx_gd_bp` (`tenant_id`, `blueprint_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT="Game Definition(第9章 schema + 指纹)"; CREATE TABLE IF NOT EXISTS `pbl_capability_registry` ( `tenant_id` VARCHAR(32) NOT NULL COMMENT 租户ID(强制打头), `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键, `capability_key` VARCHAR(64) NOT NULL COMMENT "能力键", `category` VARCHAR(64) NOT NULL COMMENT "分类", `args_schema_json` LONGTEXT NULL COMMENT "参数JSON Schema", `permission_required` VARCHAR(64) NOT NULL COMMENT "所需权限", `is_enabled` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "启用", `version_no` INT NOT NULL DEFAULT 0 COMMENT "版本", `description` TEXT NULL COMMENT "说明", `created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)", `updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)", PRIMARY KEY (`id`), UNIQUE KEY `uk_cap_key` (`tenant_id`, `capability_key`, `version_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT="Capability Registry(第11章缺口补齐)"; CREATE TABLE IF NOT EXISTS `pbl_compile_task` ( `tenant_id` VARCHAR(64) NOT NULL COMMENT 租户ID(强制打头), `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键, `task_no` VARCHAR(64) NOT NULL COMMENT "任务流水号(确定性派生 CT+blueprint_id+version+seq)", `blueprint_id` BIGINT UNSIGNED NOT NULL COMMENT "蓝图ID", `blueprint_version` INT NOT NULL DEFAULT 0 COMMENT "蓝图版本(须已审批)", `compiler_version` VARCHAR(32) NOT NULL COMMENT "编译器版本号", `ruleset_version` VARCHAR(32) NOT NULL COMMENT "规则集版本", `status` VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT "appcodes:pbl_compile_status(pending/running/success/failed)", `approval_id` BIGINT UNSIGNED NULL COMMENT "关联审批记录(未审批拒绝 F-CP-01)", `game_def_id` BIGINT UNSIGNED NULL COMMENT "产出的 Game Definition ID(success 回填)", `content_fingerprint` VARCHAR(64) NULL COMMENT "产物 SHA-256 指纹(success 回填,US-11 比对锚点)", `error_code` VARCHAR(64) NULL COMMENT "失败错误码(PBL_E_*)", `error_msg` VARCHAR(2048) NULL COMMENT "失败原因(fail-closed 可追溯)", `triggered_by` VARCHAR(64) NULL COMMENT "触发人(审计)", `duration_ms` INT NOT NULL DEFAULT 0 COMMENT "耗时(易变,不参与指纹)", `started_at` DATETIME NULL COMMENT "开始时间", `finished_at` DATETIME NULL COMMENT "结束时间", `created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)", `updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)", PRIMARY KEY (`id`), UNIQUE KEY `uk_ct_task_no` (`tenant_id`, `task_no`), KEY `idx_ct_blueprint` (`tenant_id`, `blueprint_id`, `blueprint_version`), KEY `idx_ct_status` (`tenant_id`, `status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT="编译任务(approval_id 门禁,F-CP-01/US-10)";