feat: add bounded workflow decisions and durable result inbox
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
-- Weave内部结果保存独立快照,避免外部结果日志清理或任务后续核查改变历史输入。
|
||||
ALTER TABLE weave_inbox
|
||||
ADD COLUMN source_task_id BINARY(16) NULL COMMENT '来源Pulse任务标识;仅迁移前无法核实的历史记录允许为空',
|
||||
ADD COLUMN source_activation_id BINARY(16) NULL COMMENT '事件发生时的Weave激活标识,保留旧激活归属;仅未核实历史记录可空',
|
||||
ADD COLUMN source_revision BIGINT UNSIGNED NULL COMMENT '来源任务的状态版本,必须大于零;仅未核实历史记录可空',
|
||||
ADD COLUMN snapshot MEDIUMTEXT NULL COMMENT 'schema_version版本化结果JSON文本,保留精确数字与当时状态;仅未核实历史记录可空';
|
||||
|
||||
-- 旧记录缺少冻结结果,不能用当前任务状态倒推历史并自动推进。
|
||||
UPDATE weave_inbox SET state='QUARANTINED',lease_owner=NULL,lease_until=NULL,
|
||||
error_code='LEGACY_RESULT_UNVERIFIED',revision=revision+1,updated_at=UTC_TIMESTAMP(6)
|
||||
WHERE state<>'PROCESSED';
|
||||
|
||||
ALTER TABLE weave_inbox
|
||||
ADD UNIQUE KEY uq_weave_task_result (namespace_id,source_task_id,source_revision),
|
||||
ADD CONSTRAINT ck_weave_inbox_source CHECK (
|
||||
(state IN ('PROCESSED','QUARANTINED') AND source_task_id IS NULL AND source_activation_id IS NULL AND source_revision IS NULL AND snapshot IS NULL)
|
||||
OR (source_task_id IS NOT NULL AND source_activation_id IS NOT NULL AND source_revision IS NOT NULL AND source_revision>0 AND snapshot IS NOT NULL AND OCTET_LENGTH(snapshot)<=524288 AND JSON_VALID(snapshot))
|
||||
);
|
||||
Reference in New Issue
Block a user