pbls/scripts/ddl/pbls_tables.sql

669 lines
41 KiB
SQL
Raw 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.

-- pbls 36 表 DDLMariaDB 10.x 方言,由 scripts/gen_artifacts.py 从同一 spec 生成)
-- 硬约束tenant_id 打头 / id 为 BIGINT UNSIGNED AUTO_INCREMENT 主键;-- 不使用 外键约束 / 枚举列类型 / 时间戳列类型 / 位图列类型(枚举值走 appcodes 编码表,时间列走 DATETIME 由应用层写入)
-- 方言来源projects/pbls/env/test.json -> db.engine = mariadb禁 BIGSERIAL/SERIAL/nextval 等 PG 语法)
SET NAMES utf8mb4;
-- ===== pbl_blueprint (M1) =====
CREATE TABLE IF NOT EXISTS `pbl_blueprint` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`code` VARCHAR(64) NOT NULL COMMENT "蓝图编码",
`title` VARCHAR(128) NOT NULL COMMENT "标题",
`subject` VARCHAR(64) NOT NULL COMMENT "学科",
`grade` VARCHAR(64) NOT NULL COMMENT "年级",
`description` TEXT NULL COMMENT "说明",
`quality_state` VARCHAR(64) NOT NULL COMMENT "质量状态 pbl_quality_state",
`generation_source` VARCHAR(64) NOT NULL COMMENT "生成来源 llm/template_fallback/manual",
`approval_status` VARCHAR(64) NOT NULL COMMENT "审批状态",
`visibility` VARCHAR(64) NOT NULL COMMENT "可见范围",
`content_json` LONGTEXT NULL COMMENT "蓝图正文(结构化模型,非散文)",
`version_no` INT NOT NULL DEFAULT 0 COMMENT "当前版本",
`compiler_version_id` BIGINT UNSIGNED NOT NULL COMMENT "编译版本",
`world_id` BIGINT UNSIGNED NOT NULL COMMENT "编译产物落 world 的溯源ID",
`created_by` VARCHAR(32) NOT 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_bp_tenant_code` (`tenant_id`, `code`),
KEY `idx_bp_tenant_state` (`tenant_id`, `quality_state`),
KEY `idx_bp_tenant_creator` (`tenant_id`, `created_by`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="PBL 蓝图聚合根第8章 schema 落库)";
CREATE TABLE IF NOT EXISTS `pbl_blueprint_learning_goal` (
`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 "所属蓝图",
`obj_uid` VARCHAR(32) NOT NULL COMMENT "子对象UID",
`code` VARCHAR(64) NOT NULL COMMENT "目标编码",
`title` VARCHAR(128) NOT NULL COMMENT "标题",
`description` TEXT NULL COMMENT "描述",
`bloom_level` VARCHAR(64) NOT NULL COMMENT "布鲁姆层级",
`measurable` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "是否可测",
`order_no` 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`),
KEY `idx_blueprint_learning_goal_bp` (`tenant_id`, `blueprint_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="蓝图子对象 - 学习目标";
CREATE TABLE IF NOT EXISTS `pbl_blueprint_role` (
`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 "所属蓝图",
`obj_uid` VARCHAR(32) NOT NULL COMMENT "子对象UID",
`code` VARCHAR(64) NOT NULL COMMENT "角色编码",
`title` VARCHAR(128) NOT NULL COMMENT "角色名",
`persona_txt` TEXT NULL COMMENT "人设",
`capabilities_json` LONGTEXT NULL COMMENT "能力引用",
`headcount` INT NOT NULL DEFAULT 0 COMMENT "名额",
`order_no` 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`),
KEY `idx_blueprint_role_bp` (`tenant_id`, `blueprint_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="蓝图子对象 - PBL 角色";
CREATE TABLE IF NOT EXISTS `pbl_blueprint_mission` (
`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 "所属蓝图",
`obj_uid` VARCHAR(32) NOT NULL COMMENT "子对象UID",
`code` VARCHAR(64) NOT NULL COMMENT "任务域编码",
`title` VARCHAR(128) NOT NULL COMMENT "驱动问题域",
`scenario_txt` TEXT NULL COMMENT "情境",
`unlock_condition_json` LONGTEXT NULL COMMENT "解锁条件",
`order_no` 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`),
KEY `idx_blueprint_mission_bp` (`tenant_id`, `blueprint_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="蓝图子对象 - 驱动问题/Mission";
CREATE TABLE IF NOT EXISTS `pbl_blueprint_task` (
`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 "所属蓝图",
`obj_uid` VARCHAR(32) NOT NULL COMMENT "子对象UID",
`mission_id` BIGINT UNSIGNED NOT NULL COMMENT "所属Mission",
`code` VARCHAR(64) NOT NULL COMMENT "编码",
`title` VARCHAR(128) NOT NULL COMMENT "任务名",
`steps_json` LONGTEXT NULL COMMENT "步骤",
`difficulty` VARCHAR(64) NOT NULL COMMENT "难度",
`order_no` 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`),
KEY `idx_blueprint_task_bp` (`tenant_id`, `blueprint_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="蓝图子对象 - 任务";
CREATE TABLE IF NOT EXISTS `pbl_blueprint_artifact_spec` (
`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 "所属蓝图",
`obj_uid` VARCHAR(32) NOT NULL COMMENT "子对象UID",
`code` VARCHAR(64) NOT NULL COMMENT "编码",
`title` VARCHAR(128) NOT NULL COMMENT "产出物名",
`artifact_type` VARCHAR(64) NOT NULL COMMENT "产出类型",
`required_fields_json` LONGTEXT NULL COMMENT "必填字段",
`order_no` 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`),
KEY `idx_blueprint_artifact_spec_bp` (`tenant_id`, `blueprint_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="蓝图子对象 - 产出物规格";
CREATE TABLE IF NOT EXISTS `pbl_blueprint_evidence_spec` (
`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 "所属蓝图",
`obj_uid` VARCHAR(32) NOT NULL COMMENT "子对象UID",
`evidence_type` VARCHAR(64) NOT NULL COMMENT "证据类型",
`source` VARCHAR(64) NOT NULL COMMENT "来源",
`min_count` INT NOT NULL DEFAULT 0 COMMENT "最少条数",
`rubric_criterion_uid` VARCHAR(32) NOT NULL COMMENT "对齐的评分准则UID",
`order_no` 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`),
KEY `idx_blueprint_evidence_spec_bp` (`tenant_id`, `blueprint_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="蓝图子对象 - 证据规格";
CREATE TABLE IF NOT EXISTS `pbl_blueprint_reflection_spec` (
`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 "所属蓝图",
`obj_uid` VARCHAR(32) NOT NULL COMMENT "子对象UID",
`trigger` VARCHAR(64) NOT NULL COMMENT "触发点",
`prompt_txt` TEXT NULL COMMENT "反思引导语",
`min_words` INT NOT NULL DEFAULT 0 COMMENT "最少字数",
`evidence_type` VARCHAR(64) NOT NULL COMMENT "产出证据类型",
`order_no` 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`),
KEY `idx_bp_rs_bp` (`tenant_id`, `blueprint_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="蓝图子对象 - 反思规格";
CREATE TABLE IF NOT EXISTS `pbl_blueprint_version` (
`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 "蓝图ID",
`version_no` INT NOT NULL DEFAULT 0 COMMENT "版本号",
`snapshot_json` LONGTEXT NULL COMMENT "全量快照",
`change_delta_json` LONGTEXT NULL COMMENT "结构化增量",
`quality_state` VARCHAR(64) NOT NULL COMMENT "质量状态",
`generation_source` VARCHAR(64) NOT NULL COMMENT "生成来源",
`created_by` VARCHAR(32) NOT 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_bpv` (`tenant_id`, `blueprint_id`, `version_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="蓝图版本change_delta 证明对话式改模型)";
CREATE TABLE IF NOT EXISTS `pbl_template` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`code` VARCHAR(64) NOT NULL COMMENT "模板编码",
`title` VARCHAR(128) NOT NULL COMMENT "标题",
`subject` VARCHAR(64) NOT NULL COMMENT "学科",
`grade` VARCHAR(64) NOT NULL COMMENT "年级",
`skeleton_json` LONGTEXT NULL COMMENT "骨架",
`fallback_slot_json` LONGTEXT NULL COMMENT "兜底槽位LLM不可用时填充",
`is_builtin` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "内置",
`use_count` INT NOT NULL DEFAULT 0 COMMENT "实例化次数",
`quality_state` VARCHAR(64) NOT 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_tpl_tenant_code` (`tenant_id`, `code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="PBL 模板(含离线兜底槽位)";
-- ===== pbl_validation (M2) =====
CREATE TABLE IF NOT EXISTS `pbl_validation_rule` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`code` VARCHAR(64) NOT NULL COMMENT "规则编码",
`dimension` VARCHAR(64) NOT NULL COMMENT "维度",
`title` VARCHAR(128) NOT NULL COMMENT "标题",
`rule_json` LONGTEXT NULL COMMENT "规则体",
`threshold_json` LONGTEXT NULL COMMENT "阈值(可配,Q-OPEN-8)",
`severity` VARCHAR(64) NOT NULL COMMENT "严重度",
`enabled` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "启用",
`version_no` 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_vr_code` (`tenant_id`, `code`, `version_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="校验规则14 维,规则 JSON 形态 script_type=1";
CREATE TABLE IF NOT EXISTS `pbl_validation_result` (
`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 "蓝图ID",
`blueprint_version_no` INT NOT NULL DEFAULT 0 COMMENT "校验时版本",
`dimension_count` INT NOT NULL DEFAULT 0 COMMENT "维度数(=14)",
`passed_count` INT NOT NULL DEFAULT 0 COMMENT "通过数",
`failed_count` INT NOT NULL DEFAULT 0 COMMENT "失败数",
`score` DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT "得分",
`quality_state` VARCHAR(64) NOT NULL COMMENT "质量状态",
`findings_json` LONGTEXT NULL COMMENT "逐维结论",
`rule_set_version` VARCHAR(64) NOT NULL COMMENT "规则集版本",
`created_by` VARCHAR(32) NOT 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`),
KEY `idx_vres_bp` (`tenant_id`, `blueprint_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="校验结果14 维 + 5 级质量状态)";
-- ===== pbl_compiler (M3) =====
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章缺口补齐";
-- ===== pbl_agent_runtime (M4) =====
CREATE TABLE IF NOT EXISTS `pbl_agent_def` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`code` VARCHAR(64) NOT NULL COMMENT "Agent编码",
`agent_type` VARCHAR(64) NOT NULL COMMENT "类型",
`name` VARCHAR(128) NOT NULL COMMENT "名称",
`model_route` VARCHAR(64) NOT NULL COMMENT "pipeline-llm 路由",
`system_prompt_txt` TEXT NULL COMMENT "提示词",
`tool_whitelist_json` LONGTEXT NULL COMMENT "工具白名单",
`permission_mode` VARCHAR(64) NOT NULL COMMENT "read/write 模式",
`is_enabled` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "启用",
`version_no` 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_ad_code` (`tenant_id`, `code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="Agent 定义Designer/Critic";
CREATE TABLE IF NOT EXISTS `pbl_tool_registry` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`tool_key` VARCHAR(64) NOT NULL COMMENT "工具键",
`title` VARCHAR(128) NOT NULL COMMENT "标题",
`agent_scope` VARCHAR(64) NOT NULL COMMENT "作用域",
`permission_required` VARCHAR(64) NOT NULL COMMENT "所需权限",
`enabled` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "启用",
`params_schema_json` LONGTEXT NULL COMMENT "参数白名单Schema",
`disabled_reason` VARCHAR(64) NOT NULL COMMENT "禁用原因",
`version_no` 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_tr_key` (`tenant_id`, `tool_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="工具注册表13 启用 / 9 禁用含 pbl.publish";
CREATE TABLE IF NOT EXISTS `pbl_agent_trace` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`trace_uid` VARCHAR(32) NOT NULL COMMENT "轨迹UID",
`agent_code` VARCHAR(64) NOT NULL COMMENT "Agent",
`blueprint_id` BIGINT UNSIGNED NOT NULL COMMENT "目标蓝图",
`input_ref_json` LONGTEXT NULL COMMENT "要素1 输入引用",
`thought_txt` TEXT NULL COMMENT "要素2 思考",
`action_code` VARCHAR(64) NOT NULL COMMENT "要素3 动作",
`action_params_json` LONGTEXT NULL COMMENT "要素4 动作参数",
`observation_json` LONGTEXT NULL COMMENT "要素5 观察",
`result_state` VARCHAR(64) NOT NULL COMMENT "要素6 结果状态",
`llm_calls` INT NOT NULL DEFAULT 0 COMMENT "要素7 LLM调用数",
`duration_ms` INT NOT NULL DEFAULT 0 COMMENT "耗时",
`created_by` VARCHAR(32) NOT 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_at_uid` (`tenant_id`, `trace_uid`),
KEY `idx_at_tenant` (`tenant_id`, `created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="Agent 执行轨迹第28章 7 要素)";
CREATE TABLE IF NOT EXISTS `pbl_agent_tool_call` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`trace_id` BIGINT UNSIGNED NOT NULL COMMENT "轨迹ID",
`tool_key` VARCHAR(64) NOT NULL COMMENT "工具键",
`request_json` LONGTEXT NULL COMMENT "请求",
`response_json` LONGTEXT NULL COMMENT "响应",
`ok` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "成功",
`error_code` VARCHAR(64) NOT NULL COMMENT "错误码",
`adjudication_code` 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`),
KEY `idx_tc_trace` (`tenant_id`, `trace_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="工具调用明细(服务端裁决留痕)";
CREATE TABLE IF NOT EXISTS `pbl_approval` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`approval_uid` VARCHAR(32) NOT NULL COMMENT "审批UID",
`approval_type` VARCHAR(64) NOT NULL COMMENT "类型",
`target_type` VARCHAR(64) NOT NULL COMMENT "对象类型",
`target_id` BIGINT UNSIGNED NOT NULL COMMENT "对象ID",
`payload_json` LONGTEXT NULL COMMENT "变更内容",
`status` VARCHAR(64) NOT NULL COMMENT "状态",
`requested_by` VARCHAR(32) NOT NULL COMMENT "发起人",
`decided_by` VARCHAR(32) NOT NULL COMMENT "决策人",
`decided_at` DATETIME NULL NULL COMMENT "决策时间",
`comment_txt` 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_ap_uid` (`tenant_id`, `approval_uid`),
KEY `idx_ap_status` (`tenant_id`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="人工审批单14.2 四类,无绕过路径)";
CREATE TABLE IF NOT EXISTS `pbl_llm_call_log` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`call_uid` VARCHAR(32) NOT NULL COMMENT "调用UID",
`agent_code` VARCHAR(64) NOT NULL COMMENT "Agent",
`route` VARCHAR(64) NOT NULL COMMENT "路由",
`model` VARCHAR(64) NOT NULL COMMENT "实际模型",
`prompt_hash` VARCHAR(32) NOT NULL COMMENT "提示词哈希",
`completion_tokens` INT NOT NULL DEFAULT 0 COMMENT "tokens",
`latency_ms` INT NOT NULL DEFAULT 0 COMMENT "时延",
`status` VARCHAR(64) NOT NULL COMMENT "状态",
`error_code` VARCHAR(64) NOT NULL COMMENT "错误码",
`fallback_used` TINYINT(1) 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_lc_uid` (`tenant_id`, `call_uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="LLM 调用日志(超时/重试/限流/兜底留痕)";
-- ===== pbl_evidence (M5) =====
CREATE TABLE IF NOT EXISTS `pbl_artifact` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`artifact_uid` VARCHAR(32) NOT NULL COMMENT "产出UID",
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
`blueprint_id` BIGINT UNSIGNED NOT NULL COMMENT "蓝图",
`team_id` BIGINT UNSIGNED NOT NULL COMMENT "团队",
`creator_id` VARCHAR(32) NOT NULL COMMENT "作者",
`title` VARCHAR(128) NOT NULL COMMENT "标题",
`artifact_type` VARCHAR(64) NOT NULL COMMENT "类型",
`content_json` LONGTEXT NULL COMMENT "内容",
`version_no` INT NOT NULL DEFAULT 0 COMMENT "版本",
`status` VARCHAR(64) NOT NULL COMMENT "状态",
`submitted_at` DATETIME NULL 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_art_uid` (`tenant_id`, `artifact_uid`),
KEY `idx_art_session` (`tenant_id`, `session_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="学生产出物(版本内联 version_no";
CREATE TABLE IF NOT EXISTS `pbl_evidence` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`artifact_id` BIGINT UNSIGNED NOT NULL COMMENT "产出物",
`evidence_type` VARCHAR(64) NOT NULL COMMENT "证据类型",
`source_event_id` VARCHAR(32) NOT NULL COMMENT "来源 runtime_event",
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
`learner_id` VARCHAR(32) NOT NULL COMMENT "学习者",
`blueprint_id` BIGINT UNSIGNED NOT NULL COMMENT "蓝图",
`payload_json` LONGTEXT NULL COMMENT "证据体",
`occurred_at` DATETIME NOT NULL COMMENT "发生时间",
`dedup_key` VARCHAR(32) NOT 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_ev_dedup` (`tenant_id`, `source_event_id`, `evidence_type`),
KEY `idx_ev_learner` (`tenant_id`, `learner_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="学习证据(幂等采集,唯一索引防重)";
-- ===== pbl_assessment (M6) =====
CREATE TABLE IF NOT EXISTS `pbl_rubric` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`code` VARCHAR(64) NOT NULL COMMENT "编码",
`title` VARCHAR(128) NOT NULL COMMENT "标题",
`blueprint_id` BIGINT UNSIGNED NOT NULL COMMENT "蓝图",
`criteria_json` LONGTEXT NULL COMMENT "准则数组(含 learning_goal_id/weight)",
`total_weight` DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT "权重合计",
`version_no` INT NOT NULL DEFAULT 0 COMMENT "版本",
`status` VARCHAR(64) NOT NULL COMMENT "状态",
`approval_id` BIGINT UNSIGNED NOT 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_ru_code` (`tenant_id`, `code`, `version_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="Rubric准则内联 criteria_json权重合计=100%";
CREATE TABLE IF NOT EXISTS `pbl_assessment_record` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`record_uid` VARCHAR(32) NOT NULL COMMENT "记录UID",
`learner_id` VARCHAR(32) NOT NULL COMMENT "学习者",
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
`blueprint_id` BIGINT UNSIGNED NOT NULL COMMENT "蓝图",
`artifact_id` BIGINT UNSIGNED NOT NULL COMMENT "产出物",
`evidence_id` BIGINT UNSIGNED NOT NULL COMMENT "主证据",
`rubric_id` BIGINT UNSIGNED NOT NULL COMMENT "Rubric",
`scores_json` LONGTEXT NULL COMMENT "逐准则得分",
`total_score` DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT "加权总分",
`max_score` DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT "满分",
`band` VARCHAR(64) NOT NULL COMMENT "等级",
`alignment_json` LONGTEXT NULL COMMENT "与学习目标对齐",
`feedback_txt` TEXT NULL COMMENT "反馈",
`assessor_type` VARCHAR(64) NOT NULL COMMENT "评估者类型",
`assessor_id` VARCHAR(32) NOT 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_ar_uid` (`tenant_id`, `record_uid`),
KEY `idx_ar_learner` (`tenant_id`, `learner_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="评估记录total_score 派生 + 对齐判定)";
-- ===== pbl_kdb_ext (M7) =====
CREATE TABLE IF NOT EXISTS `pbl_kdb_item` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`code` VARCHAR(64) NOT NULL COMMENT "条目编码",
`item_type` VARCHAR(64) NOT NULL COMMENT "类型",
`title` VARCHAR(128) NOT NULL COMMENT "标题",
`summary_txt` TEXT NULL COMMENT "摘要",
`payload_json` LONGTEXT NULL COMMENT "内容(无向量,Q-OPEN-5)",
`source` VARCHAR(64) NOT NULL COMMENT "来源",
`is_write_locked` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "写锁(恒1)",
`status` VARCHAR(64) NOT NULL COMMENT "状态",
`version_no` 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_kdb_code` (`tenant_id`, `code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="KDB 条目建表不写入is_write_locked 恒 1";
CREATE TABLE IF NOT EXISTS `pbl_kdb_query_log` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`query_uid` VARCHAR(32) NOT NULL COMMENT "查询UID",
`caller_type` VARCHAR(64) NOT NULL COMMENT "调用方类型",
`caller_id` VARCHAR(32) NOT NULL COMMENT "调用方",
`query_json` LONGTEXT NULL COMMENT "查询条件",
`hit_count` INT NOT NULL DEFAULT 0 COMMENT "命中数",
`latency_ms` INT NOT NULL DEFAULT 0 COMMENT "时延",
`ok` TINYINT(1) 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_kql_uid` (`tenant_id`, `query_uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="KDB 检索日志(只读侧留痕)";
-- ===== pbl_domain_ext (M8) =====
CREATE TABLE IF NOT EXISTS `pbl_tenant` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`tenant_uid` VARCHAR(32) NOT NULL COMMENT "租户UID",
`name` VARCHAR(128) NOT NULL COMMENT "名称",
`kind` VARCHAR(64) NOT NULL COMMENT "类型",
`plan` VARCHAR(64) NOT NULL COMMENT "套餐",
`seat_limit` INT NOT NULL DEFAULT 0 COMMENT "席位",
`status` VARCHAR(64) NOT NULL COMMENT "状态",
`config_json` LONGTEXT 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_ten_uid` (`tenant_id`, `tenant_uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="租户多租户边界第25章不改基表";
CREATE TABLE IF NOT EXISTS `pbl_class` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`class_uid` VARCHAR(32) NOT NULL COMMENT "班级UID",
`name` VARCHAR(128) NOT NULL COMMENT "名称",
`grade` VARCHAR(64) NOT NULL COMMENT "年级",
`teacher_id` VARCHAR(32) NOT NULL COMMENT "教师",
`student_count` INT NOT NULL DEFAULT 0 COMMENT "学生数",
`roster_json` LONGTEXT NULL COMMENT "花名册",
`status` VARCHAR(64) NOT 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_cls_uid` (`tenant_id`, `class_uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="班级(花名册内联 roster_json";
CREATE TABLE IF NOT EXISTS `pbl_team` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`team_uid` VARCHAR(32) NOT NULL COMMENT "团队UID",
`class_id` BIGINT UNSIGNED NOT NULL COMMENT "班级",
`name` VARCHAR(128) NOT NULL COMMENT "名称",
`mission_id` BIGINT UNSIGNED NOT NULL COMMENT "Mission",
`members_json` LONGTEXT NULL COMMENT "成员",
`capacity` INT NOT NULL DEFAULT 0 COMMENT "容量",
`status` VARCHAR(64) NOT NULL COMMENT "状态",
`session_id` BIGINT UNSIGNED NOT 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_team_uid` (`tenant_id`, `team_uid`),
KEY `idx_team_class` (`tenant_id`, `class_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="团队(成员内联 members_json不改基表";
-- ===== pbl_scense_ext (M9) =====
CREATE TABLE IF NOT EXISTS `pbl_session_member` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
`user_id` VARCHAR(32) NOT NULL COMMENT "用户",
`role_code` VARCHAR(64) NOT NULL COMMENT "角色",
`team_id` BIGINT UNSIGNED NOT NULL COMMENT "团队",
`joined_at` DATETIME NULL NULL COMMENT "加入时间",
`last_seen_at` DATETIME NULL NULL COMMENT "心跳",
`state_version` BIGINT NOT NULL DEFAULT 0 COMMENT "已见状态版本",
`status` VARCHAR(64) NOT 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_sm` (`tenant_id`, `session_id`, `user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="会话成员(复用 world_session不污染基表";
CREATE TABLE IF NOT EXISTS `pbl_playtest_feedback` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
`user_id` VARCHAR(32) NOT NULL COMMENT "用户",
`blueprint_id` BIGINT UNSIGNED NOT NULL COMMENT "蓝图",
`feedback_type` VARCHAR(64) NOT NULL COMMENT "类型",
`rating` INT NOT NULL DEFAULT 0 COMMENT "评分",
`content_txt` TEXT NULL COMMENT "内容",
`context_json` LONGTEXT NULL COMMENT "上下文",
`handled` TINYINT(1) 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`),
KEY `idx_pf_session` (`tenant_id`, `session_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="Playtest 反馈/反思reflection 走证据链外的轻量表)";
CREATE TABLE IF NOT EXISTS `pbl_ui_page_registry` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`page_key` VARCHAR(64) NOT NULL COMMENT "页面键",
`title` VARCHAR(128) NOT NULL COMMENT "标题",
`route` VARCHAR(64) NOT NULL COMMENT "路由",
`widget_type` VARCHAR(64) NOT NULL COMMENT "渲染组件",
`requires_role` VARCHAR(64) NOT NULL COMMENT "所需角色",
`budget_ms` INT NOT NULL DEFAULT 0 COMMENT "渲染预算",
`enabled` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "启用",
`meta_json` LONGTEXT 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_upr_key` (`tenant_id`, `page_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="前端覆盖层页面注册12 页面 + 时延预算)";
-- ===== pbl_runtime_ext (M11) =====
CREATE TABLE IF NOT EXISTS `pbl_runtime_event` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`event_uid` VARCHAR(32) NOT NULL COMMENT "事件UID",
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
`world_id` BIGINT UNSIGNED NOT NULL COMMENT "世界",
`actor_id` VARCHAR(32) NOT NULL COMMENT "触发者",
`event_type` VARCHAR(64) NOT NULL COMMENT "事件类型",
`payload_json` LONGTEXT NULL COMMENT "事件体",
`causation_id` VARCHAR(32) NOT NULL COMMENT "因果链",
`state_version` BIGINT NOT NULL DEFAULT 0 COMMENT "状态版本",
`seq` BIGINT NOT NULL DEFAULT 0 COMMENT "会话内单调序号",
`occurred_at` DATETIME NOT 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_re_uid` (`tenant_id`, `event_uid`, `occurred_at`),
KEY `idx_re_session_seq` (`tenant_id`, `session_id`, `seq`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="运行时事件append-only按月 RANGE 分区)",
KEY `idx_re_part` (`occurred_at`)
PARTITION BY RANGE COLUMNS(`occurred_at`) (
PARTITION p2026 VALUES LESS THAN ('2026-01-01'),
PARTITION p2027 VALUES LESS THAN ('2027-01-01'),
PARTITION p2028 VALUES LESS THAN ('2028-01-01'),
PARTITION p2029 VALUES LESS THAN ('2029-01-01'),
PARTITION p2030 VALUES LESS THAN ('2030-01-01'),
PARTITION p2031 VALUES LESS THAN ('2031-01-01')
PARTITION pmax VALUES LESS THAN (MAXVALUE)
);
CREATE TABLE IF NOT EXISTS `pbl_entity_state` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
`entity_id` VARCHAR(32) NOT NULL COMMENT "实体标识",
`state_json` LONGTEXT NULL COMMENT "状态",
`state_version` BIGINT NOT NULL DEFAULT 0 COMMENT "单调版本",
`checksum` VARCHAR(32) NOT NULL COMMENT "状态摘要",
`updated_by` VARCHAR(32) NOT 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_es` (`tenant_id`, `session_id`, `entity_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="实体状态服务端权威state_version 客户端禁写)";
CREATE TABLE IF NOT EXISTS `pbl_world_state_snapshot` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT ID(),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ,
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
`snapshot_uid` VARCHAR(32) NOT NULL COMMENT "快照UID",
`state_fingerprint` VARCHAR(32) NOT NULL COMMENT "状态指纹",
`entities_json` LONGTEXT NULL COMMENT "实体集",
`events_through_seq` BIGINT NOT NULL DEFAULT 0 COMMENT "截至序号",
`reason` VARCHAR(64) NOT 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_wss_uid` (`tenant_id`, `snapshot_uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="世界状态快照(掉线补齐/离线兜底)";
-- ===== 枚举 6+2 组由 pbl_appcodes.load_pbl_appcodes() 幂等注入 appcodes本文件不含 INSERT =====