approve: [M3a] pbl_compiler 编译核心与确定性产物

This commit is contained in:
agent.develop 2026-09-18 19:04:05 +08:00
parent d9cd9a4221
commit 0f1cad86c3

View File

@ -35,7 +35,7 @@ CREATE TABLE IF NOT EXISTS pbl_tenant (
UNIQUE KEY uk_pbl_tenant_code (tenant_id, tenant_code),
KEY idx_pbl_tenant_tid_status (tenant_id, status),
KEY idx_pbl_tenant_tid_org (tenant_id, org_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 租户主表';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 租户主表';
-- 2. pbl_role_binding 租户内角色绑定(复用 rbac不改 rbac 基表)
CREATE TABLE IF NOT EXISTS pbl_role_binding (
@ -58,7 +58,7 @@ CREATE TABLE IF NOT EXISTS pbl_role_binding (
KEY idx_pbl_role_binding_tid_user (tenant_id, user_code, status),
KEY idx_pbl_role_binding_tid_scope (tenant_id, scope_type, scope_code),
KEY idx_pbl_role_binding_tid_role (tenant_id, role_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 租户角色绑定';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 租户角色绑定';
-- 3. pbl_audit_log 审计日志append-only
CREATE TABLE IF NOT EXISTS pbl_audit_log (
@ -81,7 +81,7 @@ CREATE TABLE IF NOT EXISTS pbl_audit_log (
KEY idx_pbl_audit_tid_obj (tenant_id, object_type, object_code),
KEY idx_pbl_audit_tid_actor (tenant_id, actor_type, actor_code),
KEY idx_pbl_audit_tid_trace (tenant_id, trace_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 审计日志append-only';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 审计日志append-only';
-- =====================================================================
-- 模块 pbl_blueprint11 表M1a
@ -120,7 +120,7 @@ CREATE TABLE IF NOT EXISTS pbl_blueprint (
KEY idx_pbl_bp_tid_subject (tenant_id, subject_code, grade_code),
KEY idx_pbl_bp_tid_quality (tenant_id, quality_level),
KEY idx_pbl_bp_tid_source (tenant_id, source_type, source_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 蓝图聚合根';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 蓝图聚合根';
-- 5. pbl_blueprint_version 版本快照 + change_deltaappend-only
CREATE TABLE IF NOT EXISTS pbl_blueprint_version (
@ -140,7 +140,7 @@ CREATE TABLE IF NOT EXISTS pbl_blueprint_version (
UNIQUE KEY uk_pbl_bp_version_no (tenant_id, bp_code, version_no),
KEY idx_pbl_bp_version_tid_bp (tenant_id, bp_code, create_time),
KEY idx_pbl_bp_version_tid_ck (tenant_id, checksum)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 蓝图版本快照append-only';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 蓝图版本快照append-only';
-- 6. pbl_blueprint_lock 编辑锁
CREATE TABLE IF NOT EXISTS pbl_blueprint_lock (
@ -162,7 +162,7 @@ CREATE TABLE IF NOT EXISTS pbl_blueprint_lock (
UNIQUE KEY uk_pbl_bp_lock_active (tenant_id, bp_code, lock_state),
KEY idx_pbl_bp_lock_tid_holder (tenant_id, holder_code),
KEY idx_pbl_bp_lock_tid_expire (tenant_id, expire_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 蓝图编辑锁';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 蓝图编辑锁';
-- 7. pbl_subobject 7 类子对象泛化主表
CREATE TABLE IF NOT EXISTS pbl_subobject (
@ -188,7 +188,7 @@ CREATE TABLE IF NOT EXISTS pbl_subobject (
KEY idx_pbl_subobj_tid_bp_type (tenant_id, bp_code, obj_type, sort_no),
KEY idx_pbl_subobj_tid_parent (tenant_id, parent_code),
KEY idx_pbl_subobj_tid_status (tenant_id, status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 蓝图 7 类子对象泛化主表';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 蓝图 7 类子对象泛化主表';
-- 8. pbl_subobject_attr 子对象泛化属性KV
CREATE TABLE IF NOT EXISTS pbl_subobject_attr (
@ -207,7 +207,7 @@ CREATE TABLE IF NOT EXISTS pbl_subobject_attr (
UNIQUE KEY uk_pbl_subobj_attr_code (tenant_id, attr_code),
UNIQUE KEY uk_pbl_subobj_attr_key (tenant_id, obj_code, attr_key),
KEY idx_pbl_subobj_attr_tid_obj (tenant_id, obj_code, sort_no)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 子对象泛化属性 KV';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 子对象泛化属性 KV';
-- 9. pbl_subobject_rel 子对象间关系
CREATE TABLE IF NOT EXISTS pbl_subobject_rel (
@ -228,7 +228,7 @@ CREATE TABLE IF NOT EXISTS pbl_subobject_rel (
UNIQUE KEY uk_pbl_subobj_rel_triple (tenant_id, src_obj_code, dst_obj_code, rel_type),
KEY idx_pbl_subobj_rel_tid_bp (tenant_id, bp_code, rel_type),
KEY idx_pbl_subobj_rel_tid_dst (tenant_id, dst_obj_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 子对象关系';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 子对象关系';
-- 10. pbl_subobject_asset 子对象资产引用(只读引用平台资产,不落资产本体)
CREATE TABLE IF NOT EXISTS pbl_subobject_asset (
@ -251,7 +251,7 @@ CREATE TABLE IF NOT EXISTS pbl_subobject_asset (
UNIQUE KEY uk_pbl_subobj_asset_code (tenant_id, asset_code),
KEY idx_pbl_subobj_asset_tid_obj (tenant_id, obj_code, sort_no),
KEY idx_pbl_subobj_asset_tid_kind (tenant_id, asset_kind)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 子对象资产引用';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 子对象资产引用';
-- 11. pbl_subobject_ref 子对象对复用域对象的只读引用world/scene/entity/script
CREATE TABLE IF NOT EXISTS pbl_subobject_ref (
@ -272,7 +272,7 @@ CREATE TABLE IF NOT EXISTS pbl_subobject_ref (
UNIQUE KEY uk_pbl_subobj_ref_code (tenant_id, ref_code),
KEY idx_pbl_subobj_ref_tid_obj (tenant_id, obj_code),
KEY idx_pbl_subobj_ref_tid_mod (tenant_id, ref_module, ref_table, ref_biz_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 子对象对复用域只读引用';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 子对象对复用域只读引用';
-- 12. pbl_subobject_review 子对象评审意见append-only
CREATE TABLE IF NOT EXISTS pbl_subobject_review (
@ -291,7 +291,7 @@ CREATE TABLE IF NOT EXISTS pbl_subobject_review (
UNIQUE KEY uk_pbl_subobj_review_code (tenant_id, review_code),
KEY idx_pbl_subobj_review_tid_bp (tenant_id, bp_code, create_time),
KEY idx_pbl_subobj_review_tid_obj (tenant_id, obj_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 子对象评审意见append-only';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 子对象评审意见append-only';
-- 13. pbl_blueprint_tag 蓝图标签
CREATE TABLE IF NOT EXISTS pbl_blueprint_tag (
@ -307,7 +307,7 @@ CREATE TABLE IF NOT EXISTS pbl_blueprint_tag (
UNIQUE KEY uk_pbl_bp_tag_code (tenant_id, tag_code),
UNIQUE KEY uk_pbl_bp_tag_kv (tenant_id, bp_code, tag_key),
KEY idx_pbl_bp_tag_tid_key (tenant_id, tag_key, tag_value)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 蓝图标签';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 蓝图标签';
-- 14. pbl_blueprint_publish 发布记录append-only
CREATE TABLE IF NOT EXISTS pbl_blueprint_publish (
@ -326,7 +326,7 @@ CREATE TABLE IF NOT EXISTS pbl_blueprint_publish (
UNIQUE KEY uk_pbl_bp_publish_code (tenant_id, publish_code),
KEY idx_pbl_bp_publish_tid_bp (tenant_id, bp_code, create_time),
KEY idx_pbl_bp_publish_tid_target (tenant_id, channel, target_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 蓝图发布记录append-only';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 蓝图发布记录append-only';
-- =====================================================================
-- 模块 pbl_template2 表M1b
@ -355,7 +355,7 @@ CREATE TABLE IF NOT EXISTS pbl_template (
KEY idx_pbl_template_tid_kind (tenant_id, tpl_kind, status),
KEY idx_pbl_template_tid_subj (tenant_id, subject_code, grade_code),
KEY idx_pbl_template_tid_offline (tenant_id, offline_flag)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 模板主表';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 模板主表';
-- 16. pbl_template_item 模板条目(实例化 ID 重映射映射表)
CREATE TABLE IF NOT EXISTS pbl_template_item (
@ -374,7 +374,7 @@ CREATE TABLE IF NOT EXISTS pbl_template_item (
UNIQUE KEY uk_pbl_template_item_code (tenant_id, item_code),
UNIQUE KEY uk_pbl_template_item_key (tenant_id, tpl_code, tpl_obj_key),
KEY idx_pbl_template_item_tid_tpl (tenant_id, tpl_code, sort_no)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 模板条目';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 模板条目';
-- =====================================================================
-- 模块 pbl_validation3 表M214 维 + 5 级质量状态)
@ -402,7 +402,7 @@ CREATE TABLE IF NOT EXISTS pbl_validation_ruleset (
UNIQUE KEY uk_pbl_valid_ruleset_code (tenant_id, ruleset_code),
KEY idx_pbl_valid_ruleset_tid_dim (tenant_id, dim_code, enabled),
KEY idx_pbl_valid_ruleset_tid_sort (tenant_id, sort_no)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 14 维校验规则集';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 14 维校验规则集';
-- 18. pbl_validation_run 校验执行批次
CREATE TABLE IF NOT EXISTS pbl_validation_run (
@ -431,7 +431,7 @@ CREATE TABLE IF NOT EXISTS pbl_validation_run (
KEY idx_pbl_valid_run_tid_bp (tenant_id, bp_code, create_time),
KEY idx_pbl_valid_run_tid_state (tenant_id, run_state),
KEY idx_pbl_valid_run_tid_level (tenant_id, quality_level)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 校验执行批次';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 校验执行批次';
-- 19. pbl_validation_finding 校验发现明细append-only 留痕)
CREATE TABLE IF NOT EXISTS pbl_validation_finding (
@ -452,7 +452,7 @@ CREATE TABLE IF NOT EXISTS pbl_validation_finding (
KEY idx_pbl_valid_finding_tid_run (tenant_id, run_code, dim_code),
KEY idx_pbl_valid_finding_tid_bp (tenant_id, bp_code, create_time),
KEY idx_pbl_valid_finding_tid_obj (tenant_id, obj_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 校验发现明细append-only';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 校验发现明细append-only';
-- =====================================================================
-- 模块 pbl_compiler4 表M3a/M3b确定性编译 + Game Definition
@ -482,7 +482,7 @@ CREATE TABLE IF NOT EXISTS pbl_compile_job (
KEY idx_pbl_compile_job_tid_bp (tenant_id, bp_code, create_time),
KEY idx_pbl_compile_job_tid_state (tenant_id, job_state),
KEY idx_pbl_compile_job_tid_ick (tenant_id, input_checksum)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 编译作业';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 编译作业';
-- 21. pbl_compile_artifact 编译中间产物
CREATE TABLE IF NOT EXISTS pbl_compile_artifact (
@ -501,7 +501,7 @@ CREATE TABLE IF NOT EXISTS pbl_compile_artifact (
UNIQUE KEY uk_pbl_compile_artifact_code (tenant_id, artifact_code),
KEY idx_pbl_compile_artifact_tid_job (tenant_id, job_code, sort_no),
KEY idx_pbl_compile_artifact_tid_kind (tenant_id, artifact_kind)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 编译中间产物';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 编译中间产物';
-- 22. pbl_game_definition Game Definition编译最终产出
CREATE TABLE IF NOT EXISTS pbl_game_definition (
@ -528,7 +528,7 @@ CREATE TABLE IF NOT EXISTS pbl_game_definition (
KEY idx_pbl_gd_tid_state (tenant_id, gd_state),
KEY idx_pbl_gd_tid_ck (tenant_id, checksum),
KEY idx_pbl_gd_tid_world (tenant_id, world_ref, scene_ref)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL Game Definition';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL Game Definition';
-- 23. pbl_compile_log 编译日志append-only
CREATE TABLE IF NOT EXISTS pbl_compile_log (
@ -546,7 +546,7 @@ CREATE TABLE IF NOT EXISTS pbl_compile_log (
UNIQUE KEY uk_pbl_compile_log_code (tenant_id, log_code),
KEY idx_pbl_compile_log_tid_job (tenant_id, job_code, seq_no),
KEY idx_pbl_compile_log_tid_level (tenant_id, log_level, create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 编译日志append-only';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 编译日志append-only';
-- =====================================================================
-- 模块 pbl_agent_runtime4 表M4a/M4bDesigner/Critic + fail-closed 裁决)
@ -575,7 +575,7 @@ CREATE TABLE IF NOT EXISTS pbl_agent_session (
KEY idx_pbl_agent_session_tid_bp (tenant_id, bp_code, session_state),
KEY idx_pbl_agent_session_tid_role (tenant_id, agent_role),
KEY idx_pbl_agent_session_tid_owner (tenant_id, owner_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL Agent 会话';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL Agent 会话';
-- 25. pbl_agent_message Agent 消息append-only
CREATE TABLE IF NOT EXISTS pbl_agent_message (
@ -594,7 +594,7 @@ CREATE TABLE IF NOT EXISTS pbl_agent_message (
UNIQUE KEY uk_pbl_agent_msg_code (tenant_id, msg_code),
KEY idx_pbl_agent_msg_tid_sess (tenant_id, session_code, turn_no),
KEY idx_pbl_agent_msg_tid_time (tenant_id, create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL Agent 消息append-only';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL Agent 消息append-only';
-- 26. pbl_agent_tool_call 工具调用记录append-only
CREATE TABLE IF NOT EXISTS pbl_agent_tool_call (
@ -614,7 +614,7 @@ CREATE TABLE IF NOT EXISTS pbl_agent_tool_call (
KEY idx_pbl_agent_call_tid_sess (tenant_id, session_code, turn_no),
KEY idx_pbl_agent_call_tid_tool (tenant_id, tool_name, tool_state),
KEY idx_pbl_agent_call_tid_time (tenant_id, create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL Agent 工具调用append-only';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL Agent 工具调用append-only';
-- 27. pbl_agent_arbitration fail-closed 裁决记录append-only
CREATE TABLE IF NOT EXISTS pbl_agent_arbitration (
@ -635,7 +635,7 @@ CREATE TABLE IF NOT EXISTS pbl_agent_arbitration (
KEY idx_pbl_agent_arb_tid_tool (tenant_id, tool_name, decision),
KEY idx_pbl_agent_arb_tid_sess (tenant_id, session_code, create_time),
KEY idx_pbl_agent_arb_tid_reason (tenant_id, deny_reason)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL Agent fail-closed 裁决记录append-only';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL Agent fail-closed 裁决记录append-only';
-- =====================================================================
-- 模块 pbl_evidence4 表M5a/M5b产出物采集 + 证据幂等)
@ -667,7 +667,7 @@ CREATE TABLE IF NOT EXISTS pbl_artifact (
KEY idx_pbl_artifact_tid_team (tenant_id, team_code),
KEY idx_pbl_artifact_tid_sess (tenant_id, session_code),
KEY idx_pbl_artifact_tid_ck (tenant_id, checksum)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 学生产出物';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 学生产出物';
-- 29. pbl_evidence 证据主表
CREATE TABLE IF NOT EXISTS pbl_evidence (
@ -696,7 +696,7 @@ CREATE TABLE IF NOT EXISTS pbl_evidence (
KEY idx_pbl_evidence_tid_team (tenant_id, team_code, student_code),
KEY idx_pbl_evidence_tid_obj (tenant_id, obj_code),
KEY idx_pbl_evidence_tid_time (tenant_id, occurred_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 证据主表(幂等键唯一)';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 证据主表(幂等键唯一)';
-- 30. pbl_evidence_idem 证据幂等提交台账append-only
CREATE TABLE IF NOT EXISTS pbl_evidence_idem (
@ -715,7 +715,7 @@ CREATE TABLE IF NOT EXISTS pbl_evidence_idem (
UNIQUE KEY uk_pbl_evidence_idem_key (tenant_id, idem_key),
KEY idx_pbl_evidence_idem_tid_time (tenant_id, create_time),
KEY idx_pbl_evidence_idem_tid_conf (tenant_id, conflict_flag)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 证据幂等台账append-only';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 证据幂等台账append-only';
-- 31. pbl_evidence_binding 证据与复用域对象绑定(零改表关联)
CREATE TABLE IF NOT EXISTS pbl_evidence_binding (
@ -734,7 +734,7 @@ CREATE TABLE IF NOT EXISTS pbl_evidence_binding (
UNIQUE KEY uk_pbl_evidence_binding_code (tenant_id, bind_code),
KEY idx_pbl_evidence_binding_tid_ev (tenant_id, evidence_code),
KEY idx_pbl_evidence_binding_tid_ref (tenant_id, ref_module, ref_table, ref_biz_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 证据与复用域绑定(零改表)';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 证据与复用域绑定(零改表)';
-- =====================================================================
-- 模块 pbl_assessment3 表M6Rubric 加权评估与报告)
@ -762,7 +762,7 @@ CREATE TABLE IF NOT EXISTS pbl_rubric (
UNIQUE KEY uk_pbl_rubric_code (tenant_id, rubric_code),
KEY idx_pbl_rubric_tid_bp (tenant_id, bp_code, status),
KEY idx_pbl_rubric_tid_default (tenant_id, is_default)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 量规主表';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 量规主表';
-- 33. pbl_rubric_criterion 量规评价维度条目
CREATE TABLE IF NOT EXISTS pbl_rubric_criterion (
@ -784,7 +784,7 @@ CREATE TABLE IF NOT EXISTS pbl_rubric_criterion (
UNIQUE KEY uk_pbl_rubric_crit_code (tenant_id, crit_code),
KEY idx_pbl_rubric_crit_tid_rub (tenant_id, rubric_code, sort_no),
KEY idx_pbl_rubric_crit_tid_obj (tenant_id, obj_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 量规评价维度';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 量规评价维度';
-- 34. pbl_assessment_report 评估报告
CREATE TABLE IF NOT EXISTS pbl_assessment_report (
@ -815,7 +815,7 @@ CREATE TABLE IF NOT EXISTS pbl_assessment_report (
KEY idx_pbl_assess_report_tid_team (tenant_id, team_code, student_code),
KEY idx_pbl_assess_report_tid_state (tenant_id, report_state),
KEY idx_pbl_assess_report_tid_grade (tenant_id, grade_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 评估报告';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 评估报告';
-- =====================================================================
-- 模块 pbl_domain_ext1 表M8world/scene/entity 租户·班级·团队关联,不改基表)
@ -849,7 +849,7 @@ CREATE TABLE IF NOT EXISTS pbl_domain_binding (
KEY idx_pbl_domain_binding_tid_bp (tenant_id, bp_code),
KEY idx_pbl_domain_binding_tid_sess (tenant_id, session_code),
KEY idx_pbl_domain_binding_tid_ref (tenant_id, ref_module, ref_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 复用域绑定(零改表)';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 复用域绑定(零改表)';
-- =====================================================================
-- 模块 pbl_analytics1 表M10分析看板快照append-only
@ -874,7 +874,7 @@ CREATE TABLE IF NOT EXISTS pbl_analytics_snapshot (
UNIQUE KEY uk_pbl_analytics_snap_dim (tenant_id, metric_group, scope_type, scope_code, period_key),
KEY idx_pbl_analytics_snap_tid_group (tenant_id, metric_group, period_key),
KEY idx_pbl_analytics_snap_tid_scope (tenant_id, scope_type, scope_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PBL 分析看板快照append-only';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PBL 分析看板快照append-only';
SET FOREIGN_KEY_CHECKS = 1;
@ -891,3 +891,29 @@ SET FOREIGN_KEY_CHECKS = 1;
-- FOREIGN KEY / REFERENCES / ENUM( / SERIAL / BIGSERIAL / nextval / TIMESTAMP
-- 全部索引以 tenant_id 打头;每表 id BIGINT NOT NULL AUTO_INCREMENT + xxx_code 唯一业务主键。
-- =====================================================================
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";