-- pbl_compiler 表 DDL(自动生成,与 apps/pbls/scripts/ddl/pbls_tables.sql 同源) CREATE TABLE IF NOT EXISTS `pbl_compiler_version` ( `tenant_id` VARCHAR(32) NOT NULL 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_general_ci COMMENT="编译器版本(29.6 确定性)"; CREATE TABLE IF NOT EXISTS `pbl_game_definition` ( `tenant_id` VARCHAR(32) NOT NULL 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(32) 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_general_ci COMMENT="Game Definition(第9章 schema + 指纹)"; CREATE TABLE IF NOT EXISTS `pbl_capability_registry` ( `tenant_id` VARCHAR(32) NOT NULL 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_general_ci COMMENT="Capability Registry(第11章缺口补齐)";