521 lines
26 KiB
SQL
521 lines
26 KiB
SQL
-- pbl_blueprint 核心表 DDL
|
||
-- 本文件由 scripts/derive_artifacts.py 从 pbl_blueprint/models/*.json 机械派生,禁止手工编辑
|
||
-- engine: postgresql(与 projects/pbls/env/*.json 的 db.engine 一致)
|
||
-- 主键 id 为应用层生成的 str(32):不使用 SERIAL / BIGSERIAL / nextval / AUTO_INCREMENT
|
||
|
||
-- pbl_blueprint: PBL蓝图聚合根
|
||
CREATE TABLE IF NOT EXISTS pbl_blueprint (
|
||
id varchar(32) NOT NULL,
|
||
tenant_id varchar(32) NOT NULL,
|
||
class_id varchar(32),
|
||
blueprint_code varchar(64) NOT NULL,
|
||
blueprint_name varchar(128) NOT NULL,
|
||
domain_code varchar(64),
|
||
grade_code varchar(32),
|
||
subject_code varchar(64),
|
||
project_duration integer,
|
||
student_count integer,
|
||
group_count integer,
|
||
complexity_level varchar(32),
|
||
status varchar(32),
|
||
current_version integer,
|
||
published_version_id varchar(32),
|
||
source_blueprint_id varchar(32),
|
||
source_template_id varchar(32),
|
||
owner_user_id varchar(64),
|
||
estimated_cost numeric(18,2),
|
||
tags_json text,
|
||
summary_text text,
|
||
is_deleted integer,
|
||
created_by varchar(64),
|
||
created_at timestamp,
|
||
updated_by varchar(64),
|
||
updated_at timestamp
|
||
);
|
||
COMMENT ON COLUMN pbl_blueprint.id IS '主键';
|
||
COMMENT ON COLUMN pbl_blueprint.tenant_id IS '租户ID(强制打头)';
|
||
COMMENT ON COLUMN pbl_blueprint.class_id IS '班级ID';
|
||
COMMENT ON COLUMN pbl_blueprint.blueprint_code IS '蓝图编码';
|
||
COMMENT ON COLUMN pbl_blueprint.blueprint_name IS '蓝图名称';
|
||
COMMENT ON COLUMN pbl_blueprint.domain_code IS '领域';
|
||
COMMENT ON COLUMN pbl_blueprint.grade_code IS '学段';
|
||
COMMENT ON COLUMN pbl_blueprint.subject_code IS '学科';
|
||
COMMENT ON COLUMN pbl_blueprint.project_duration IS '项目时长(课时)';
|
||
COMMENT ON COLUMN pbl_blueprint.student_count IS '参与学生数';
|
||
COMMENT ON COLUMN pbl_blueprint.group_count IS '小组数';
|
||
COMMENT ON COLUMN pbl_blueprint.complexity_level IS '复杂度';
|
||
COMMENT ON COLUMN pbl_blueprint.status IS '蓝图状态';
|
||
COMMENT ON COLUMN pbl_blueprint.current_version IS '当前版本号';
|
||
COMMENT ON COLUMN pbl_blueprint.published_version_id IS '已发布版本ID';
|
||
COMMENT ON COLUMN pbl_blueprint.source_blueprint_id IS '派生来源蓝图ID(fork)';
|
||
COMMENT ON COLUMN pbl_blueprint.source_template_id IS '来源模板ID';
|
||
COMMENT ON COLUMN pbl_blueprint.owner_user_id IS '负责人';
|
||
COMMENT ON COLUMN pbl_blueprint.estimated_cost IS '预估成本(元)';
|
||
COMMENT ON COLUMN pbl_blueprint.tags_json IS '标签(JSON数组)';
|
||
COMMENT ON COLUMN pbl_blueprint.summary_text IS '蓝图摘要';
|
||
COMMENT ON COLUMN pbl_blueprint.is_deleted IS '删除标记(0未删/1已删)';
|
||
COMMENT ON COLUMN pbl_blueprint.created_by IS '创建人';
|
||
COMMENT ON COLUMN pbl_blueprint.created_at IS '创建时间';
|
||
COMMENT ON COLUMN pbl_blueprint.updated_by IS '更新人';
|
||
COMMENT ON COLUMN pbl_blueprint.updated_at IS '更新时间';
|
||
|
||
CREATE UNIQUE INDEX IF NOT EXISTS pbl_blueprint_uk_blueprint_tenant_code ON pbl_blueprint (tenant_id, blueprint_code);
|
||
CREATE INDEX IF NOT EXISTS pbl_blueprint_idx_blueprint_tenant_status ON pbl_blueprint (tenant_id, status, is_deleted);
|
||
CREATE INDEX IF NOT EXISTS pbl_blueprint_idx_blueprint_class ON pbl_blueprint (tenant_id, class_id, is_deleted);
|
||
|
||
-- pbl_blueprint_artifact_spec: 蓝图子对象-产出物规格(Artifact)
|
||
CREATE TABLE IF NOT EXISTS pbl_blueprint_artifact_spec (
|
||
id varchar(32) NOT NULL,
|
||
tenant_id varchar(32) NOT NULL,
|
||
class_id varchar(32),
|
||
blueprint_id varchar(32) NOT NULL,
|
||
version_id varchar(32),
|
||
code varchar(64),
|
||
name varchar(128) NOT NULL,
|
||
description text,
|
||
seq_no integer,
|
||
status varchar(32),
|
||
content_json text,
|
||
artifact_type varchar(32),
|
||
required_flag integer,
|
||
quality_criteria text,
|
||
due_seq integer,
|
||
is_deleted integer,
|
||
created_by varchar(64),
|
||
created_at timestamp,
|
||
updated_by varchar(64),
|
||
updated_at timestamp
|
||
);
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.id IS '主键';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.tenant_id IS '租户ID(强制打头)';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.class_id IS '班级ID';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.blueprint_id IS '所属蓝图ID';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.version_id IS '所属版本ID';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.code IS '对象编码';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.name IS '对象名称';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.description IS '描述';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.seq_no IS '排序号';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.status IS '状态';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.content_json IS '扩展内容(JSON)';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.artifact_type IS '产出物类型';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.required_flag IS '是否必需(0/1)';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.quality_criteria IS '质量标准(JSON)';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.due_seq IS '交付次序';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.is_deleted IS '删除标记(0未删/1已删)';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.created_by IS '创建人';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.created_at IS '创建时间';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.updated_by IS '更新人';
|
||
COMMENT ON COLUMN pbl_blueprint_artifact_spec.updated_at IS '更新时间';
|
||
|
||
CREATE INDEX IF NOT EXISTS pbl_blueprint_artifact_spec_idx_pbl_blueprint_artifact_spec_tenant_bp ON pbl_blueprint_artifact_spec (tenant_id, blueprint_id, is_deleted);
|
||
CREATE UNIQUE INDEX IF NOT EXISTS pbl_blueprint_artifact_spec_uk_pbl_blueprint_artifact_spec_tenant_code ON pbl_blueprint_artifact_spec (tenant_id, code);
|
||
|
||
-- pbl_blueprint_evidence_spec: 蓝图子对象-证据规格(Evidence)
|
||
CREATE TABLE IF NOT EXISTS pbl_blueprint_evidence_spec (
|
||
id varchar(32) NOT NULL,
|
||
tenant_id varchar(32) NOT NULL,
|
||
class_id varchar(32),
|
||
blueprint_id varchar(32) NOT NULL,
|
||
version_id varchar(32),
|
||
code varchar(64),
|
||
name varchar(128) NOT NULL,
|
||
description text,
|
||
seq_no integer,
|
||
status varchar(32),
|
||
content_json text,
|
||
evidence_type varchar(32),
|
||
artifact_id varchar(32),
|
||
min_count integer,
|
||
weight_value numeric(18,2),
|
||
is_deleted integer,
|
||
created_by varchar(64),
|
||
created_at timestamp,
|
||
updated_by varchar(64),
|
||
updated_at timestamp
|
||
);
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.id IS '主键';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.tenant_id IS '租户ID(强制打头)';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.class_id IS '班级ID';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.blueprint_id IS '所属蓝图ID';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.version_id IS '所属版本ID';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.code IS '对象编码';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.name IS '对象名称';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.description IS '描述';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.seq_no IS '排序号';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.status IS '状态';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.content_json IS '扩展内容(JSON)';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.evidence_type IS '证据类型';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.artifact_id IS '关联产出物ID';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.min_count IS '最少提交数';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.weight_value IS '证据权重';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.is_deleted IS '删除标记(0未删/1已删)';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.created_by IS '创建人';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.created_at IS '创建时间';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.updated_by IS '更新人';
|
||
COMMENT ON COLUMN pbl_blueprint_evidence_spec.updated_at IS '更新时间';
|
||
|
||
CREATE INDEX IF NOT EXISTS pbl_blueprint_evidence_spec_idx_pbl_blueprint_evidence_spec_tenant_bp ON pbl_blueprint_evidence_spec (tenant_id, blueprint_id, is_deleted);
|
||
CREATE UNIQUE INDEX IF NOT EXISTS pbl_blueprint_evidence_spec_uk_pbl_blueprint_evidence_spec_tenant_code ON pbl_blueprint_evidence_spec (tenant_id, code);
|
||
|
||
-- pbl_blueprint_learning_goal: 蓝图子对象-学习目标(Goal)
|
||
CREATE TABLE IF NOT EXISTS pbl_blueprint_learning_goal (
|
||
id varchar(32) NOT NULL,
|
||
tenant_id varchar(32) NOT NULL,
|
||
class_id varchar(32),
|
||
blueprint_id varchar(32) NOT NULL,
|
||
version_id varchar(32),
|
||
code varchar(64),
|
||
name varchar(128) NOT NULL,
|
||
description text,
|
||
seq_no integer,
|
||
status varchar(32),
|
||
content_json text,
|
||
goal_type varchar(32),
|
||
competency_code varchar(64),
|
||
knowledge_points text,
|
||
measurable_flag integer,
|
||
weight_value numeric(18,2),
|
||
is_deleted integer,
|
||
created_by varchar(64),
|
||
created_at timestamp,
|
||
updated_by varchar(64),
|
||
updated_at timestamp
|
||
);
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.id IS '主键';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.tenant_id IS '租户ID(强制打头)';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.class_id IS '班级ID';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.blueprint_id IS '所属蓝图ID';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.version_id IS '所属版本ID';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.code IS '对象编码';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.name IS '对象名称';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.description IS '描述';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.seq_no IS '排序号';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.status IS '状态';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.content_json IS '扩展内容(JSON)';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.goal_type IS '目标类型';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.competency_code IS '素养/课标编码';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.knowledge_points IS '知识点(JSON数组)';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.measurable_flag IS '是否可测(0/1)';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.weight_value IS '权重';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.is_deleted IS '删除标记(0未删/1已删)';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.created_by IS '创建人';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.created_at IS '创建时间';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.updated_by IS '更新人';
|
||
COMMENT ON COLUMN pbl_blueprint_learning_goal.updated_at IS '更新时间';
|
||
|
||
CREATE INDEX IF NOT EXISTS pbl_blueprint_learning_goal_idx_pbl_blueprint_learning_goal_tenant_bp ON pbl_blueprint_learning_goal (tenant_id, blueprint_id, is_deleted);
|
||
CREATE UNIQUE INDEX IF NOT EXISTS pbl_blueprint_learning_goal_uk_pbl_blueprint_learning_goal_tenant_code ON pbl_blueprint_learning_goal (tenant_id, code);
|
||
|
||
-- pbl_blueprint_mission: 蓝图子对象-真实情境任务(Mission)
|
||
CREATE TABLE IF NOT EXISTS pbl_blueprint_mission (
|
||
id varchar(32) NOT NULL,
|
||
tenant_id varchar(32) NOT NULL,
|
||
class_id varchar(32),
|
||
blueprint_id varchar(32) NOT NULL,
|
||
version_id varchar(32),
|
||
code varchar(64),
|
||
name varchar(128) NOT NULL,
|
||
description text,
|
||
seq_no integer,
|
||
status varchar(32),
|
||
content_json text,
|
||
mission_type varchar(32),
|
||
scenario_text text,
|
||
audience varchar(256),
|
||
duration_hours numeric(18,2),
|
||
authenticity_score numeric(18,2),
|
||
is_deleted integer,
|
||
created_by varchar(64),
|
||
created_at timestamp,
|
||
updated_by varchar(64),
|
||
updated_at timestamp
|
||
);
|
||
COMMENT ON COLUMN pbl_blueprint_mission.id IS '主键';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.tenant_id IS '租户ID(强制打头)';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.class_id IS '班级ID';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.blueprint_id IS '所属蓝图ID';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.version_id IS '所属版本ID';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.code IS '对象编码';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.name IS '对象名称';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.description IS '描述';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.seq_no IS '排序号';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.status IS '状态';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.content_json IS '扩展内容(JSON)';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.mission_type IS '情境类型';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.scenario_text IS '情境描述';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.audience IS '受众/服务对象';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.duration_hours IS '预计课时';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.authenticity_score IS '真实性评分';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.is_deleted IS '删除标记(0未删/1已删)';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.created_by IS '创建人';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.created_at IS '创建时间';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.updated_by IS '更新人';
|
||
COMMENT ON COLUMN pbl_blueprint_mission.updated_at IS '更新时间';
|
||
|
||
CREATE INDEX IF NOT EXISTS pbl_blueprint_mission_idx_pbl_blueprint_mission_tenant_bp ON pbl_blueprint_mission (tenant_id, blueprint_id, is_deleted);
|
||
CREATE UNIQUE INDEX IF NOT EXISTS pbl_blueprint_mission_uk_pbl_blueprint_mission_tenant_code ON pbl_blueprint_mission (tenant_id, code);
|
||
|
||
-- pbl_blueprint_reflection_spec: 蓝图子对象-反思规格(Reflection)
|
||
CREATE TABLE IF NOT EXISTS pbl_blueprint_reflection_spec (
|
||
id varchar(32) NOT NULL,
|
||
tenant_id varchar(32) NOT NULL,
|
||
class_id varchar(32),
|
||
blueprint_id varchar(32) NOT NULL,
|
||
version_id varchar(32),
|
||
code varchar(64),
|
||
name varchar(128) NOT NULL,
|
||
description text,
|
||
seq_no integer,
|
||
status varchar(32),
|
||
content_json text,
|
||
reflect_type varchar(32),
|
||
frequency varchar(32),
|
||
prompt_text text,
|
||
duration_minutes integer,
|
||
is_deleted integer,
|
||
created_by varchar(64),
|
||
created_at timestamp,
|
||
updated_by varchar(64),
|
||
updated_at timestamp
|
||
);
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.id IS '主键';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.tenant_id IS '租户ID(强制打头)';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.class_id IS '班级ID';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.blueprint_id IS '所属蓝图ID';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.version_id IS '所属版本ID';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.code IS '对象编码';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.name IS '对象名称';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.description IS '描述';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.seq_no IS '排序号';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.status IS '状态';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.content_json IS '扩展内容(JSON)';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.reflect_type IS '反思类型';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.frequency IS '频次';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.prompt_text IS '反思引导语';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.duration_minutes IS '时长(分钟)';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.is_deleted IS '删除标记(0未删/1已删)';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.created_by IS '创建人';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.created_at IS '创建时间';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.updated_by IS '更新人';
|
||
COMMENT ON COLUMN pbl_blueprint_reflection_spec.updated_at IS '更新时间';
|
||
|
||
CREATE INDEX IF NOT EXISTS pbl_blueprint_reflection_spec_idx_pbl_blueprint_reflection_spec_tenant_bp ON pbl_blueprint_reflection_spec (tenant_id, blueprint_id, is_deleted);
|
||
CREATE UNIQUE INDEX IF NOT EXISTS pbl_blueprint_reflection_spec_uk_pbl_blueprint_reflection_spec_tenant_code ON pbl_blueprint_reflection_spec (tenant_id, code);
|
||
|
||
-- pbl_blueprint_role: 蓝图子对象-角色(Role)
|
||
CREATE TABLE IF NOT EXISTS pbl_blueprint_role (
|
||
id varchar(32) NOT NULL,
|
||
tenant_id varchar(32) NOT NULL,
|
||
class_id varchar(32),
|
||
blueprint_id varchar(32) NOT NULL,
|
||
version_id varchar(32),
|
||
code varchar(64),
|
||
name varchar(128) NOT NULL,
|
||
description text,
|
||
seq_no integer,
|
||
status varchar(32),
|
||
content_json text,
|
||
role_category varchar(32),
|
||
member_count integer,
|
||
responsibility text,
|
||
competency_tags text,
|
||
is_deleted integer,
|
||
created_by varchar(64),
|
||
created_at timestamp,
|
||
updated_by varchar(64),
|
||
updated_at timestamp
|
||
);
|
||
COMMENT ON COLUMN pbl_blueprint_role.id IS '主键';
|
||
COMMENT ON COLUMN pbl_blueprint_role.tenant_id IS '租户ID(强制打头)';
|
||
COMMENT ON COLUMN pbl_blueprint_role.class_id IS '班级ID';
|
||
COMMENT ON COLUMN pbl_blueprint_role.blueprint_id IS '所属蓝图ID';
|
||
COMMENT ON COLUMN pbl_blueprint_role.version_id IS '所属版本ID';
|
||
COMMENT ON COLUMN pbl_blueprint_role.code IS '对象编码';
|
||
COMMENT ON COLUMN pbl_blueprint_role.name IS '对象名称';
|
||
COMMENT ON COLUMN pbl_blueprint_role.description IS '描述';
|
||
COMMENT ON COLUMN pbl_blueprint_role.seq_no IS '排序号';
|
||
COMMENT ON COLUMN pbl_blueprint_role.status IS '状态';
|
||
COMMENT ON COLUMN pbl_blueprint_role.content_json IS '扩展内容(JSON)';
|
||
COMMENT ON COLUMN pbl_blueprint_role.role_category IS '角色类别';
|
||
COMMENT ON COLUMN pbl_blueprint_role.member_count IS '角色人数';
|
||
COMMENT ON COLUMN pbl_blueprint_role.responsibility IS '职责说明';
|
||
COMMENT ON COLUMN pbl_blueprint_role.competency_tags IS '能力标签(JSON数组)';
|
||
COMMENT ON COLUMN pbl_blueprint_role.is_deleted IS '删除标记(0未删/1已删)';
|
||
COMMENT ON COLUMN pbl_blueprint_role.created_by IS '创建人';
|
||
COMMENT ON COLUMN pbl_blueprint_role.created_at IS '创建时间';
|
||
COMMENT ON COLUMN pbl_blueprint_role.updated_by IS '更新人';
|
||
COMMENT ON COLUMN pbl_blueprint_role.updated_at IS '更新时间';
|
||
|
||
CREATE INDEX IF NOT EXISTS pbl_blueprint_role_idx_pbl_blueprint_role_tenant_bp ON pbl_blueprint_role (tenant_id, blueprint_id, is_deleted);
|
||
CREATE UNIQUE INDEX IF NOT EXISTS pbl_blueprint_role_uk_pbl_blueprint_role_tenant_code ON pbl_blueprint_role (tenant_id, code);
|
||
|
||
-- pbl_blueprint_task: 蓝图子对象-任务分解(Task)
|
||
CREATE TABLE IF NOT EXISTS pbl_blueprint_task (
|
||
id varchar(32) NOT NULL,
|
||
tenant_id varchar(32) NOT NULL,
|
||
class_id varchar(32),
|
||
blueprint_id varchar(32) NOT NULL,
|
||
version_id varchar(32),
|
||
code varchar(64),
|
||
name varchar(128) NOT NULL,
|
||
description text,
|
||
seq_no integer,
|
||
status varchar(32),
|
||
content_json text,
|
||
parent_task_id varchar(32),
|
||
task_type varchar(32),
|
||
tool_resources text,
|
||
planned_hours numeric(18,2),
|
||
assessment_rule text,
|
||
is_deleted integer,
|
||
created_by varchar(64),
|
||
created_at timestamp,
|
||
updated_by varchar(64),
|
||
updated_at timestamp
|
||
);
|
||
COMMENT ON COLUMN pbl_blueprint_task.id IS '主键';
|
||
COMMENT ON COLUMN pbl_blueprint_task.tenant_id IS '租户ID(强制打头)';
|
||
COMMENT ON COLUMN pbl_blueprint_task.class_id IS '班级ID';
|
||
COMMENT ON COLUMN pbl_blueprint_task.blueprint_id IS '所属蓝图ID';
|
||
COMMENT ON COLUMN pbl_blueprint_task.version_id IS '所属版本ID';
|
||
COMMENT ON COLUMN pbl_blueprint_task.code IS '对象编码';
|
||
COMMENT ON COLUMN pbl_blueprint_task.name IS '对象名称';
|
||
COMMENT ON COLUMN pbl_blueprint_task.description IS '描述';
|
||
COMMENT ON COLUMN pbl_blueprint_task.seq_no IS '排序号';
|
||
COMMENT ON COLUMN pbl_blueprint_task.status IS '状态';
|
||
COMMENT ON COLUMN pbl_blueprint_task.content_json IS '扩展内容(JSON)';
|
||
COMMENT ON COLUMN pbl_blueprint_task.parent_task_id IS '父任务ID';
|
||
COMMENT ON COLUMN pbl_blueprint_task.task_type IS '任务类型';
|
||
COMMENT ON COLUMN pbl_blueprint_task.tool_resources IS '工具与资源(JSON数组)';
|
||
COMMENT ON COLUMN pbl_blueprint_task.planned_hours IS '计划课时';
|
||
COMMENT ON COLUMN pbl_blueprint_task.assessment_rule IS '评价规则(JSON)';
|
||
COMMENT ON COLUMN pbl_blueprint_task.is_deleted IS '删除标记(0未删/1已删)';
|
||
COMMENT ON COLUMN pbl_blueprint_task.created_by IS '创建人';
|
||
COMMENT ON COLUMN pbl_blueprint_task.created_at IS '创建时间';
|
||
COMMENT ON COLUMN pbl_blueprint_task.updated_by IS '更新人';
|
||
COMMENT ON COLUMN pbl_blueprint_task.updated_at IS '更新时间';
|
||
|
||
CREATE INDEX IF NOT EXISTS pbl_blueprint_task_idx_pbl_blueprint_task_tenant_bp ON pbl_blueprint_task (tenant_id, blueprint_id, is_deleted);
|
||
CREATE UNIQUE INDEX IF NOT EXISTS pbl_blueprint_task_uk_pbl_blueprint_task_tenant_code ON pbl_blueprint_task (tenant_id, code);
|
||
|
||
-- pbl_blueprint_template: PBL蓝图模板
|
||
CREATE TABLE IF NOT EXISTS pbl_blueprint_template (
|
||
id varchar(32) NOT NULL,
|
||
tenant_id varchar(32) NOT NULL,
|
||
class_id varchar(32),
|
||
template_code varchar(64) NOT NULL,
|
||
template_name varchar(128) NOT NULL,
|
||
template_type varchar(32),
|
||
domain_code varchar(64),
|
||
grade_code varchar(32),
|
||
subject_code varchar(64),
|
||
complexity_level varchar(32),
|
||
scope varchar(32),
|
||
source_blueprint_id varchar(32),
|
||
usage_count integer,
|
||
status varchar(32),
|
||
is_deleted integer,
|
||
created_by varchar(64),
|
||
created_at timestamp,
|
||
updated_by varchar(64),
|
||
updated_at timestamp
|
||
);
|
||
COMMENT ON COLUMN pbl_blueprint_template.id IS '主键';
|
||
COMMENT ON COLUMN pbl_blueprint_template.tenant_id IS '租户ID(强制打头)';
|
||
COMMENT ON COLUMN pbl_blueprint_template.class_id IS '班级ID';
|
||
COMMENT ON COLUMN pbl_blueprint_template.template_code IS '模板编码';
|
||
COMMENT ON COLUMN pbl_blueprint_template.template_name IS '模板名称';
|
||
COMMENT ON COLUMN pbl_blueprint_template.template_type IS '模板类型';
|
||
COMMENT ON COLUMN pbl_blueprint_template.domain_code IS '领域';
|
||
COMMENT ON COLUMN pbl_blueprint_template.grade_code IS '学段';
|
||
COMMENT ON COLUMN pbl_blueprint_template.subject_code IS '学科';
|
||
COMMENT ON COLUMN pbl_blueprint_template.complexity_level IS '复杂度';
|
||
COMMENT ON COLUMN pbl_blueprint_template.scope IS '可见范围';
|
||
COMMENT ON COLUMN pbl_blueprint_template.source_blueprint_id IS '来源蓝图ID';
|
||
COMMENT ON COLUMN pbl_blueprint_template.usage_count IS '引用次数';
|
||
COMMENT ON COLUMN pbl_blueprint_template.status IS '状态';
|
||
COMMENT ON COLUMN pbl_blueprint_template.is_deleted IS '删除标记(0未删/1已删)';
|
||
COMMENT ON COLUMN pbl_blueprint_template.created_by IS '创建人';
|
||
COMMENT ON COLUMN pbl_blueprint_template.created_at IS '创建时间';
|
||
COMMENT ON COLUMN pbl_blueprint_template.updated_by IS '更新人';
|
||
COMMENT ON COLUMN pbl_blueprint_template.updated_at IS '更新时间';
|
||
|
||
CREATE UNIQUE INDEX IF NOT EXISTS pbl_blueprint_template_uk_template_tenant_code ON pbl_blueprint_template (tenant_id, template_code);
|
||
CREATE INDEX IF NOT EXISTS pbl_blueprint_template_idx_template_tenant_status ON pbl_blueprint_template (tenant_id, status, is_deleted);
|
||
|
||
-- pbl_blueprint_template_item: PBL蓝图模板明细
|
||
CREATE TABLE IF NOT EXISTS pbl_blueprint_template_item (
|
||
id varchar(32) NOT NULL,
|
||
tenant_id varchar(32) NOT NULL,
|
||
class_id varchar(32),
|
||
template_id varchar(32) NOT NULL,
|
||
subobject_type varchar(32) NOT NULL,
|
||
item_payload_json text,
|
||
seq_no integer,
|
||
required_flag integer,
|
||
is_deleted integer,
|
||
created_by varchar(64),
|
||
created_at timestamp,
|
||
updated_by varchar(64),
|
||
updated_at timestamp
|
||
);
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.id IS '主键';
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.tenant_id IS '租户ID(强制打头)';
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.class_id IS '班级ID';
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.template_id IS '所属模板ID';
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.subobject_type IS '子对象类型';
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.item_payload_json IS '模板内容(JSON)';
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.seq_no IS '排序号';
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.required_flag IS '是否必需(0/1)';
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.is_deleted IS '删除标记(0未删/1已删)';
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.created_by IS '创建人';
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.created_at IS '创建时间';
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.updated_by IS '更新人';
|
||
COMMENT ON COLUMN pbl_blueprint_template_item.updated_at IS '更新时间';
|
||
|
||
CREATE UNIQUE INDEX IF NOT EXISTS pbl_blueprint_template_item_uk_tplitem_tenant_tpl_type_seq ON pbl_blueprint_template_item (tenant_id, template_id, subobject_type, seq_no);
|
||
CREATE INDEX IF NOT EXISTS pbl_blueprint_template_item_idx_tplitem_template ON pbl_blueprint_template_item (tenant_id, template_id, is_deleted);
|
||
|
||
-- pbl_blueprint_version: PBL蓝图版本
|
||
CREATE TABLE IF NOT EXISTS pbl_blueprint_version (
|
||
id varchar(32) NOT NULL,
|
||
tenant_id varchar(32) NOT NULL,
|
||
class_id varchar(32),
|
||
blueprint_id varchar(32) NOT NULL,
|
||
version_no integer NOT NULL,
|
||
version_name varchar(128),
|
||
version_status varchar(32),
|
||
snapshot_json text,
|
||
content_hash varchar(64),
|
||
published_by varchar(64),
|
||
published_at timestamp,
|
||
change_note text,
|
||
base_version_id varchar(32),
|
||
is_deleted integer,
|
||
created_by varchar(64),
|
||
created_at timestamp,
|
||
updated_by varchar(64),
|
||
updated_at timestamp
|
||
);
|
||
COMMENT ON COLUMN pbl_blueprint_version.id IS '主键';
|
||
COMMENT ON COLUMN pbl_blueprint_version.tenant_id IS '租户ID(强制打头)';
|
||
COMMENT ON COLUMN pbl_blueprint_version.class_id IS '班级ID';
|
||
COMMENT ON COLUMN pbl_blueprint_version.blueprint_id IS '所属蓝图ID';
|
||
COMMENT ON COLUMN pbl_blueprint_version.version_no IS '版本号';
|
||
COMMENT ON COLUMN pbl_blueprint_version.version_name IS '版本名称';
|
||
COMMENT ON COLUMN pbl_blueprint_version.version_status IS '版本状态';
|
||
COMMENT ON COLUMN pbl_blueprint_version.snapshot_json IS '蓝图快照(JSON)';
|
||
COMMENT ON COLUMN pbl_blueprint_version.content_hash IS '快照内容哈希';
|
||
COMMENT ON COLUMN pbl_blueprint_version.published_by IS '发布人';
|
||
COMMENT ON COLUMN pbl_blueprint_version.published_at IS '发布时间';
|
||
COMMENT ON COLUMN pbl_blueprint_version.change_note IS '变更说明';
|
||
COMMENT ON COLUMN pbl_blueprint_version.base_version_id IS '基线版本ID';
|
||
COMMENT ON COLUMN pbl_blueprint_version.is_deleted IS '删除标记(0未删/1已删)';
|
||
COMMENT ON COLUMN pbl_blueprint_version.created_by IS '创建人';
|
||
COMMENT ON COLUMN pbl_blueprint_version.created_at IS '创建时间';
|
||
COMMENT ON COLUMN pbl_blueprint_version.updated_by IS '更新人';
|
||
COMMENT ON COLUMN pbl_blueprint_version.updated_at IS '更新时间';
|
||
|
||
CREATE UNIQUE INDEX IF NOT EXISTS pbl_blueprint_version_uk_version_blueprint_no ON pbl_blueprint_version (tenant_id, blueprint_id, version_no);
|
||
CREATE INDEX IF NOT EXISTS pbl_blueprint_version_idx_version_blueprint ON pbl_blueprint_version (tenant_id, blueprint_id, is_deleted);
|