235 lines
9.9 KiB
SQL
235 lines
9.9 KiB
SQL
-- 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模板(含离线兜底槽位)';
|