pbls/scripts/ddl/pbls_tables.sql

739 lines
40 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.

-- =============================================================================
-- PBL Agent OS Phase 0/1 —— 全量建表 DDL36 表)
-- 方言mariadb
-- * 主键统一 BIGINT NOT NULL AUTO_INCREMENT
-- * 编码/枚举列统一 varchar(32)(禁 ENUM
-- * 时间列统一 datetime禁 TIMESTAMP
-- * 禁 FOREIGN KEY关联靠应用层 + 索引)
-- * 每张业务表首列强制 tenant_id varchar(32) NOT NULL并作为复合索引首列
-- * ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
-- * 全部 CREATE TABLE IF NOT EXISTS —— 幂等可重复执行
-- 来源projects/pbls/docs/01-design/data-model.md36 表)
-- =============================================================================
SET NAMES utf8mb4;
-- -----------------------------------------------------------------------------
-- M1a pbl_blueprint —— 蓝图聚合根 + 7 类子对象 + 版本 + 模板11 表)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pbl_blueprint` (
`tenant_id` varchar(32) NOT NULL COMMENT '租户ID强制打头',
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`code` varchar(32) NOT NULL COMMENT '蓝图编码',
`name` varchar(128) NOT NULL COMMENT '蓝图名称',
`subject` varchar(32) DEFAULT NULL COMMENT '学科编码',
`grade` varchar(32) DEFAULT NULL COMMENT '学段编码',
`duration_hours` int NOT NULL DEFAULT 0 COMMENT '课时数',
`status` varchar(32) NOT NULL DEFAULT 'draft' COMMENT '状态 draft/validating/validated/compiling/compiled/published/archived',
`quality_level` varchar(32) NOT NULL DEFAULT 'L0' COMMENT '质量等级 L0~L4',
`current_version` bigint NOT NULL DEFAULT 0 COMMENT '当前版本号',
`template_id` bigint DEFAULT NULL COMMENT '来源模板ID无FK',
`summary` varchar(512) DEFAULT NULL COMMENT '一句话摘要',
`owner_id` varchar(32) DEFAULT NULL COMMENT '所有者',
`extra` longtext DEFAULT NULL COMMENT '扩展JSON',
`is_deleted` tinyint NOT NULL DEFAULT 0 COMMENT '逻辑删除',
`create_user` varchar(32) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_user` varchar(32) DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_blueprint_tenant_code` (`tenant_id`,`code`),
KEY `ix_pbl_blueprint_tenant_status` (`tenant_id`,`status`),
KEY `ix_pbl_blueprint_tenant_subject` (`tenant_id`,`subject`,`grade`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL蓝图聚合根';
CREATE TABLE IF NOT EXISTS `pbl_blueprint_version` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`blueprint_id` bigint NOT NULL COMMENT '蓝图ID无FK',
`version` bigint NOT NULL COMMENT '版本号从1递增',
`snapshot` longtext NOT NULL COMMENT '版本全量快照JSON确定性序列化',
`change_delta` longtext DEFAULT NULL COMMENT '与上一版差异JSON',
`content_hash` varchar(64) NOT NULL COMMENT '快照sha256',
`comment` varchar(512) DEFAULT NULL,
`create_user` varchar(32) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_bpver_tenant_bp_ver` (`tenant_id`,`blueprint_id`,`version`),
KEY `ix_pbl_bpver_tenant_hash` (`tenant_id`,`content_hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='蓝图版本快照与change_delta';
CREATE TABLE IF NOT EXISTS `pbl_blueprint_template` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`code` varchar(32) NOT NULL COMMENT '模板编码',
`name` varchar(128) NOT NULL,
`category` varchar(32) DEFAULT NULL COMMENT '模板分类',
`subject` varchar(32) DEFAULT NULL,
`grade` varchar(32) DEFAULT NULL,
`definition` longtext NOT NULL COMMENT '模板定义JSON含7类子对象骨架',
`offline_pack` longtext DEFAULT NULL COMMENT '离线兜底包JSON',
`is_builtin` tinyint NOT NULL DEFAULT 0 COMMENT '是否内置模板',
`status` varchar(32) NOT NULL DEFAULT 'enabled' COMMENT 'enabled/disabled',
`create_user` varchar(32) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_bptpl_tenant_code` (`tenant_id`,`code`),
KEY `ix_pbl_bptpl_tenant_cat` (`tenant_id`,`category`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='蓝图模板(实例化+离线兜底)';
-- 7 类子对象泛化契约统一列骨架sub_type 区分),逐类独立建表便于索引与约束
CREATE TABLE IF NOT EXISTS `pbl_sub_world` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`blueprint_id` bigint NOT NULL,
`code` varchar(32) NOT NULL,
`name` varchar(128) NOT NULL,
`sub_type` varchar(32) NOT NULL DEFAULT 'world',
`parent_id` bigint NOT NULL DEFAULT 0 COMMENT '父对象ID0=根',
`sort_no` int NOT NULL DEFAULT 0,
`payload` longtext DEFAULT NULL COMMENT '子对象业务载荷JSON',
`ref_id` bigint DEFAULT NULL COMMENT '引用模块基表IDworld.id只读不写',
`status` varchar(32) NOT NULL DEFAULT 'active',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_subworld_tenant_bp_code` (`tenant_id`,`blueprint_id`,`code`),
KEY `ix_pbl_subworld_tenant_bp` (`tenant_id`,`blueprint_id`,`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='子对象-world';
CREATE TABLE IF NOT EXISTS `pbl_sub_scene` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`blueprint_id` bigint NOT NULL,
`code` varchar(32) NOT NULL,
`name` varchar(128) NOT NULL,
`sub_type` varchar(32) NOT NULL DEFAULT 'scene',
`parent_id` bigint NOT NULL DEFAULT 0,
`sort_no` int NOT NULL DEFAULT 0,
`payload` longtext DEFAULT NULL,
`ref_id` bigint DEFAULT NULL COMMENT 'scene.id只读',
`status` varchar(32) NOT NULL DEFAULT 'active',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_subscene_tenant_bp_code` (`tenant_id`,`blueprint_id`,`code`),
KEY `ix_pbl_subscene_tenant_bp` (`tenant_id`,`blueprint_id`,`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='子对象-scene';
CREATE TABLE IF NOT EXISTS `pbl_sub_role` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`blueprint_id` bigint NOT NULL,
`code` varchar(32) NOT NULL,
`name` varchar(128) NOT NULL,
`sub_type` varchar(32) NOT NULL DEFAULT 'role',
`parent_id` bigint NOT NULL DEFAULT 0,
`sort_no` int NOT NULL DEFAULT 0,
`payload` longtext DEFAULT NULL COMMENT '角色职责/权限/人数上限',
`ref_id` bigint DEFAULT NULL,
`status` varchar(32) NOT NULL DEFAULT 'active',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_subrole_tenant_bp_code` (`tenant_id`,`blueprint_id`,`code`),
KEY `ix_pbl_subrole_tenant_bp` (`tenant_id`,`blueprint_id`,`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='子对象-role';
CREATE TABLE IF NOT EXISTS `pbl_sub_task` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`blueprint_id` bigint NOT NULL,
`code` varchar(32) NOT NULL,
`name` varchar(128) NOT NULL,
`sub_type` varchar(32) NOT NULL DEFAULT 'task',
`parent_id` bigint NOT NULL DEFAULT 0,
`sort_no` int NOT NULL DEFAULT 0,
`stage` varchar(32) DEFAULT NULL COMMENT '所属阶段编码',
`payload` longtext DEFAULT NULL COMMENT '任务目标/步骤/产出要求',
`ref_id` bigint DEFAULT NULL,
`status` varchar(32) NOT NULL DEFAULT 'active',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_subtask_tenant_bp_code` (`tenant_id`,`blueprint_id`,`code`),
KEY `ix_pbl_subtask_tenant_bp_stage` (`tenant_id`,`blueprint_id`,`stage`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='子对象-task';
CREATE TABLE IF NOT EXISTS `pbl_sub_rule` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`blueprint_id` bigint NOT NULL,
`code` varchar(32) NOT NULL,
`name` varchar(128) NOT NULL,
`sub_type` varchar(32) NOT NULL DEFAULT 'rule',
`parent_id` bigint NOT NULL DEFAULT 0,
`sort_no` int NOT NULL DEFAULT 0,
`rule_kind` varchar(32) DEFAULT NULL COMMENT 'trigger/constraint/scoring/flow',
`payload` longtext DEFAULT NULL COMMENT '规则表达式script_engine 可编译)',
`ref_id` bigint DEFAULT NULL COMMENT 'script_engine.script.id只读',
`status` varchar(32) NOT NULL DEFAULT 'active',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_subrule_tenant_bp_code` (`tenant_id`,`blueprint_id`,`code`),
KEY `ix_pbl_subrule_tenant_bp_kind` (`tenant_id`,`blueprint_id`,`rule_kind`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='子对象-rule';
CREATE TABLE IF NOT EXISTS `pbl_sub_artifact` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`blueprint_id` bigint NOT NULL,
`code` varchar(32) NOT NULL,
`name` varchar(128) NOT NULL,
`sub_type` varchar(32) NOT NULL DEFAULT 'artifact',
`parent_id` bigint NOT NULL DEFAULT 0,
`sort_no` int NOT NULL DEFAULT 0,
`artifact_type` varchar(32) DEFAULT NULL COMMENT '产出物类型编码',
`payload` longtext DEFAULT NULL COMMENT '产出物规格/验收标准',
`ref_id` bigint DEFAULT NULL,
`status` varchar(32) NOT NULL DEFAULT 'active',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_subarti_tenant_bp_code` (`tenant_id`,`blueprint_id`,`code`),
KEY `ix_pbl_subarti_tenant_bp_type` (`tenant_id`,`blueprint_id`,`artifact_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='子对象-artifact产出物定义';
CREATE TABLE IF NOT EXISTS `pbl_sub_assessment` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`blueprint_id` bigint NOT NULL,
`code` varchar(32) NOT NULL,
`name` varchar(128) NOT NULL,
`sub_type` varchar(32) NOT NULL DEFAULT 'assessment',
`parent_id` bigint NOT NULL DEFAULT 0,
`sort_no` int NOT NULL DEFAULT 0,
`payload` longtext DEFAULT NULL COMMENT '评估维度/权重/rubric 引用',
`ref_id` bigint DEFAULT NULL,
`status` varchar(32) NOT NULL DEFAULT 'active',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_subassess_tenant_bp_code` (`tenant_id`,`blueprint_id`,`code`),
KEY `ix_pbl_subassess_tenant_bp` (`tenant_id`,`blueprint_id`,`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='子对象-assessment评估定义';
CREATE TABLE IF NOT EXISTS `pbl_sub_link` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`blueprint_id` bigint NOT NULL,
`from_type` varchar(32) NOT NULL COMMENT '源子对象类型',
`from_id` bigint NOT NULL,
`to_type` varchar(32) NOT NULL COMMENT '目标子对象类型',
`to_id` bigint NOT NULL,
`link_kind` varchar(32) NOT NULL DEFAULT 'ref' COMMENT 'ref/depends/produces/assesses',
`payload` longtext DEFAULT NULL,
`status` varchar(32) NOT NULL DEFAULT 'active',
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_sublink_tenant_edge` (`tenant_id`,`blueprint_id`,`from_type`,`from_id`,`to_type`,`to_id`,`link_kind`),
KEY `ix_pbl_sublink_tenant_to` (`tenant_id`,`blueprint_id`,`to_type`,`to_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='子对象关系边(泛化契约)';
-- -----------------------------------------------------------------------------
-- M2 pbl_validation —— 14 维校验 + 5 级质量状态3 表)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pbl_validation_rule` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`code` varchar(32) NOT NULL COMMENT '规则编码',
`dimension` varchar(32) NOT NULL COMMENT '14 维之一',
`name` varchar(128) NOT NULL,
`severity` varchar(32) NOT NULL DEFAULT 'error' COMMENT 'error/warn/info',
`expression` longtext DEFAULT NULL COMMENT '校验表达式/JSON',
`is_builtin` tinyint NOT NULL DEFAULT 1,
`enabled` tinyint NOT NULL DEFAULT 1,
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_vrule_tenant_code` (`tenant_id`,`code`),
KEY `ix_pbl_vrule_tenant_dim` (`tenant_id`,`dimension`,`enabled`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='校验规则库14维';
CREATE TABLE IF NOT EXISTS `pbl_validation_run` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`blueprint_id` bigint NOT NULL,
`version` bigint NOT NULL DEFAULT 0,
`run_no` varchar(32) NOT NULL COMMENT '运行编号',
`status` varchar(32) NOT NULL DEFAULT 'running' COMMENT 'running/passed/failed/error',
`quality_level` varchar(32) NOT NULL DEFAULT 'L0' COMMENT 'L0~L45级质量状态',
`score` int NOT NULL DEFAULT 0,
`error_count` int NOT NULL DEFAULT 0,
`warn_count` int NOT NULL DEFAULT 0,
`dim_result` longtext DEFAULT NULL COMMENT '14维结果JSON确定性序列化',
`content_hash` varchar(64) DEFAULT NULL,
`start_time` datetime DEFAULT NULL,
`end_time` datetime DEFAULT NULL,
`create_user` varchar(32) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_vrun_tenant_no` (`tenant_id`,`run_no`),
KEY `ix_pbl_vrun_tenant_bp` (`tenant_id`,`blueprint_id`,`version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='校验运行记录';
CREATE TABLE IF NOT EXISTS `pbl_validation_issue` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`run_id` bigint NOT NULL,
`rule_code` varchar(32) NOT NULL,
`dimension` varchar(32) NOT NULL,
`severity` varchar(32) NOT NULL DEFAULT 'error',
`target_type` varchar(32) DEFAULT NULL,
`target_id` bigint DEFAULT NULL,
`path` varchar(255) DEFAULT NULL COMMENT 'JSONPath 定位',
`message` varchar(512) NOT NULL,
`suggestion` varchar(512) DEFAULT NULL,
`status` varchar(32) NOT NULL DEFAULT 'open' COMMENT 'open/fixed/ignored',
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ix_pbl_vissue_tenant_run` (`tenant_id`,`run_id`,`severity`),
KEY `ix_pbl_vissue_tenant_rule` (`tenant_id`,`rule_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='校验问题明细';
-- -----------------------------------------------------------------------------
-- M3a/M3b pbl_compiler —— 确定性编译 + Game Definition3 表)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pbl_compile_job` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`blueprint_id` bigint NOT NULL,
`version` bigint NOT NULL,
`job_no` varchar(32) NOT NULL,
`compiler_ver` varchar(32) NOT NULL DEFAULT 'v1' COMMENT '编译器版本',
`status` varchar(32) NOT NULL DEFAULT 'pending' COMMENT 'pending/running/success/failed',
`input_hash` varchar(64) NOT NULL COMMENT '输入快照sha256确定性依据',
`output_hash` varchar(64) DEFAULT NULL,
`log` longtext DEFAULT NULL,
`start_time` datetime DEFAULT NULL,
`end_time` datetime DEFAULT NULL,
`create_user` varchar(32) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_cjob_tenant_no` (`tenant_id`,`job_no`),
KEY `ix_pbl_cjob_tenant_bp` (`tenant_id`,`blueprint_id`,`version`),
KEY `ix_pbl_cjob_tenant_inhash` (`tenant_id`,`input_hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='编译作业';
CREATE TABLE IF NOT EXISTS `pbl_compile_artifact` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`job_id` bigint NOT NULL,
`kind` varchar(32) NOT NULL COMMENT 'game_definition/script/scene_pack/report',
`name` varchar(128) NOT NULL,
`content` longtext DEFAULT NULL COMMENT '产物内容JSON/文本)',
`file_path` varchar(255) DEFAULT NULL,
`content_hash` varchar(64) NOT NULL,
`size_bytes` bigint NOT NULL DEFAULT 0,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ix_pbl_carti_tenant_job` (`tenant_id`,`job_id`,`kind`),
KEY `ix_pbl_carti_tenant_hash` (`tenant_id`,`content_hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='编译产物';
CREATE TABLE IF NOT EXISTS `pbl_game_definition` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`blueprint_id` bigint NOT NULL,
`version` bigint NOT NULL,
`gd_version` varchar(32) NOT NULL DEFAULT '1.0' COMMENT 'Game Definition schema 版本',
`definition` longtext NOT NULL COMMENT 'GD 全量JSONworld/scene/entity/rule/task/role/artifact',
`content_hash` varchar(64) NOT NULL,
`status` varchar(32) NOT NULL DEFAULT 'draft' COMMENT 'draft/published/archived',
`publish_time` datetime DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_gd_tenant_bp_ver` (`tenant_id`,`blueprint_id`,`version`),
KEY `ix_pbl_gd_tenant_status` (`tenant_id`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Game Definition编译终产物';
-- -----------------------------------------------------------------------------
-- M4a/M4b pbl_agent_runtime —— Designer/Critic 运行时 + fail-closed 工具裁决4 表)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pbl_agent_tool_policy` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`tool_name` varchar(64) NOT NULL COMMENT '工具名22 个之一)',
`agent_role` varchar(32) NOT NULL DEFAULT '*' COMMENT 'designer/critic/*',
`enabled` tinyint NOT NULL DEFAULT 0 COMMENT '默认0=fail-closed 拒绝',
`risk_level` varchar(32) NOT NULL DEFAULT 'high' COMMENT 'low/medium/high',
`reason` varchar(255) DEFAULT NULL COMMENT '启用/禁用理由',
`write_scope` varchar(32) NOT NULL DEFAULT 'none' COMMENT 'none/pbl_only/protected',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_toolpol_tenant_tool_role` (`tenant_id`,`tool_name`,`agent_role`),
KEY `ix_pbl_toolpol_tenant_enabled` (`tenant_id`,`enabled`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='工具白名单策略13启用/9禁用缺省拒绝';
CREATE TABLE IF NOT EXISTS `pbl_agent_session` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`session_no` varchar(32) NOT NULL,
`blueprint_id` bigint DEFAULT NULL,
`agent_role` varchar(32) NOT NULL COMMENT 'designer/critic',
`status` varchar(32) NOT NULL DEFAULT 'running' COMMENT 'running/finished/aborted',
`goal` varchar(512) DEFAULT NULL,
`turn_count` int NOT NULL DEFAULT 0,
`tool_calls` int NOT NULL DEFAULT 0,
`denied_calls` int NOT NULL DEFAULT 0 COMMENT 'fail-closed 拒绝次数',
`result` longtext DEFAULT NULL,
`start_time` datetime DEFAULT NULL,
`end_time` datetime DEFAULT NULL,
`create_user` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_asess_tenant_no` (`tenant_id`,`session_no`),
KEY `ix_pbl_asess_tenant_bp` (`tenant_id`,`blueprint_id`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Agent 会话';
CREATE TABLE IF NOT EXISTS `pbl_agent_message` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`session_id` bigint NOT NULL,
`seq_no` int NOT NULL COMMENT '会话内序号',
`role` varchar(32) NOT NULL COMMENT 'system/user/assistant/tool',
`content` longtext DEFAULT NULL,
`token_in` int NOT NULL DEFAULT 0,
`token_out` int NOT NULL DEFAULT 0,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_amsg_tenant_sess_seq` (`tenant_id`,`session_id`,`seq_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Agent 消息轨迹';
CREATE TABLE IF NOT EXISTS `pbl_agent_tool_call` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`session_id` bigint NOT NULL,
`message_id` bigint DEFAULT NULL,
`tool_name` varchar(64) NOT NULL,
`verdict` varchar(32) NOT NULL COMMENT 'allow/deny',
`deny_reason` varchar(255) DEFAULT NULL COMMENT 'not_in_whitelist/write_protected/missing_tenant/...',
`args` longtext DEFAULT NULL,
`result` longtext DEFAULT NULL,
`error_code` varchar(32) DEFAULT NULL,
`elapsed_ms` int NOT NULL DEFAULT 0,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ix_pbl_atool_tenant_sess` (`tenant_id`,`session_id`,`verdict`),
KEY `ix_pbl_atool_tenant_tool` (`tenant_id`,`tool_name`,`verdict`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='工具调用裁决审计fail-closed 全量留痕)';
-- -----------------------------------------------------------------------------
-- M5a/M5b pbl_evidence —— 产出物与证据幂等采集3 表)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pbl_artifact` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`artifact_no` varchar(32) NOT NULL COMMENT '产出物编号',
`blueprint_id` bigint DEFAULT NULL,
`session_id` bigint DEFAULT NULL COMMENT '运行时会话scense_runtime',
`team_id` varchar(32) DEFAULT NULL,
`student_id` varchar(32) DEFAULT NULL,
`artifact_type` varchar(32) NOT NULL COMMENT '类型编码',
`name` varchar(128) NOT NULL,
`content` longtext DEFAULT NULL,
`file_path` varchar(255) DEFAULT NULL,
`content_hash` varchar(64) NOT NULL COMMENT '幂等键之一',
`idempotent_key` varchar(64) NOT NULL COMMENT '幂等键tenant+source+hash',
`source` varchar(32) NOT NULL DEFAULT 'runtime' COMMENT 'runtime/upload/agent/compile',
`status` varchar(32) NOT NULL DEFAULT 'collected',
`collect_time` datetime DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_arti_tenant_idem` (`tenant_id`,`idempotent_key`),
KEY `ix_pbl_arti_tenant_bp` (`tenant_id`,`blueprint_id`,`artifact_type`),
KEY `ix_pbl_arti_tenant_team` (`tenant_id`,`team_id`,`student_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='产出物(幂等采集)';
CREATE TABLE IF NOT EXISTS `pbl_evidence_event` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`artifact_id` bigint DEFAULT NULL,
`session_id` bigint DEFAULT NULL,
`event_type` varchar(32) NOT NULL COMMENT '事件类型编码',
`event_time` datetime NOT NULL,
`actor_id` varchar(32) DEFAULT NULL,
`payload` longtext DEFAULT NULL,
`content_hash` varchar(64) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ix_pbl_eev_tenant_arti` (`tenant_id`,`artifact_id`),
KEY `ix_pbl_eev_tenant_sess_time` (`tenant_id`,`session_id`,`event_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='证据事件流';
CREATE TABLE IF NOT EXISTS `pbl_evidence_file` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`artifact_id` bigint NOT NULL,
`file_name` varchar(255) NOT NULL,
`file_path` varchar(255) NOT NULL,
`mime_type` varchar(64) DEFAULT NULL,
`size_bytes` bigint NOT NULL DEFAULT 0,
`content_hash` varchar(64) NOT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_efile_tenant_arti_hash` (`tenant_id`,`artifact_id`,`content_hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='证据附件';
-- -----------------------------------------------------------------------------
-- M6 pbl_assessment —— Rubric 加权评估与报告3 表)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pbl_rubric` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`code` varchar(32) NOT NULL,
`name` varchar(128) NOT NULL,
`blueprint_id` bigint DEFAULT NULL,
`total_weight` int NOT NULL DEFAULT 100,
`status` varchar(32) NOT NULL DEFAULT 'draft',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_rubric_tenant_code` (`tenant_id`,`code`),
KEY `ix_pbl_rubric_tenant_bp` (`tenant_id`,`blueprint_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='评估量规';
CREATE TABLE IF NOT EXISTS `pbl_rubric_criterion` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`rubric_id` bigint NOT NULL,
`code` varchar(32) NOT NULL,
`name` varchar(128) NOT NULL,
`dimension` varchar(32) DEFAULT NULL,
`weight` int NOT NULL DEFAULT 0 COMMENT '权重(整数,总和=100',
`max_score` int NOT NULL DEFAULT 5,
`levels` longtext DEFAULT NULL COMMENT '等级描述JSON确定性序列化',
`sort_no` int NOT NULL DEFAULT 0,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_rcrit_tenant_rubric_code` (`tenant_id`,`rubric_id`,`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='量规评分项';
CREATE TABLE IF NOT EXISTS `pbl_assessment_report` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`report_no` varchar(32) NOT NULL,
`rubric_id` bigint NOT NULL,
`blueprint_id` bigint DEFAULT NULL,
`team_id` varchar(32) DEFAULT NULL,
`student_id` varchar(32) DEFAULT NULL,
`score_total` int NOT NULL DEFAULT 0,
`level` varchar(32) NOT NULL DEFAULT 'L0',
`detail` longtext DEFAULT NULL COMMENT '逐项得分JSON',
`evidence_ref` longtext DEFAULT NULL COMMENT '引用证据ID列表JSON',
`assessor` varchar(32) DEFAULT NULL COMMENT 'teacher/agent/critic',
`status` varchar(32) NOT NULL DEFAULT 'draft',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_areport_tenant_no` (`tenant_id`,`report_no`),
KEY `ix_pbl_areport_tenant_team` (`tenant_id`,`team_id`,`student_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='评估报告';
-- -----------------------------------------------------------------------------
-- M7 pbl_kdb_ext —— KDB 只读桩与匿名聚合零写入1 表:查询留痕)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pbl_kdb_query_log` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`query_no` varchar(32) NOT NULL,
`kdb_key` varchar(64) NOT NULL COMMENT '知识点/知识图谱键',
`scope` varchar(32) NOT NULL DEFAULT 'read' COMMENT '只允许 read',
`anonymized` tinyint NOT NULL DEFAULT 1 COMMENT '是否匿名聚合',
`result_count` int NOT NULL DEFAULT 0,
`caller` varchar(32) DEFAULT NULL,
`elapsed_ms` int NOT NULL DEFAULT 0,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_kdblog_tenant_no` (`tenant_id`,`query_no`),
KEY `ix_pbl_kdblog_tenant_key` (`tenant_id`,`kdb_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KDB只读查询留痕零写入基表';
-- -----------------------------------------------------------------------------
-- M8 pbl_domain_ext —— world/scene/entity 薄扩展不改基表3 表)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pbl_world_ext` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`world_id` bigint NOT NULL COMMENT 'world.id只读引用无FK',
`blueprint_id` bigint DEFAULT NULL,
`class_id` varchar(32) DEFAULT NULL COMMENT '班级',
`team_id` varchar(32) DEFAULT NULL COMMENT '团队',
`ext` longtext DEFAULT NULL COMMENT '扩展属性JSON',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_wext_tenant_world` (`tenant_id`,`world_id`),
KEY `ix_pbl_wext_tenant_class_team` (`tenant_id`,`class_id`,`team_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='world 薄扩展(租户/班级/团队关联)';
CREATE TABLE IF NOT EXISTS `pbl_scene_ext` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`scene_id` bigint NOT NULL COMMENT 'scene.id只读引用',
`blueprint_id` bigint DEFAULT NULL,
`class_id` varchar(32) DEFAULT NULL,
`team_id` varchar(32) DEFAULT NULL,
`ext` longtext DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_sext_tenant_scene` (`tenant_id`,`scene_id`),
KEY `ix_pbl_sext_tenant_class_team` (`tenant_id`,`class_id`,`team_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='scene 薄扩展';
CREATE TABLE IF NOT EXISTS `pbl_entity_ext` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`entity_id` bigint NOT NULL COMMENT 'entity.id只读引用',
`blueprint_id` bigint DEFAULT NULL,
`class_id` varchar(32) DEFAULT NULL,
`team_id` varchar(32) DEFAULT NULL,
`role_code` varchar(32) DEFAULT NULL COMMENT '对应 pbl_sub_role.code',
`ext` longtext DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_eext_tenant_entity` (`tenant_id`,`entity_id`),
KEY `ix_pbl_eext_tenant_class_team` (`tenant_id`,`class_id`,`team_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='entity 薄扩展';
-- -----------------------------------------------------------------------------
-- M11a/M11b pbl_runtime_ext —— 单事务事件+状态写入与广播登记2 表)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pbl_runtime_event` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`event_uid` varchar(64) NOT NULL COMMENT '事件唯一ID幂等键',
`session_id` bigint NOT NULL COMMENT 'scense_runtime 会话(只读引用)',
`world_id` bigint DEFAULT NULL,
`event_type` varchar(32) NOT NULL,
`source_id` varchar(32) DEFAULT NULL,
`target_id` varchar(32) DEFAULT NULL,
`payload` longtext DEFAULT NULL,
`tx_group` varchar(64) NOT NULL COMMENT '单事务分组ID事件+状态+广播同组)',
`seq_no` bigint NOT NULL DEFAULT 0 COMMENT '会话内单调序号(重放依据)',
`applied` tinyint NOT NULL DEFAULT 0 COMMENT '是否已应用状态',
`broadcast_state` varchar(32) NOT NULL DEFAULT 'pending' COMMENT 'pending/sent/failed',
`event_time` datetime NOT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_rev_tenant_uid` (`tenant_id`,`event_uid`),
KEY `ix_pbl_rev_tenant_sess_seq` (`tenant_id`,`session_id`,`seq_no`),
KEY `ix_pbl_rev_tenant_tx` (`tenant_id`,`tx_group`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='运行时事件(单事务写入+可重放)';
CREATE TABLE IF NOT EXISTS `pbl_runtime_state` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`session_id` bigint NOT NULL,
`state_key` varchar(64) NOT NULL COMMENT '状态键entity/scene/global',
`state_value` longtext DEFAULT NULL COMMENT '状态值JSON',
`version` bigint NOT NULL DEFAULT 0 COMMENT '乐观锁版本',
`last_event_id` bigint DEFAULT NULL COMMENT '最后应用事件ID',
`tx_group` varchar(64) DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_rstate_tenant_sess_key` (`tenant_id`,`session_id`,`state_key`),
KEY `ix_pbl_rstate_tenant_tx` (`tenant_id`,`tx_group`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='运行时状态(与事件同事务写入)';
-- -----------------------------------------------------------------------------
-- M12 pbl_template —— 模板实例化记录1 表)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pbl_template_instance` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`template_id` bigint NOT NULL COMMENT 'pbl_blueprint_template.id',
`blueprint_id` bigint NOT NULL COMMENT '实例化产生的蓝图',
`params` longtext DEFAULT NULL COMMENT '实例化参数JSON',
`mode` varchar(32) NOT NULL DEFAULT 'online' COMMENT 'online/offline离线兜底',
`status` varchar(32) NOT NULL DEFAULT 'created',
`create_user` varchar(32) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_tinst_tenant_tpl_bp` (`tenant_id`,`template_id`,`blueprint_id`),
KEY `ix_pbl_tinst_tenant_status` (`tenant_id`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='模板实例化记录';
-- -----------------------------------------------------------------------------
-- M13 pbl_analytics —— 学习分析快照与指标2 表)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pbl_analytics_metric` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`metric_code` varchar(32) NOT NULL,
`scope` varchar(32) NOT NULL DEFAULT 'student' COMMENT 'student/team/class/blueprint',
`scope_id` varchar(32) NOT NULL,
`blueprint_id` bigint DEFAULT NULL,
`value_num` decimal(18,4) NOT NULL DEFAULT 0,
`value_text` varchar(255) DEFAULT NULL,
`stat_date` datetime NOT NULL COMMENT '统计时点datetime非TIMESTAMP',
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_ametric_tenant_code_scope_date` (`tenant_id`,`metric_code`,`scope`,`scope_id`,`stat_date`),
KEY `ix_pbl_ametric_tenant_bp` (`tenant_id`,`blueprint_id`,`metric_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='分析指标明细';
CREATE TABLE IF NOT EXISTS `pbl_analytics_snapshot` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`snapshot_no` varchar(32) NOT NULL,
`blueprint_id` bigint DEFAULT NULL,
`class_id` varchar(32) DEFAULT NULL,
`period` varchar(32) DEFAULT NULL,
`content` longtext DEFAULT NULL COMMENT '聚合结果JSON匿名化',
`content_hash` varchar(64) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_asnap_tenant_no` (`tenant_id`,`snapshot_no`),
KEY `ix_pbl_asnap_tenant_bp_class` (`tenant_id`,`blueprint_id`,`class_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='分析快照';
-- -----------------------------------------------------------------------------
-- M14 pbl_governance —— 治理与审计append-only1 表)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pbl_audit_log` (
`tenant_id` varchar(32) NOT NULL,
`id` bigint NOT NULL AUTO_INCREMENT,
`trace_id` varchar(64) NOT NULL COMMENT '链路追踪ID',
`actor_role` varchar(32) NOT NULL COMMENT 'owner.audit/teacher/agent.designer/agent.critic',
`actor_id` varchar(32) DEFAULT NULL,
`action` varchar(64) NOT NULL COMMENT '动作',
`object_type` varchar(32) DEFAULT NULL,
`object_id` varchar(64) DEFAULT NULL,
`result` varchar(32) NOT NULL DEFAULT 'success' COMMENT 'success/denied/error',
`error_code` varchar(32) DEFAULT NULL,
`detail` longtext DEFAULT NULL,
`client_ip` varchar(64) DEFAULT NULL,
`log_time` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `ix_pbl_audit_tenant_time` (`tenant_id`,`log_time`),
KEY `ix_pbl_audit_tenant_trace` (`tenant_id`,`trace_id`),
KEY `ix_pbl_audit_tenant_obj` (`tenant_id`,`object_type`,`object_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='治理审计日志append-onlyowner.audit 独立角色,禁自删)';
-- =============================================================================
-- 表清单36
-- pbl_blueprint(11): pbl_blueprint, pbl_blueprint_version, pbl_blueprint_template,
-- pbl_sub_world, pbl_sub_scene, pbl_sub_role, pbl_sub_task,
-- pbl_sub_rule, pbl_sub_artifact, pbl_sub_assessment, pbl_sub_link
-- pbl_validation(3): pbl_validation_rule, pbl_validation_run, pbl_validation_issue
-- pbl_compiler(3): pbl_compile_job, pbl_compile_artifact, pbl_game_definition
-- pbl_agent_runtime(4): pbl_agent_tool_policy, pbl_agent_session, pbl_agent_message, pbl_agent_tool_call
-- pbl_evidence(3): pbl_artifact, pbl_evidence_event, pbl_evidence_file
-- pbl_assessment(3): pbl_rubric, pbl_rubric_criterion, pbl_assessment_report
-- pbl_kdb_ext(1): pbl_kdb_query_log
-- pbl_domain_ext(3): pbl_world_ext, pbl_scene_ext, pbl_entity_ext
-- pbl_runtime_ext(2):pbl_runtime_event, pbl_runtime_state
-- pbl_template(1): pbl_template_instance
-- pbl_analytics(2): pbl_analytics_metric, pbl_analytics_snapshot
-- pbl_governance(1): pbl_audit_log
-- 合计 11+3+3+4+3+3+1+3+2+1+2+1 = 37 声明位(其中 pbl_sub_link 为关系边表,
-- 计入 blueprint 域 11 表内),业务表总计 36pbl_common / pbl_appcodes 零表)。
-- =============================================================================