ai_op_queue.sql 2.63 KB
-- ai_op_queue:AI 写操作队列(rearch3 §3:**AI 侧唯一的写入口**)。
-- 用户在预览卡/表单上点按钮(保存/审核/作废/…)→ xlyAi 校验后落一行 sStatus='confirmed'。
-- xlyAi 工作到此为止:执行/审计由 ERP 侧负责(暂存执行器 /ai/execStaging 读本表;
-- 现状=报价自动执行、其余进待办)。覆盖 update / create / delete / examine / invalid(sOpType 区分)。
--   update:sTargetBillId + sField/sNewValue(单字段;一次保存多字段 = 多行)。
--   invalid:sNewValue 存 handleType(toVoid=作废 / cancel=复原);examine:sNewValue 存 iFlag(1/0)。
--   create:整表 payload 存 sPayload(列->值 JSON,多表用 __tables__)。
-- 列名兼容:ERP 执行器仍读 sUserId → sMakePerson(ERP 惯例)双写,ERP 侧切换后可删 sUserId。
CREATE TABLE IF NOT EXISTS ai_op_queue (
  sId             varchar(64)   NOT NULL PRIMARY KEY,   -- 操作/深链 token
  sUserId         varchar(64),                          -- 旧列(ERP 执行器在读,暂保留)
  sMakePerson     varchar(64),                          -- 新列(ERP 惯例;与 sUserId 双写)
  sConversationId varchar(96),
  sBrandsId       varchar(32),
  sSubsidiaryId   varchar(32),
  sOpType         varchar(16),                          -- update | create | delete | examine | generate
  sTargetFormId   varchar(64),
  sTargetModuleId varchar(64),
  sTargetTable    varchar(64),
  sTargetBillId   varchar(64),                          -- 目标记录 sId(update/delete/examine 用)
  sField          varchar(64),                          -- 目标列(技术名)
  sFieldLabel     varchar(128),                         -- 目标列中文名
  sOldValue       varchar(500),
  sNewValue       varchar(500),
  sPayload        text,                                 -- create/update 的列->值 JSON(整表写入)
  sSourceRef      text,                                 -- generate:源表单 + 选中明细 sId 集合 JSON
  bAutoExecute    tinyint       NOT NULL DEFAULT 0,     -- 1=ERP 确认后自动执行;0=预填表单等用户提交
  sDescription    varchar(500),                         -- 人类可读的改动描述
  sStatus         varchar(16),                          -- draft | confirmed | executing | executed | failed | cancelled | expired
  sResultBillId   varchar(64),                          -- 执行后生成/影响的单据 id
  sResultMsg      varchar(500),
  sErrorMsg       varchar(1000),
  tCreateDate     datetime,
  tConfirmDate    datetime,
  tExecutedDate   datetime,
  tExpireAt       datetime,
  KEY idx_conv (sConversationId, sStatus)
);