-- 创建工作流执行记录表
-- 用于记录每次AI生成的历史，包括输入数据、输出结果、执行状态等
-- 支持完整的执行追踪和错误诊断

CREATE TABLE IF NOT EXISTS workflow_execution_records (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    
    -- 工作流信息
    workflow_template_id INTEGER NOT NULL, -- 关联的工作流模板ID
    workflow_name TEXT NOT NULL,           -- 工作流名称（冗余存储，便于查询）
    workflow_version TEXT NOT NULL,        -- 使用的工作流版本
    
    -- 执行环境信息
    execution_environment_id INTEGER,      -- 执行环境ID（可选）
    execution_environment_name TEXT,       -- 执行环境名称
    
    -- 执行数据
    input_data_json TEXT NOT NULL,         -- 输入数据JSON
    output_data_json TEXT,                 -- 输出结果JSON
    
    -- 执行状态
    status TEXT NOT NULL DEFAULT 'pending', -- 执行状态：pending, running, completed, failed, cancelled
    progress INTEGER DEFAULT 0,            -- 执行进度（0-100）
    
    -- ComfyUI相关
    comfyui_prompt_id TEXT,                -- ComfyUI任务ID
    comfyui_workflow_name TEXT,            -- ComfyUI工作流名称
    
    -- 时间信息
    started_at DATETIME,                   -- 开始执行时间
    completed_at DATETIME,                 -- 完成时间
    duration_seconds INTEGER,              -- 执行耗时（秒）
    
    -- 错误信息
    error_message TEXT,                    -- 错误消息
    error_details_json TEXT,               -- 详细错误信息JSON
    
    -- 用户信息
    user_id TEXT,                          -- 用户ID（如果有用户系统）
    session_id TEXT,                       -- 会话ID
    
    -- 元数据
    metadata_json TEXT,                    -- 额外元数据JSON
    tags TEXT,                             -- 标签，JSON数组格式
    
    -- 时间戳
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    
    -- 外键约束
    FOREIGN KEY (workflow_template_id) REFERENCES workflow_templates (id) ON DELETE CASCADE
);

-- 创建索引以提高查询性能
CREATE INDEX IF NOT EXISTS idx_workflow_execution_records_template_id ON workflow_execution_records (workflow_template_id);
CREATE INDEX IF NOT EXISTS idx_workflow_execution_records_status ON workflow_execution_records (status);
CREATE INDEX IF NOT EXISTS idx_workflow_execution_records_comfyui_prompt_id ON workflow_execution_records (comfyui_prompt_id);
CREATE INDEX IF NOT EXISTS idx_workflow_execution_records_created_at ON workflow_execution_records (created_at);
CREATE INDEX IF NOT EXISTS idx_workflow_execution_records_user_id ON workflow_execution_records (user_id);
CREATE INDEX IF NOT EXISTS idx_workflow_execution_records_session_id ON workflow_execution_records (session_id);

-- 创建触发器自动更新 updated_at 字段
CREATE TRIGGER IF NOT EXISTS update_workflow_execution_records_updated_at
    AFTER UPDATE ON workflow_execution_records
    FOR EACH ROW
BEGIN
    UPDATE workflow_execution_records SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
END;
