-- ============================================================================
-- SEED: Agent Configurations
-- DESCRIPTION: Configuracion inicial de Money Manager Agents por tenant
-- VERSION: 1.0.0
-- CREATED: 2026-01-10
-- NOTE: Este seed debe ejecutarse por tenant o con tenant_id especifico
-- ============================================================================

-- Funcion helper para crear configs de agentes para un tenant
CREATE OR REPLACE FUNCTION investment.seed_agent_configs(p_tenant_id UUID)
RETURNS VOID AS $$
BEGIN
    -- Atlas - Conservador
    INSERT INTO investment.agent_configs (
        tenant_id, agent_type,
        name, -- NUEVO
        min_allocation, max_allocation_per_user, max_total_allocation,
        platform_fee_rate, performance_fee_rate,
        target_return_percent, max_drawdown_percent, -- NUEVOS
        is_active, accepting_new_allocations,
        description, risk_disclosure
    ) VALUES (
        p_tenant_id,
        'ATLAS',
        'Atlas', -- NUEVO
        100.00,      -- Min $100
        5000.00,     -- Max $5,000 por usuario
        500000.00,   -- Max $500,000 total
        0.05,        -- 5% platform fee
        0.15,        -- 15% performance fee
        8.00,        -- NUEVO: 8% target return
        10.00,       -- NUEVO: 10% max drawdown
        TRUE,
        TRUE,
        'Atlas es nuestro agente conservador diseñado para preservación de capital con crecimiento estable. ' ||
        'Utiliza estrategias de bajo riesgo con drawdown máximo del 10%. Ideal para inversores que priorizan ' ||
        'la seguridad sobre altos retornos.',
        'ADVERTENCIA: El trading conlleva riesgos. Aunque Atlas utiliza estrategias conservadoras, ' ||
        'existe la posibilidad de pérdidas. Los rendimientos pasados no garantizan resultados futuros. ' ||
        'Solo invierta capital que pueda permitirse perder. Max drawdown esperado: 10%.'
    )
    ON CONFLICT (tenant_id, agent_type) DO UPDATE SET
        name = EXCLUDED.name,
        min_allocation = EXCLUDED.min_allocation,
        max_allocation_per_user = EXCLUDED.max_allocation_per_user,
        target_return_percent = EXCLUDED.target_return_percent,
        max_drawdown_percent = EXCLUDED.max_drawdown_percent,
        description = EXCLUDED.description,
        updated_at = NOW();

    -- Orion - Moderado
    INSERT INTO investment.agent_configs (
        tenant_id, agent_type,
        name,
        min_allocation, max_allocation_per_user, max_total_allocation,
        platform_fee_rate, performance_fee_rate,
        target_return_percent, max_drawdown_percent,
        is_active, accepting_new_allocations,
        description, risk_disclosure
    ) VALUES (
        p_tenant_id,
        'ORION',
        'Orion',
        250.00,      -- Min $250
        10000.00,    -- Max $10,000 por usuario
        1000000.00,  -- Max $1,000,000 total
        0.08,        -- 8% platform fee
        0.20,        -- 20% performance fee
        15.00,       -- 15% target return
        20.00,       -- 20% max drawdown
        TRUE,
        TRUE,
        'Orion es nuestro agente de riesgo moderado que balancea preservación de capital con oportunidades ' ||
        'de crecimiento. Combina múltiples estrategias ML para optimizar el ratio riesgo/retorno. ' ||
        'Recomendado para traders con experiencia intermedia.',
        'ADVERTENCIA: Orion opera con riesgo moderado. Drawdown máximo esperado: 20%. ' ||
        'Los resultados pueden variar significativamente según condiciones de mercado. ' ||
        'Se recomienda un horizonte de inversión de al menos 3 meses.'
    )
    ON CONFLICT (tenant_id, agent_type) DO UPDATE SET
        name = EXCLUDED.name,
        min_allocation = EXCLUDED.min_allocation,
        max_allocation_per_user = EXCLUDED.max_allocation_per_user,
        target_return_percent = EXCLUDED.target_return_percent,
        max_drawdown_percent = EXCLUDED.max_drawdown_percent,
        description = EXCLUDED.description,
        updated_at = NOW();

    -- Nova - Agresivo
    INSERT INTO investment.agent_configs (
        tenant_id, agent_type,
        name,
        min_allocation, max_allocation_per_user, max_total_allocation,
        platform_fee_rate, performance_fee_rate,
        target_return_percent, max_drawdown_percent,
        is_active, accepting_new_allocations,
        description, risk_disclosure
    ) VALUES (
        p_tenant_id,
        'NOVA',
        'Nova',
        500.00,      -- Min $500
        25000.00,    -- Max $25,000 por usuario
        2000000.00,  -- Max $2,000,000 total
        0.10,        -- 10% platform fee
        0.25,        -- 25% performance fee
        25.00,       -- 25% target return
        35.00,       -- 35% max drawdown
        TRUE,
        TRUE,
        'Nova es nuestro agente de alto rendimiento diseñado para traders experimentados que buscan ' ||
        'maximizar retornos. Utiliza estrategias agresivas incluyendo Strategy Ensemble y posiciones ' ||
        'de mayor tamaño. Solo para inversores que comprenden y aceptan alto riesgo.',
        'ALTO RIESGO: Nova opera con estrategias agresivas. Drawdown máximo esperado: 35%. ' ||
        'Este agente puede experimentar pérdidas significativas en cortos periodos. ' ||
        'SOLO PARA INVERSORES EXPERIMENTADOS que pueden tolerar alta volatilidad. ' ||
        'No invierta más del 10% de su capital total en este agente.'
    )
    ON CONFLICT (tenant_id, agent_type) DO UPDATE SET
        name = EXCLUDED.name,
        min_allocation = EXCLUDED.min_allocation,
        max_allocation_per_user = EXCLUDED.max_allocation_per_user,
        target_return_percent = EXCLUDED.target_return_percent,
        max_drawdown_percent = EXCLUDED.max_drawdown_percent,
        description = EXCLUDED.description,
        updated_at = NOW();
END;
$$ LANGUAGE plpgsql;

-- Comentario sobre uso
COMMENT ON FUNCTION investment.seed_agent_configs IS
'Ejecutar con: SELECT investment.seed_agent_configs(''your-tenant-uuid'');';

-- Para desarrollo/demo, crear config para tenant demo si existe
-- DO $$
-- DECLARE
--     v_demo_tenant_id UUID := '00000000-0000-0000-0000-000000000001';
-- BEGIN
--     PERFORM investment.seed_agent_configs(v_demo_tenant_id);
-- END $$;
