-- M007 AgentBus -> SuperAgent 自动分发：outbox 运行表，只记录 AI 调用过程，不创建业务订单或任务。
CREATE TABLE platform_superagent_dispatch_run (
    id BIGINT NOT NULL COMMENT 'SuperAgent 自动分发运行 ID',
    hotel_id VARCHAR(64) NOT NULL COMMENT '酒店或业务上下文 ID',
    source_message_id BIGINT NOT NULL COMMENT '关联的内部 SourceMessage Inbox ID',
    source_provider VARCHAR(32) NOT NULL COMMENT '来源 provider，例如 AGENTBUS',
    source_channel VARCHAR(32) NOT NULL COMMENT '来源 channel，例如 OUTLOOK 或 EMAIL',
    external_message_id VARCHAR(256) NULL COMMENT '外部邮件消息 ID，对应 SourceMessage external_message_id',
    external_conversation_id VARCHAR(256) NULL COMMENT '外部邮件会话 ID，对应 SourceMessage external_conversation_id',
    dispatch_source VARCHAR(64) NOT NULL COMMENT '分发来源代码，第一版使用 AGENTBUS_REALTIME',
    idempotency_key VARCHAR(128) NOT NULL COMMENT '发送给 SuperAgent 的稳定幂等键',
    request_id VARCHAR(128) NOT NULL COMMENT '写入 X-Request-ID 的调用关联 ID',
    dispatch_status VARCHAR(32) NOT NULL COMMENT '分发状态：PENDING、RUNNING、SUCCEEDED、RETRYABLE_FAILED、FAILED、IGNORED',
    attempt_count INT NOT NULL DEFAULT 0 COMMENT '已尝试次数，worker 抢占时递增',
    max_attempts INT NOT NULL DEFAULT 3 COMMENT '最大尝试次数',
    next_attempt_at DATETIME(6) NULL COMMENT '下次可处理 UTC 时间；终态可为空',
    locked_until DATETIME(6) NULL COMMENT 'worker 抢占锁过期 UTC 时间',
    superagent_session_id VARCHAR(128) NULL COMMENT 'SuperAgent Open API session ID',
    superagent_run_id VARCHAR(128) NULL COMMENT 'SuperAgent run ID',
    superagent_run_uri VARCHAR(1024) NULL COMMENT 'SuperAgent run 查询 URI 或路径',
    last_event_id VARCHAR(128) NULL COMMENT '最后完整处理的 SSE event id，用于 Last-Event-ID 恢复',
    superagent_raw_answer LONGTEXT NULL COMMENT 'SuperAgent 最终原始回答',
    superagent_parsed_json LONGTEXT NULL COMMENT '从最终回答解析出的 JSON，无法解析时为空',
    superagent_trace_json LONGTEXT NULL COMMENT 'SuperAgent 公开 trace 摘要 JSON，不保存 Secret 或工具敏感入参',
    safe_error_code VARCHAR(64) NULL COMMENT '安全错误代码',
    safe_error_summary VARCHAR(512) NULL COMMENT '安全错误摘要，不包含正文、HTML、附件 URL 或 Secret',
    created_at DATETIME(6) NOT NULL COMMENT '记录创建 UTC 时间',
    updated_at DATETIME(6) NOT NULL COMMENT '记录更新 UTC 时间',
    PRIMARY KEY (id),
    UNIQUE KEY uk_superagent_dispatch_source_message (source_message_id, dispatch_source),
    KEY idx_superagent_dispatch_status_next (dispatch_status, next_attempt_at),
    KEY idx_superagent_dispatch_lock (dispatch_status, locked_until),
    KEY idx_superagent_dispatch_external_message (hotel_id, external_message_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
COMMENT='SuperAgent 自动分发 outbox 运行表，记录 SourceMessage 入库后异步调用 SuperAgent 的状态和结果';
