approve: [M11b-2d-A1a] 留证件补解释器路径 + world_sync 本地 git 收口提交

This commit is contained in:
agent.develop 2026-09-22 23:41:25 +08:00
parent 7a66ed3a10
commit 89f651478c

View File

@ -1,41 +1,59 @@
-- pbl_evidence 表 DDL(自动生成,与 apps/pbls/scripts/ddl/pbls_tables.sql 同源)
-- 本文件由 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` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT 租户ID(强制打头),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键,
`artifact_uid` VARCHAR(32) NOT NULL COMMENT "产出UID",
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
`blueprint_id` BIGINT UNSIGNED NOT NULL COMMENT "蓝图",
`team_id` BIGINT UNSIGNED NOT NULL COMMENT "团队",
`creator_id` VARCHAR(32) NOT NULL COMMENT "作者",
`title` VARCHAR(128) NOT NULL COMMENT "标题",
`artifact_type` VARCHAR(64) NOT NULL COMMENT "类型",
`content_json` LONGTEXT NULL COMMENT "内容",
`version_no` INT NOT NULL DEFAULT 0 COMMENT "版本",
`status` VARCHAR(64) NOT NULL COMMENT "状态",
`submitted_at` DATETIME NULL 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 "更新时间(应用层写入)",
`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`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="学生产出物(版本内联 version_no)";
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` (
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT 租户ID(强制打头),
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键,
`artifact_id` BIGINT UNSIGNED NOT NULL COMMENT "产出物",
`evidence_type` VARCHAR(64) NOT NULL COMMENT "证据类型",
`source_event_id` VARCHAR(32) NOT NULL COMMENT "来源 runtime_event",
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
`learner_id` VARCHAR(32) NOT NULL COMMENT "学习者",
`blueprint_id` BIGINT UNSIGNED NOT NULL COMMENT "蓝图",
`payload_json` LONGTEXT NULL COMMENT "证据体",
`occurred_at` DATETIME NOT NULL COMMENT "发生时间",
`dedup_key` VARCHAR(32) NOT 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 "更新时间(应用层写入)",
`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`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="学习证据(幂等采集,唯一索引防重)";
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='学习证据表';