pbl_blueprint/models/pbl_blueprint.subobjects.sql

235 lines
9.9 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_blueprint DDL (MariaDB / MySQL)
-- 由 models/*.json 派生json2ddl mysql . 等价输出tenant_id 强制打头。
-- 部署:应用 build.sh 执行 json2ddl 生成;本文件为可核对的落库基线。
CREATE TABLE IF NOT EXISTS `pbl_blueprint` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '租户ID强制打头',
`org_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '所属机构',
`blueprint_code` VARCHAR(64) NOT NULL COMMENT '蓝图编码',
`title` VARCHAR(255) NOT NULL COMMENT '蓝图标题',
`subject_area` VARCHAR(64) DEFAULT '' COMMENT '学科领域',
`grade_level` VARCHAR(32) DEFAULT '' COMMENT '适用年级',
`duration_hours` INT DEFAULT 0 COMMENT '总课时(小时)',
`driving_question` TEXT COMMENT '驱动问题',
`summary` TEXT COMMENT '蓝图摘要',
`quality_status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT '5级质量状态',
`validation_score` DECIMAL(5,2) DEFAULT 0 COMMENT '校验得分',
`version_no` INT NOT NULL DEFAULT 1 COMMENT '当前版本号',
`current_version_id` VARCHAR(32) DEFAULT '' COMMENT '当前版本ID',
`template_id` VARCHAR(32) DEFAULT '' COMMENT '来源模板ID',
`forked_from_id` VARCHAR(32) DEFAULT '' COMMENT '派生自蓝图ID',
`status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT 'draft/published/archived/deleted',
`extra_json` LONGTEXT COMMENT '扩展属性JSON',
`created_by` VARCHAR(32) DEFAULT '',
`created_at` DATETIME NOT NULL,
`updated_by` VARCHAR(32) DEFAULT '',
`updated_at` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_blueprint_code` (`tenant_id`,`blueprint_code`),
KEY `idx_pbl_blueprint_tenant` (`tenant_id`,`status`),
KEY `idx_pbl_blueprint_org` (`org_id`),
KEY `idx_pbl_blueprint_created` (`tenant_id`,`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PBL蓝图聚合根';
CREATE TABLE IF NOT EXISTS `pbl_blueprint_learning_goal` (
`id` VARCHAR(32) NOT NULL,
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '0',
`blueprint_id` VARCHAR(32) NOT NULL,
`seq` INT NOT NULL DEFAULT 0,
`goal_code` VARCHAR(64) NOT NULL,
`title` VARCHAR(255) NOT NULL,
`description` TEXT,
`knowledge_type` VARCHAR(32) DEFAULT 'concept',
`competency_tags` TEXT,
`assessable` VARCHAR(1) DEFAULT '1',
`alignment_json` LONGTEXT,
`created_by` VARCHAR(32) DEFAULT '',
`created_at` DATETIME NOT NULL,
`updated_by` VARCHAR(32) DEFAULT '',
`updated_at` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_goal_code` (`tenant_id`,`blueprint_id`,`goal_code`),
KEY `idx_pbl_goal_bp` (`tenant_id`,`blueprint_id`,`seq`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='蓝图子对象-学习目标';
CREATE TABLE IF NOT EXISTS `pbl_blueprint_role` (
`id` VARCHAR(32) NOT NULL,
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '0',
`blueprint_id` VARCHAR(32) NOT NULL,
`seq` INT NOT NULL DEFAULT 0,
`role_code` VARCHAR(64) NOT NULL,
`role_name` VARCHAR(128) NOT NULL,
`description` TEXT,
`responsibilities` TEXT,
`required_skills` TEXT,
`min_members` INT DEFAULT 1,
`max_members` INT DEFAULT 1,
`is_mandatory` VARCHAR(1) DEFAULT '0',
`created_by` VARCHAR(32) DEFAULT '',
`created_at` DATETIME NOT NULL,
`updated_by` VARCHAR(32) DEFAULT '',
`updated_at` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_role_code` (`tenant_id`,`blueprint_id`,`role_code`),
KEY `idx_pbl_role_bp` (`tenant_id`,`blueprint_id`,`seq`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='蓝图子对象-PBL角色';
CREATE TABLE IF NOT EXISTS `pbl_blueprint_mission` (
`id` VARCHAR(32) NOT NULL,
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '0',
`blueprint_id` VARCHAR(32) NOT NULL,
`seq` INT NOT NULL DEFAULT 0,
`mission_code` VARCHAR(64) NOT NULL,
`title` VARCHAR(255) NOT NULL,
`driving_question` TEXT,
`narrative` LONGTEXT,
`success_criteria` TEXT,
`related_goal_ids` TEXT,
`duration_hours` INT DEFAULT 0,
`created_by` VARCHAR(32) DEFAULT '',
`created_at` DATETIME NOT NULL,
`updated_by` VARCHAR(32) DEFAULT '',
`updated_at` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_mission_code` (`tenant_id`,`blueprint_id`,`mission_code`),
KEY `idx_pbl_mission_bp` (`tenant_id`,`blueprint_id`,`seq`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='蓝图子对象-驱动问题/Mission';
CREATE TABLE IF NOT EXISTS `pbl_blueprint_task` (
`id` VARCHAR(32) NOT NULL,
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '0',
`blueprint_id` VARCHAR(32) NOT NULL,
`mission_id` VARCHAR(32) DEFAULT '',
`seq` INT NOT NULL DEFAULT 0,
`task_code` VARCHAR(64) NOT NULL,
`title` VARCHAR(255) NOT NULL,
`description` TEXT,
`task_type` VARCHAR(32) DEFAULT 'explore',
`role_id` VARCHAR(32) DEFAULT '',
`depends_on_ids` TEXT,
`estimated_minutes` INT DEFAULT 0,
`artifact_spec_ids` TEXT,
`status` VARCHAR(32) DEFAULT 'draft',
`created_by` VARCHAR(32) DEFAULT '',
`created_at` DATETIME NOT NULL,
`updated_by` VARCHAR(32) DEFAULT '',
`updated_at` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_task_code` (`tenant_id`,`blueprint_id`,`task_code`),
KEY `idx_pbl_task_bp` (`tenant_id`,`blueprint_id`,`seq`),
KEY `idx_pbl_task_mission` (`tenant_id`,`mission_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='蓝图子对象-任务';
CREATE TABLE IF NOT EXISTS `pbl_blueprint_artifact_spec` (
`id` VARCHAR(32) NOT NULL,
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '0',
`blueprint_id` VARCHAR(32) NOT NULL,
`task_id` VARCHAR(32) DEFAULT '',
`seq` INT NOT NULL DEFAULT 0,
`artifact_code` VARCHAR(64) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`artifact_type` VARCHAR(32) DEFAULT 'document',
`format` VARCHAR(64) DEFAULT '',
`description` TEXT,
`required` VARCHAR(1) DEFAULT '1',
`max_size_mb` INT DEFAULT 0,
`schema_json` LONGTEXT,
`rubric_id` VARCHAR(32) DEFAULT '',
`created_by` VARCHAR(32) DEFAULT '',
`created_at` DATETIME NOT NULL,
`updated_by` VARCHAR(32) DEFAULT '',
`updated_at` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_artifact_code` (`tenant_id`,`blueprint_id`,`artifact_code`),
KEY `idx_pbl_artifact_bp` (`tenant_id`,`blueprint_id`,`seq`),
KEY `idx_pbl_artifact_task` (`tenant_id`,`task_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='蓝图子对象-产出物规格';
CREATE TABLE IF NOT EXISTS `pbl_blueprint_evidence_spec` (
`id` VARCHAR(32) NOT NULL,
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '0',
`blueprint_id` VARCHAR(32) NOT NULL,
`artifact_spec_id` VARCHAR(32) DEFAULT '',
`task_id` VARCHAR(32) DEFAULT '',
`seq` INT NOT NULL DEFAULT 0,
`evidence_code` VARCHAR(64) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`evidence_type` VARCHAR(32) DEFAULT 'result',
`collect_mode` VARCHAR(32) DEFAULT 'auto',
`source_hint` VARCHAR(255) DEFAULT '',
`idempotency_key_hint` VARCHAR(128) DEFAULT '',
`required` VARCHAR(1) DEFAULT '1',
`description` TEXT,
`created_by` VARCHAR(32) DEFAULT '',
`created_at` DATETIME NOT NULL,
`updated_by` VARCHAR(32) DEFAULT '',
`updated_at` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_evidence_code` (`tenant_id`,`blueprint_id`,`evidence_code`),
KEY `idx_pbl_evidence_bp` (`tenant_id`,`blueprint_id`,`seq`),
KEY `idx_pbl_evidence_artifact` (`tenant_id`,`artifact_spec_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='蓝图子对象-证据规格';
CREATE TABLE IF NOT EXISTS `pbl_blueprint_reflection_spec` (
`id` VARCHAR(32) NOT NULL,
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '0',
`blueprint_id` VARCHAR(32) NOT NULL,
`seq` INT NOT NULL DEFAULT 0,
`reflection_code` VARCHAR(64) NOT NULL,
`title` VARCHAR(255) NOT NULL,
`prompt` TEXT,
`reflection_type` VARCHAR(32) DEFAULT 'self',
`trigger_point` VARCHAR(64) DEFAULT 'task_end',
`required` VARCHAR(1) DEFAULT '1',
`rubric_hint` TEXT,
`created_by` VARCHAR(32) DEFAULT '',
`created_at` DATETIME NOT NULL,
`updated_by` VARCHAR(32) DEFAULT '',
`updated_at` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_reflection_code` (`tenant_id`,`blueprint_id`,`reflection_code`),
KEY `idx_pbl_reflection_bp` (`tenant_id`,`blueprint_id`,`seq`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='蓝图子对象-反思规格';
CREATE TABLE IF NOT EXISTS `pbl_blueprint_version` (
`id` VARCHAR(32) NOT NULL,
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '0',
`blueprint_id` VARCHAR(32) NOT NULL,
`version_no` INT NOT NULL DEFAULT 1,
`parent_version_id` VARCHAR(32) DEFAULT '',
`change_delta` LONGTEXT COMMENT '{op,path,before,after} 列表',
`snapshot_json` LONGTEXT,
`change_reason` VARCHAR(500) DEFAULT '',
`source` VARCHAR(32) DEFAULT 'manual',
`quality_status` VARCHAR(32) DEFAULT 'draft',
`created_by` VARCHAR(32) DEFAULT '',
`created_at` DATETIME NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_version_no` (`tenant_id`,`blueprint_id`,`version_no`),
KEY `idx_pbl_version_bp` (`tenant_id`,`blueprint_id`,`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='蓝图版本change_delta 证明对话式改模型)';
CREATE TABLE IF NOT EXISTS `pbl_template` (
`id` VARCHAR(32) NOT NULL,
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '0=平台内置全局模板',
`template_code` VARCHAR(64) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`description` TEXT,
`category` VARCHAR(64) DEFAULT 'general',
`subject_area` VARCHAR(64) DEFAULT '',
`grade_level` VARCHAR(32) DEFAULT '',
`blueprint_snapshot` LONGTEXT,
`offline_slots` LONGTEXT COMMENT 'LLM 不可用时降级填充槽位',
`is_builtin` VARCHAR(1) DEFAULT '0',
`template_version` VARCHAR(32) DEFAULT '1.0.0',
`status` VARCHAR(32) DEFAULT 'active',
`created_by` VARCHAR(32) DEFAULT '',
`created_at` DATETIME NOT NULL,
`updated_by` VARCHAR(32) DEFAULT '',
`updated_at` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pbl_template_code` (`tenant_id`,`template_code`),
KEY `idx_pbl_template_cat` (`tenant_id`,`category`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PBL模板含离线兜底槽位';