pbl_evidence/sql/pbl_evidence.sql

60 lines
3.7 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.

-- 本文件由 scripts/gen_ddl_from_models.py 自动生成,**单一真源 = models/*.json**。
-- 禁止手工编辑本文件(改表结构请改 models/{table}.json 后重跑本脚本)。
-- 生成命令:python3 scripts/gen_ddl_from_models.py
--
-- M5a-DISC.1 主键口径(models / DDL / collector 三方对齐):
-- id = VARCHAR(32) NOT NULL,无 AUTO_INCREMENT、无 DEFAULT;
-- 主键值由应用层 pbl_evidence/pk.py:gen_pk()(appPublic.uniqueID.getID,
-- 离线降级 uuid4().hex,长度均 <= 32)在 INSERT 前生成并显式写入列集合。
-- 引用字段 tenant_id/artifact_id/session_id/blueprint_id/learner_id/
-- source_event_id/dedup_key/collect_batch_id 一律 VARCHAR(32),与主键同型,
-- JOIN / 等值比较不存在类型不匹配。
-- 表 pbl_artifact(真源 models/pbl_artifact.json)
CREATE TABLE IF NOT EXISTS `pbl_artifact` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '租户ID(强制打头)',
`artifact_uid` VARCHAR(32) NOT NULL COMMENT '产出UID',
`session_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '会话ID',
`blueprint_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '蓝图ID',
`team_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '团队ID',
`creator_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '作者',
`title` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '标题',
`artifact_type` VARCHAR(64) NOT NULL DEFAULT 'other' COMMENT '产出物类型',
`content_json` LONGTEXT NULL COMMENT '内容(序列化JSON文本)',
`version_no` INT NOT NULL DEFAULT 1 COMMENT '版本号(内联)',
`status` VARCHAR(64) NOT NULL DEFAULT 'draft' COMMENT '状态',
`submitted_at` DATETIME NULL COMMENT '提交时间',
`created_at` DATETIME NOT NULL COMMENT '创建时间(应用层写入)',
`updated_at` DATETIME NOT NULL COMMENT '更新时间(应用层写入)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_art_uid` (`tenant_id`, `artifact_uid`),
KEY `idx_art_session` (`tenant_id`, `session_id`),
KEY `idx_art_blueprint` (`tenant_id`, `blueprint_id`),
KEY `idx_art_creator` (`tenant_id`, `creator_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学生产出物表';
-- 表 pbl_evidence(真源 models/pbl_evidence.json)
CREATE TABLE IF NOT EXISTS `pbl_evidence` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '租户ID(强制打头)',
`artifact_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '归属产出物ID(0=无强归属)',
`evidence_type` VARCHAR(64) NOT NULL DEFAULT 'observation' COMMENT '证据类型',
`source_event_id` VARCHAR(32) NOT NULL COMMENT '来源runtime_event事件ID',
`session_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '会话ID',
`learner_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '学习者ID',
`blueprint_id` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '蓝图ID',
`payload_json` LONGTEXT NULL COMMENT '证据体(序列化JSON文本)',
`occurred_at` DATETIME NOT NULL COMMENT '发生时间',
`dedup_key` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '去重键(md5(tenant|event|type))',
`collect_batch_id` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '采集批次ID',
`created_at` DATETIME NOT NULL COMMENT '创建时间(应用层写入)',
`updated_at` DATETIME NOT NULL COMMENT '更新时间(应用层写入)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_ev_dedup` (`tenant_id`, `source_event_id`, `evidence_type`),
KEY `idx_ev_learner` (`tenant_id`, `learner_id`, `occurred_at`),
KEY `idx_ev_artifact` (`tenant_id`, `artifact_id`),
KEY `idx_ev_type_time` (`tenant_id`, `evidence_type`, `occurred_at`),
KEY `idx_ev_batch` (`tenant_id`, `collect_batch_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习证据表';