ai_op_queue.sql
3.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
-- ai_op_queue:AI 写操作队列(rearch3 §3:**AI 侧唯一的写入口**)。
-- 用户在预览卡/表单上点按钮(保存/审核/作废/…)→ xlyAi 校验后落一行 pending+100。
-- xlyAi 工作到此为止:执行/审计由 ERP 侧负责(暂存执行器 /ai/execStaging 读本表;
-- 现状=报价自动执行、其余进待办)。覆盖 update / create / delete / examine / invalid(sOpType 区分)。
--
-- 状态协议(2026-07-29 定)= sStatus 三态 + iStatusCode 状态码:
-- pending:100=已提交等待 ERP 处理(xlyAi 写入的唯一状态)|101=ERP 处理中(已领取,防并发重复执行)
-- success:200=执行成功|201=幂等命中(此前已执行,本次返回既有结果)
-- fail :400=载荷/参数非法|401=身份/权限不足|404=目标记录不存在|409=状态冲突(重复审核/
-- 重复作废/未审核销审/记录被他人改过)|422=业务校验未通过|423=记录被锁定(SysLocking)|
-- 450=已取消(ERP 端取消待办)|500=执行异常|504=执行超时
-- pending 由 xlyAi 写入(100)与 ERP 领取时更新(101);success/fail 只由 ERP 回写。
-- 旧值 draft/confirmed/executing/executed/failed/cancelled 已废弃(xlyAi 兼容读,不再写)。
-- 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), -- pending | success | fail(状态码见头部注释)
iStatusCode int NULL, -- 状态码(100/101/200/201/4xx/5xx)
sResultBillId varchar(64), -- 执行后生成/影响的单据 id
sResultMsg varchar(500),
sErrorMsg varchar(1000),
tCreateDate datetime,
tConfirmDate datetime,
tExecutedDate datetime,
tExpireAt datetime,
KEY idx_conv (sConversationId, sStatus)
);