deliver: 交付收口(引擎代为提交)

This commit is contained in:
agent.develop 2026-09-19 21:57:46 +08:00
parent cda913a694
commit 3d8fe09c0d

View File

@ -3,42 +3,41 @@
-- 幂等: CREATE ... IF NOT EXISTS / DROP ... IF EXISTS
CREATE TABLE IF NOT EXISTS `pbl_runtime_event` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '自增ID(逻辑主键;物理主键=(id,created_at))',
`tenant_id` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '租户ID(多租户强制打头)',
`event_uid` VARCHAR(64) NOT NULL COMMENT '事件UID(uuid,应用层生成)',
`event_code` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '事件编码',
`idem_key` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '幂等键(同键重复投递只落一条)',
`world_id` BIGINT NOT NULL DEFAULT 0 COMMENT '世界ID(引用 world 基表,只读)',
`scene_id` BIGINT NOT NULL DEFAULT 0 COMMENT '场景/会话ID(引用 scense 基表,只读)',
`session_id` BIGINT NOT NULL DEFAULT 0 COMMENT '游戏会话ID(M11a 语义,与 scene_id 同域)',
`entity_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '实体ID(引用 entity 基表,只读)',
`actor_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '触发者(服务端会话解析,客户端禁填)',
`event_type` VARCHAR(64) NOT NULL COMMENT '事件类型',
`payload` TEXT NULL COMMENT '事件负载JSON(任务书字段)',
`payload_json` LONGTEXT NULL COMMENT '事件负载JSON(M11a 写路径列名,与 payload 同义留宽)',
`causation_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '因果链:引发本事件的事件UID',
`seq` BIGINT NOT NULL DEFAULT 0 COMMENT '会话内单调序号(轮询游标,应用层生成)',
`seq_no` BIGINT NOT NULL DEFAULT 0 COMMENT '会话内单调序号(M11a 写路径列名)',
`source` VARCHAR(32) NOT NULL DEFAULT 'runtime' COMMENT '来源:runtime/agent/script/client_intent',
`state` VARCHAR(16) NOT NULL DEFAULT 'applied' COMMENT 'applied/rejected/rolled_back',
`state_version` BIGINT NOT NULL DEFAULT 0 COMMENT '本事件推进到的服务端权威版本',
`tx_group` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '事务组(同组同事务)',
`broadcast` TINYINT NOT NULL DEFAULT 1 COMMENT '是否参与广播 0/1',
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间(分区键,禁TIMESTAMP)',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间戳(append-only:永不 UPDATE)',
`occurred_at` DATETIME NULL COMMENT '兼容列(M11a 旧分区键,新写入可空)',
PRIMARY KEY (`id`, `created_at`),
UNIQUE KEY `uk_event_uid` (`tenant_id`, `event_uid`, `created_at`),
UNIQUE KEY `uk_tenant_idem` (`tenant_id`, `idem_key`, `created_at`),
KEY `ix_scene_created` (`scene_id`, `created_at`),
KEY `ix_tenant_session_seq` (`tenant_id`, `session_id`, `seq`),
KEY `ix_tenant_session_seqno` (`tenant_id`, `session_id`, `seq_no`),
KEY `ix_tenant_world_type` (`tenant_id`, `world_id`, `event_type`),
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tenant_id` VARCHAR(32) NOT NULL,
`event_uid` VARCHAR(64) NOT NULL,
`session_id` VARCHAR(64) NOT NULL DEFAULT '',
`world_id` VARCHAR(64) NOT NULL DEFAULT '',
`scene_id` VARCHAR(64) NOT NULL DEFAULT '',
`actor_id` VARCHAR(64) NOT NULL DEFAULT '',
`event_type` VARCHAR(64) NOT NULL DEFAULT '',
`event_code` VARCHAR(64) NOT NULL DEFAULT '',
`idem_key` VARCHAR(128) NOT NULL DEFAULT '',
`entity_id` VARCHAR(64) NOT NULL DEFAULT '',
`payload` TEXT,
`payload_json` LONGTEXT,
`seq` BIGINT NOT NULL DEFAULT 0,
`seq_no` BIGINT NOT NULL DEFAULT 0,
`source` VARCHAR(32) NOT NULL DEFAULT '',
`state` VARCHAR(32) NOT NULL DEFAULT '',
`tx_group` VARCHAR(64) NOT NULL DEFAULT '',
`broadcast` VARCHAR(16) NOT NULL DEFAULT '',
`causation_id` VARCHAR(64) NOT NULL DEFAULT '',
`state_version` BIGINT NOT NULL DEFAULT 0,
`created_by` VARCHAR(64) NOT NULL DEFAULT '',
`occurred_at` DATETIME NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`,`created_at`),
UNIQUE KEY `uk_event_uid` (`tenant_id`,`event_uid`,`created_at`),
UNIQUE KEY `uk_tenant_idem` (`tenant_id`,`idem_key`,`created_at`),
KEY `ix_tenant_session_seq` (`tenant_id`,`session_id`,`seq`),
KEY `ix_tenant_session_seqno` (`tenant_id`,`session_id`,`seq_no`),
KEY `ix_tenant_world_type` (`tenant_id`,`world_id`,`event_type`),
KEY `ix_scene_created` (`scene_id`,`created_at`),
KEY `ix_tx_group` (`tx_group`),
KEY `ix_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
COMMENT='运行时事件流(append-only,按月RANGE分区,保留14个月)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
PARTITION BY RANGE COLUMNS(`created_at`) (
PARTITION `p202609` VALUES LESS THAN (DATE '2026-10-01'),
PARTITION `p202610` VALUES LESS THAN (DATE '2026-11-01'),