-- 创建工作流执行环境表
-- 用于管理不同的AI服务器和执行环境
-- 支持本地ComfyUI、云端Modal、云端RunPod等多种环境

CREATE TABLE IF NOT EXISTS workflow_execution_environments (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    
    -- 基本信息
    name TEXT NOT NULL UNIQUE,             -- 环境名称，如 "本地ComfyUI", "Modal云端", "RunPod云端"
    type TEXT NOT NULL,                    -- 环境类型：local_comfyui, modal_cloud, runpod_cloud, custom
    description TEXT,                      -- 环境描述
    
    -- 连接配置
    base_url TEXT NOT NULL,                -- 服务基础URL
    api_key TEXT,                          -- API密钥（加密存储）
    connection_config_json TEXT,           -- 连接配置JSON（超时、重试等）
    
    -- 能力配置
    supported_workflow_types TEXT,         -- 支持的工作流类型，JSON数组格式
    max_concurrent_jobs INTEGER DEFAULT 1, -- 最大并发任务数
    priority INTEGER DEFAULT 0,            -- 优先级（数字越大优先级越高）
    
    -- 状态信息
    is_active BOOLEAN NOT NULL DEFAULT 1,  -- 是否启用
    is_available BOOLEAN NOT NULL DEFAULT 1, -- 是否可用
    last_health_check DATETIME,            -- 最后健康检查时间
    health_status TEXT DEFAULT 'unknown',  -- 健康状态：healthy, unhealthy, unknown
    
    -- 性能统计
    average_response_time_ms INTEGER,      -- 平均响应时间（毫秒）
    success_rate REAL DEFAULT 1.0,        -- 成功率（0.0-1.0）
    total_executions INTEGER DEFAULT 0,   -- 总执行次数
    failed_executions INTEGER DEFAULT 0,  -- 失败次数
    
    -- 资源限制
    max_memory_mb INTEGER,                 -- 最大内存限制（MB）
    max_execution_time_seconds INTEGER,    -- 最大执行时间（秒）
    
    -- 元数据
    metadata_json TEXT,                    -- 额外元数据JSON
    tags TEXT,                             -- 标签，JSON数组格式
    
    -- 时间戳
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

-- 创建索引以提高查询性能
CREATE INDEX IF NOT EXISTS idx_workflow_execution_environments_type ON workflow_execution_environments (type);
CREATE INDEX IF NOT EXISTS idx_workflow_execution_environments_is_active ON workflow_execution_environments (is_active);
CREATE INDEX IF NOT EXISTS idx_workflow_execution_environments_is_available ON workflow_execution_environments (is_available);
CREATE INDEX IF NOT EXISTS idx_workflow_execution_environments_priority ON workflow_execution_environments (priority);
CREATE INDEX IF NOT EXISTS idx_workflow_execution_environments_health_status ON workflow_execution_environments (health_status);

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