-- Independent diagnostic tables in the Lastleg schema. No business fact/queue writes. -- Run only after explicit TEST SQL approval. Not executed by service startup. CREATE TABLE ll_selfop_quantity_diagnostic_session ( diagnostic_session_id VARCHAR(128) NOT NULL COMMENT '固定有界数量诊断会话标识', configuration_hash CHAR(64) NOT NULL COMMENT '冻结授权范围的SHA256摘要', source_account VARCHAR(64) NOT NULL COMMENT '来源账号别名,不保存凭据', collection_session_id VARCHAR(128) NULL COMMENT '被观察的来源采集会话标识', root_task_id VARCHAR(128) NULL COMMENT '被观察的账号采集根任务标识', starts_at VARCHAR(40) NOT NULL COMMENT '诊断开始时刻,ISO8601 UTC字符串', expires_at VARCHAR(40) NOT NULL COMMENT '诊断截止时刻,首个LIST观测后最多4小时且授权后最多10小时,ISO8601 UTC字符串', accepted_orders INT NOT NULL DEFAULT 0 COMMENT '已接收完整配对订单数,跨重启累计', accepted_sku_rows INT NOT NULL DEFAULT 0 COMMENT '两侧已保留SKU行数,跨重启累计', accepted_bytes BIGINT NOT NULL DEFAULT 0 COMMENT '已持久化白名单规范JSON的UTF8字节数', stop_reason VARCHAR(64) NULL COMMENT '诊断终止原因,空值表示尚未终止', active_slot INT NULL COMMENT '当前授权占位,终态释放;旧证据不自动授权', state_json LONGTEXT NULL COMMENT '新授权的持久生命周期;NULL仅表示未参与此协议的历史证据', UNIQUE KEY uq_qdiag_active (source_account, active_slot), CONSTRAINT chk_qdiag_active CHECK (active_slot IS NULL OR active_slot = 1), PRIMARY KEY (diagnostic_session_id), CONSTRAINT chk_selfop_qdiag_limits CHECK (accepted_orders BETWEEN 0 AND 100 AND accepted_sku_rows BETWEEN 0 AND 2000 AND accepted_bytes BETWEEN 0 AND 2097152) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='独立数量对照诊断会话,重启不重置限额'; CREATE TABLE ll_selfop_quantity_diagnostic_order ( diagnostic_session_id VARCHAR(128) NOT NULL COMMENT '所属固定诊断会话标识', order_key_hash CHAR(64) NOT NULL COMMENT '账号、仓库、货主、出库单业务键的SHA256摘要', source_account VARCHAR(64) NOT NULL COMMENT '来源账号别名', warehouse_code VARCHAR(64) NOT NULL COMMENT '来源仓库编码', owner_code VARCHAR(128) NOT NULL COMMENT '来源货主编码', order_no VARCHAR(128) NOT NULL COMMENT '来源出库单号', payload_hash CHAR(64) NOT NULL COMMENT '白名单规范载荷SHA256摘要,用于幂等校验', comparison VARCHAR(40) NOT NULL COMMENT 'SKU集合与三类数量比较结果', sku_rows INT NOT NULL COMMENT '本单两侧较大的SKU行数;两侧累计额度由会话约束', payload_bytes INT NOT NULL COMMENT '本单白名单规范JSON的UTF8字节数', evidence_json JSON NOT NULL COMMENT '类型化列表与详情观测及SKU三量证据,不含原始响应或收件信息', received_at VARCHAR(40) NOT NULL COMMENT '接收时刻,ISO8601 UTC字符串', PRIMARY KEY (diagnostic_session_id, order_key_hash), CONSTRAINT fk_selfop_qdiag_session FOREIGN KEY (diagnostic_session_id) REFERENCES ll_selfop_quantity_diagnostic_session(diagnostic_session_id), CONSTRAINT chk_selfop_qdiag_order_limits CHECK (sku_rows BETWEEN 1 AND 200 AND payload_bytes BETWEEN 1 AND 262144) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='独立配对订单数量诊断证据,不参与销量发布'; CREATE TABLE ll_selfop_quantity_diagnostic_pending ( diagnostic_session_id VARCHAR(128) NOT NULL, order_key_hash CHAR(64) NOT NULL, warehouse_code VARCHAR(64) NOT NULL, owner_code VARCHAR(128) NOT NULL, order_no VARCHAR(128) NOT NULL, evidence_json LONGTEXT NOT NULL, PRIMARY KEY(diagnostic_session_id,order_key_hash), FOREIGN KEY(diagnostic_session_id) REFERENCES ll_selfop_quantity_diagnostic_session(diagnostic_session_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='首次LIST白名单证据;配对后同事务移至最终证据表';