-- ai_chat_event:会话事件账本(唯一事实源,append-only,永不删除)。 -- 每事件一行:一句话 / 一次工具调用 / 一次工具结果 / 一次按钮点击,比"轮"更细。 -- 字段按 ERP 惯例命名(sMakePerson/tCreateDate/sBrandsId/sSubsidiaryId)。 -- sPayload = 事件 JSON 全文(含 t/type 与业务字段,与 Redis 热缓存同格式)。 -- iSeq = 会话内序号 1..n(服务端赋值,UNIQUE 防并发撞号;纯溯源列,不进投影/API)。 -- iTurn = 轮次 1..m(user/form_submit 开新轮,其余事件继承当前轮;纯溯源列)。 -- Redis(chat:ledger:{convId},30 天 TTL)只是热缓存:读优先走 Redis,缓存失效回源本表。 CREATE TABLE IF NOT EXISTS ai_chat_event ( iId bigint NOT NULL AUTO_INCREMENT PRIMARY KEY, sConversationId varchar(96) NOT NULL, iSeq int NOT NULL, iTurn int NOT NULL DEFAULT 1, sMakePerson varchar(64) NULL, sBrandsId varchar(32) NULL, sSubsidiaryId varchar(32) NULL, sType varchar(32) NOT NULL, sPayload mediumtext, tCreateDate datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_conv_seq (sConversationId, iSeq), KEY idx_conv (sConversationId, iId) );