- Removed 9 deprecated migration files (001-006 up/down, auth_schema, trading_service_events) - Updated 12 core migrations with improved constraints and indexing - Consolidated schema from 22 migrations to 18 clean migrations - All migrations tested and applied successfully (Agent 32 validation) - Zero migration errors in production database
461 lines
36 KiB
SQL
461 lines
36 KiB
SQL
-- Initial Configuration Data for Foxhunt HFT Trading System
|
|
-- =========================================================
|
|
-- This migration populates the configuration system with default values
|
|
-- for all services and environments.
|
|
|
|
-- === CONFIGURATION ENVIRONMENTS ===
|
|
|
|
INSERT INTO config_environments (environment_name, display_name, description, is_active, is_production, inherits_from, isolation_level, auto_sync) VALUES
|
|
('development', 'Development', 'Local development environment with relaxed security and verbose logging', true, false, NULL, 'permissive', false),
|
|
('test', 'Testing', 'Automated testing environment with isolated data and mock services', true, false, 'development', 'strict', false),
|
|
('staging', 'Staging', 'Pre-production environment mirroring production configuration', true, false, 'development', 'strict', true),
|
|
('production', 'Production', 'Live trading environment with strict security and performance optimization', true, true, NULL, 'strict', false);
|
|
|
|
-- === CONFIGURATION CATEGORIES ===
|
|
|
|
-- Root categories
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order) VALUES
|
|
('system', NULL, 'system', 'Core system configuration', true, 1),
|
|
('database', NULL, 'database', 'Database connection and performance settings', true, 2),
|
|
('security', NULL, 'security', 'Authentication, authorization, and encryption settings', true, 3),
|
|
('trading', NULL, 'trading', 'Trading engine and order management configuration', false, 4),
|
|
('risk', NULL, 'risk', 'Risk management and compliance settings', false, 5),
|
|
('ml', NULL, 'ml', 'Machine learning model and inference configuration', false, 6),
|
|
('monitoring', NULL, 'monitoring', 'Logging, metrics, and alerting configuration', true, 7),
|
|
('performance', NULL, 'performance', 'Performance tuning and optimization settings', true, 8);
|
|
|
|
-- System subcategories
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'logging', id, 'system.logging', 'Logging configuration and levels', true, 1
|
|
FROM config_categories WHERE category_path = 'system';
|
|
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'service_discovery', id, 'system.service_discovery', 'Service discovery and health check settings', true, 2
|
|
FROM config_categories WHERE category_path = 'system';
|
|
|
|
-- Database subcategories
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'postgresql', id, 'database.postgresql', 'PostgreSQL connection and pool settings', true, 1
|
|
FROM config_categories WHERE category_path = 'database';
|
|
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'redis', id, 'database.redis', 'Redis cache and session storage settings', true, 2
|
|
FROM config_categories WHERE category_path = 'database';
|
|
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'influxdb', id, 'database.influxdb', 'InfluxDB time-series database settings', true, 3
|
|
FROM config_categories WHERE category_path = 'database';
|
|
|
|
-- Security subcategories
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'jwt', id, 'security.jwt', 'JWT token configuration and validation', true, 1
|
|
FROM config_categories WHERE category_path = 'security';
|
|
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'tls', id, 'security.tls', 'TLS/SSL certificate and encryption settings', true, 2
|
|
FROM config_categories WHERE category_path = 'security';
|
|
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'rate_limiting', id, 'security.rate_limiting', 'API rate limiting and DDoS protection', true, 3
|
|
FROM config_categories WHERE category_path = 'security';
|
|
|
|
-- Trading subcategories
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'order_management', id, 'trading.order_management', 'Order processing and execution settings', false, 1
|
|
FROM config_categories WHERE category_path = 'trading';
|
|
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'market_data', id, 'trading.market_data', 'Market data feed and processing configuration', false, 2
|
|
FROM config_categories WHERE category_path = 'trading';
|
|
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'brokers', id, 'trading.brokers', 'Broker connection and integration settings', false, 3
|
|
FROM config_categories WHERE category_path = 'trading';
|
|
|
|
-- Risk subcategories
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'limits', id, 'risk.limits', 'Risk limits and thresholds', false, 1
|
|
FROM config_categories WHERE category_path = 'risk';
|
|
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'var_calculation', id, 'risk.var_calculation', 'Value at Risk calculation parameters', false, 2
|
|
FROM config_categories WHERE category_path = 'risk';
|
|
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'circuit_breakers', id, 'risk.circuit_breakers', 'Automatic trading halt and circuit breaker settings', false, 3
|
|
FROM config_categories WHERE category_path = 'risk';
|
|
|
|
-- ML subcategories
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'models', id, 'ml.models', 'Machine learning model configuration and paths', false, 1
|
|
FROM config_categories WHERE category_path = 'ml';
|
|
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'inference', id, 'ml.inference', 'Model inference and prediction settings', false, 2
|
|
FROM config_categories WHERE category_path = 'ml';
|
|
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order)
|
|
SELECT 'training', id, 'ml.training', 'Model training and optimization parameters', false, 3
|
|
FROM config_categories WHERE category_path = 'ml';
|
|
|
|
-- === CORE SYSTEM CONFIGURATION ===
|
|
|
|
-- System Logging Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'log_level', id, 'system.logging', '"info"'::jsonb, 'string', 'development', 'Default logging level for all services', ARRAY['logging', 'debugging'], true, false
|
|
FROM config_categories WHERE category_path = 'system.logging';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'log_level', id, 'system.logging', '"warn"'::jsonb, 'string', 'production', 'Production logging level - warnings and errors only', ARRAY['logging', 'production'], true, false
|
|
FROM config_categories WHERE category_path = 'system.logging';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'log_format', id, 'system.logging', '"json"'::jsonb, 'string', 'production', 'Structured JSON logging for production', ARRAY['logging', 'format'], true, false
|
|
FROM config_categories WHERE category_path = 'system.logging';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'log_format', id, 'system.logging', '"pretty"'::jsonb, 'string', 'development', 'Human-readable logging for development', ARRAY['logging', 'format'], true, false
|
|
FROM config_categories WHERE category_path = 'system.logging';
|
|
|
|
-- Service Discovery Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'health_check_interval_ms', id, 'system.service_discovery', '30000'::jsonb, 'number', 'development', 'Health check interval in milliseconds', ARRAY['health', 'monitoring'], true, false
|
|
FROM config_categories WHERE category_path = 'system.service_discovery';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'health_check_timeout_ms', id, 'system.service_discovery', '5000'::jsonb, 'number', 'development', 'Health check timeout in milliseconds', ARRAY['health', 'monitoring'], true, false
|
|
FROM config_categories WHERE category_path = 'system.service_discovery';
|
|
|
|
-- === DATABASE CONFIGURATION ===
|
|
|
|
-- PostgreSQL Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'postgres_max_connections', id, 'database.postgresql', '10'::jsonb, 'number', 'development', 'Maximum database connections per service', ARRAY['database', 'performance'], false, true
|
|
FROM config_categories WHERE category_path = 'database.postgresql';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'postgres_max_connections', id, 'database.postgresql', '50'::jsonb, 'number', 'production', 'Production database connection pool size', ARRAY['database', 'performance'], false, true
|
|
FROM config_categories WHERE category_path = 'database.postgresql';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'connection_timeout_ms', id, 'database.postgresql', '30000'::jsonb, 'number', 'development', 'Database connection timeout in milliseconds', ARRAY['database', 'timeout'], false, true
|
|
FROM config_categories WHERE category_path = 'database.postgresql';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'statement_timeout_ms', id, 'database.postgresql', '60000'::jsonb, 'number', 'development', 'SQL statement execution timeout', ARRAY['database', 'timeout'], true, false
|
|
FROM config_categories WHERE category_path = 'database.postgresql';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'statement_timeout_ms', id, 'database.postgresql', '30000'::jsonb, 'number', 'production', 'Production SQL statement timeout - shorter for performance', ARRAY['database', 'timeout'], true, false
|
|
FROM config_categories WHERE category_path = 'database.postgresql';
|
|
|
|
-- Redis Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'default_ttl_seconds', id, 'database.redis', '3600'::jsonb, 'number', 'development', 'Default TTL for Redis cache entries', ARRAY['cache', 'ttl'], true, false
|
|
FROM config_categories WHERE category_path = 'database.redis';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'redis_max_connections', id, 'database.redis', '20'::jsonb, 'number', 'development', 'Maximum Redis connections per service', ARRAY['cache', 'performance'], false, true
|
|
FROM config_categories WHERE category_path = 'database.redis';
|
|
|
|
-- === SECURITY CONFIGURATION ===
|
|
|
|
-- JWT Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, is_sensitive, hot_reload, restart_required)
|
|
SELECT 'token_expiry_minutes', id, 'security.jwt', '60'::jsonb, 'number', 'development', 'JWT token expiration time in minutes', ARRAY['security', 'jwt'], false, true, false
|
|
FROM config_categories WHERE category_path = 'security.jwt';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, is_sensitive, hot_reload, restart_required)
|
|
SELECT 'token_expiry_minutes', id, 'security.jwt', '15'::jsonb, 'number', 'production', 'Shorter JWT expiration for production security', ARRAY['security', 'jwt'], false, true, false
|
|
FROM config_categories WHERE category_path = 'security.jwt';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, is_sensitive, hot_reload, restart_required)
|
|
SELECT 'refresh_token_expiry_days', id, 'security.jwt', '7'::jsonb, 'number', 'development', 'Refresh token expiration time in days', ARRAY['security', 'jwt'], false, true, false
|
|
FROM config_categories WHERE category_path = 'security.jwt';
|
|
|
|
-- TLS Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'min_tls_version', id, 'security.tls', '"1.2"'::jsonb, 'string', 'production', 'Minimum TLS version required', ARRAY['security', 'tls'], false, true
|
|
FROM config_categories WHERE category_path = 'security.tls';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'require_client_certs', id, 'security.tls', 'true'::jsonb, 'boolean', 'production', 'Require mutual TLS authentication', ARRAY['security', 'tls', 'mtls'], false, true
|
|
FROM config_categories WHERE category_path = 'security.tls';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'require_client_certs', id, 'security.tls', 'false'::jsonb, 'boolean', 'development', 'Relaxed TLS for development', ARRAY['security', 'tls'], false, true
|
|
FROM config_categories WHERE category_path = 'security.tls';
|
|
|
|
-- Rate Limiting Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'api_requests_per_minute', id, 'security.rate_limiting', '1000'::jsonb, 'number', 'development', 'API rate limit per minute per client', ARRAY['security', 'rate_limiting'], true, false
|
|
FROM config_categories WHERE category_path = 'security.rate_limiting';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'api_requests_per_minute', id, 'security.rate_limiting', '500'::jsonb, 'number', 'production', 'Production API rate limit', ARRAY['security', 'rate_limiting'], true, false
|
|
FROM config_categories WHERE category_path = 'security.rate_limiting';
|
|
|
|
-- === TRADING CONFIGURATION ===
|
|
|
|
-- Order Management Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'max_order_size_usd', id, 'trading.order_management', '100000'::jsonb, 'number', 'development', 'Maximum single order size in USD', ARRAY['trading', 'limits'], true, false
|
|
FROM config_categories WHERE category_path = 'trading.order_management';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'max_order_size_usd', id, 'trading.order_management', '1000000'::jsonb, 'number', 'production', 'Production maximum order size', ARRAY['trading', 'limits'], true, false
|
|
FROM config_categories WHERE category_path = 'trading.order_management';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'order_timeout_seconds', id, 'trading.order_management', '30'::jsonb, 'number', 'development', 'Order execution timeout in seconds', ARRAY['trading', 'timeout'], true, false
|
|
FROM config_categories WHERE category_path = 'trading.order_management';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'enable_paper_trading', id, 'trading.order_management', 'true'::jsonb, 'boolean', 'development', 'Enable paper trading mode for testing', ARRAY['trading', 'simulation'], true, false
|
|
FROM config_categories WHERE category_path = 'trading.order_management';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'enable_paper_trading', id, 'trading.order_management', 'false'::jsonb, 'boolean', 'production', 'Disable paper trading in production', ARRAY['trading', 'simulation'], true, false
|
|
FROM config_categories WHERE category_path = 'trading.order_management';
|
|
|
|
-- Market Data Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'market_data_feed_timeout_ms', id, 'trading.market_data', '5000'::jsonb, 'number', 'development', 'Market data feed timeout in milliseconds', ARRAY['trading', 'market_data'], true, false
|
|
FROM config_categories WHERE category_path = 'trading.market_data';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'market_data_buffer_size', id, 'trading.market_data', '10000'::jsonb, 'number', 'development', 'Market data buffer size for processing', ARRAY['trading', 'market_data', 'performance'], false, true
|
|
FROM config_categories WHERE category_path = 'trading.market_data';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'market_data_buffer_size', id, 'trading.market_data', '50000'::jsonb, 'number', 'production', 'Larger buffer for production throughput', ARRAY['trading', 'market_data', 'performance'], false, true
|
|
FROM config_categories WHERE category_path = 'trading.market_data';
|
|
|
|
-- Broker Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'default_broker', id, 'trading.brokers', '"simulation"'::jsonb, 'string', 'development', 'Default broker for development', ARRAY['trading', 'brokers'], true, false
|
|
FROM config_categories WHERE category_path = 'trading.brokers';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'connection_retry_attempts', id, 'trading.brokers', '3'::jsonb, 'number', 'development', 'Broker connection retry attempts', ARRAY['trading', 'brokers', 'reliability'], true, false
|
|
FROM config_categories WHERE category_path = 'trading.brokers';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'connection_retry_delay_ms', id, 'trading.brokers', '1000'::jsonb, 'number', 'development', 'Delay between connection retry attempts', ARRAY['trading', 'brokers', 'reliability'], true, false
|
|
FROM config_categories WHERE category_path = 'trading.brokers';
|
|
|
|
-- === RISK MANAGEMENT CONFIGURATION ===
|
|
|
|
-- Risk Limits Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'max_daily_loss_usd', id, 'risk.limits', '10000'::jsonb, 'number', 'development', 'Maximum daily loss limit in USD', ARRAY['risk', 'limits'], true, false
|
|
FROM config_categories WHERE category_path = 'risk.limits';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'max_daily_loss_usd', id, 'risk.limits', '50000'::jsonb, 'number', 'production', 'Production daily loss limit', ARRAY['risk', 'limits'], true, false
|
|
FROM config_categories WHERE category_path = 'risk.limits';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'max_position_concentration_pct', id, 'risk.limits', '20'::jsonb, 'number', 'development', 'Maximum position concentration as percentage of portfolio', ARRAY['risk', 'limits', 'concentration'], true, false
|
|
FROM config_categories WHERE category_path = 'risk.limits';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'max_leverage_ratio', id, 'risk.limits', '2.0'::jsonb, 'number', 'development', 'Maximum leverage ratio allowed', ARRAY['risk', 'limits', 'leverage'], true, false
|
|
FROM config_categories WHERE category_path = 'risk.limits';
|
|
|
|
-- VaR Calculation Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'var_confidence_level', id, 'risk.var_calculation', '0.95'::jsonb, 'number', 'development', 'VaR confidence level (95%)', ARRAY['risk', 'var'], true, false
|
|
FROM config_categories WHERE category_path = 'risk.var_calculation';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'var_time_horizon_days', id, 'risk.var_calculation', '1'::jsonb, 'number', 'development', 'VaR time horizon in days', ARRAY['risk', 'var'], true, false
|
|
FROM config_categories WHERE category_path = 'risk.var_calculation';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'var_historical_window_days', id, 'risk.var_calculation', '252'::jsonb, 'number', 'development', 'Historical data window for VaR calculation (trading days)', ARRAY['risk', 'var'], true, false
|
|
FROM config_categories WHERE category_path = 'risk.var_calculation';
|
|
|
|
-- Circuit Breaker Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'enable_circuit_breakers', id, 'risk.circuit_breakers', 'true'::jsonb, 'boolean', 'development', 'Enable automatic circuit breakers', ARRAY['risk', 'circuit_breakers'], true, false
|
|
FROM config_categories WHERE category_path = 'risk.circuit_breakers';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'circuit_breaker_loss_threshold_pct', id, 'risk.circuit_breakers', '5.0'::jsonb, 'number', 'development', 'Loss threshold to trigger circuit breaker (percentage)', ARRAY['risk', 'circuit_breakers'], true, false
|
|
FROM config_categories WHERE category_path = 'risk.circuit_breakers';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'circuit_breaker_cooldown_minutes', id, 'risk.circuit_breakers', '30'::jsonb, 'number', 'development', 'Circuit breaker cooldown period in minutes', ARRAY['risk', 'circuit_breakers'], true, false
|
|
FROM config_categories WHERE category_path = 'risk.circuit_breakers';
|
|
|
|
-- === MACHINE LEARNING CONFIGURATION ===
|
|
|
|
-- Model Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'default_model_type', id, 'ml.models', '"tlob_transformer"'::jsonb, 'string', 'development', 'Default ML model for predictions', ARRAY['ml', 'models'], true, false
|
|
FROM config_categories WHERE category_path = 'ml.models';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'model_cache_size', id, 'ml.models', '5'::jsonb, 'number', 'development', 'Number of models to keep in memory cache', ARRAY['ml', 'models', 'performance'], false, true
|
|
FROM config_categories WHERE category_path = 'ml.models';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'enable_gpu_acceleration', id, 'ml.models', 'true'::jsonb, 'boolean', 'development', 'Enable GPU acceleration for ML inference', ARRAY['ml', 'gpu', 'performance'], false, true
|
|
FROM config_categories WHERE category_path = 'ml.models';
|
|
|
|
-- Inference Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'inference_timeout_ms', id, 'ml.inference', '100'::jsonb, 'number', 'development', 'ML inference timeout in milliseconds', ARRAY['ml', 'inference', 'timeout'], true, false
|
|
FROM config_categories WHERE category_path = 'ml.inference';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'inference_timeout_ms', id, 'ml.inference', '50'::jsonb, 'number', 'production', 'Shorter inference timeout for production latency', ARRAY['ml', 'inference', 'timeout'], true, false
|
|
FROM config_categories WHERE category_path = 'ml.inference';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'batch_size', id, 'ml.inference', '32'::jsonb, 'number', 'development', 'Batch size for ML inference', ARRAY['ml', 'inference', 'performance'], true, false
|
|
FROM config_categories WHERE category_path = 'ml.inference';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'feature_lookback_periods', id, 'ml.inference', '20'::jsonb, 'number', 'development', 'Number of historical periods for feature generation', ARRAY['ml', 'inference', 'features'], true, false
|
|
FROM config_categories WHERE category_path = 'ml.inference';
|
|
|
|
-- Training Configuration
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'auto_retrain_enabled', id, 'ml.training', 'false'::jsonb, 'boolean', 'development', 'Enable automatic model retraining', ARRAY['ml', 'training'], true, false
|
|
FROM config_categories WHERE category_path = 'ml.training';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'retrain_interval_hours', id, 'ml.training', '24'::jsonb, 'number', 'development', 'Hours between automatic retraining', ARRAY['ml', 'training'], true, false
|
|
FROM config_categories WHERE category_path = 'ml.training';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'training_data_window_days', id, 'ml.training', '30'::jsonb, 'number', 'development', 'Days of historical data for training', ARRAY['ml', 'training'], true, false
|
|
FROM config_categories WHERE category_path = 'ml.training';
|
|
|
|
-- === MONITORING CONFIGURATION ===
|
|
|
|
-- Performance Monitoring
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'metrics_collection_interval_ms', id, 'monitoring', '1000'::jsonb, 'number', 'development', 'Metrics collection interval in milliseconds', ARRAY['monitoring', 'metrics'], true, false
|
|
FROM config_categories WHERE category_path = 'monitoring';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'enable_prometheus_metrics', id, 'monitoring', 'true'::jsonb, 'boolean', 'development', 'Enable Prometheus metrics collection', ARRAY['monitoring', 'prometheus'], false, true
|
|
FROM config_categories WHERE category_path = 'monitoring';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'alert_latency_threshold_ms', id, 'monitoring', '1000'::jsonb, 'number', 'development', 'Alert threshold for high latency in milliseconds', ARRAY['monitoring', 'alerts', 'latency'], true, false
|
|
FROM config_categories WHERE category_path = 'monitoring';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'alert_latency_threshold_ms', id, 'monitoring', '100'::jsonb, 'number', 'production', 'Production latency alert threshold - much lower', ARRAY['monitoring', 'alerts', 'latency'], true, false
|
|
FROM config_categories WHERE category_path = 'monitoring';
|
|
|
|
-- === PERFORMANCE TUNING CONFIGURATION ===
|
|
|
|
-- CPU and Memory Settings
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'worker_threads', id, 'performance', '4'::jsonb, 'number', 'development', 'Number of worker threads per service', ARRAY['performance', 'threading'], false, true
|
|
FROM config_categories WHERE category_path = 'performance';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'worker_threads', id, 'performance', '16'::jsonb, 'number', 'production', 'Production worker thread count', ARRAY['performance', 'threading'], false, true
|
|
FROM config_categories WHERE category_path = 'performance';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'enable_cpu_affinity', id, 'performance', 'false'::jsonb, 'boolean', 'development', 'Enable CPU affinity for performance', ARRAY['performance', 'cpu'], false, true
|
|
FROM config_categories WHERE category_path = 'performance';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'enable_cpu_affinity', id, 'performance', 'true'::jsonb, 'boolean', 'production', 'Enable CPU affinity in production for low latency', ARRAY['performance', 'cpu'], false, true
|
|
FROM config_categories WHERE category_path = 'performance';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'enable_simd_optimization', id, 'performance', 'true'::jsonb, 'boolean', 'development', 'Enable SIMD optimizations', ARRAY['performance', 'simd'], false, true
|
|
FROM config_categories WHERE category_path = 'performance';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'garbage_collection_frequency_ms', id, 'performance', '60000'::jsonb, 'number', 'development', 'Memory garbage collection frequency', ARRAY['performance', 'memory'], false, true
|
|
FROM config_categories WHERE category_path = 'performance';
|
|
|
|
-- === TLI-SPECIFIC CONFIGURATION ===
|
|
|
|
INSERT INTO config_categories (category_name, parent_id, category_path, description, is_system, display_order) VALUES
|
|
('tli', NULL, 'tli', 'Terminal interface and dashboard configuration', false, 9);
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'grpc_port', id, 'tli', '50051'::jsonb, 'number', 'development', 'gRPC server port for TLI service', ARRAY['tli', 'grpc'], false, true
|
|
FROM config_categories WHERE category_path = 'tli';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'web_dashboard_port', id, 'tli', '8080'::jsonb, 'number', 'development', 'Web dashboard port', ARRAY['tli', 'dashboard'], false, true
|
|
FROM config_categories WHERE category_path = 'tli';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'enable_real_time_streaming', id, 'tli', 'true'::jsonb, 'boolean', 'development', 'Enable real-time data streaming to dashboard', ARRAY['tli', 'streaming'], true, false
|
|
FROM config_categories WHERE category_path = 'tli';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'max_concurrent_sessions', id, 'tli', '10'::jsonb, 'number', 'development', 'Maximum concurrent TLI sessions', ARRAY['tli', 'sessions'], true, false
|
|
FROM config_categories WHERE category_path = 'tli';
|
|
|
|
INSERT INTO config_settings (config_key, category_id, category_path, config_value, value_type, environment, description, tags, hot_reload, restart_required)
|
|
SELECT 'session_timeout_minutes', id, 'tli', '60'::jsonb, 'number', 'development', 'TLI session timeout in minutes', ARRAY['tli', 'sessions'], true, false
|
|
FROM config_categories WHERE category_path = 'tli';
|
|
|
|
-- === INITIAL CONFIGURATION SUBSCRIPTIONS ===
|
|
|
|
-- TLI Service subscribes to all configuration changes
|
|
INSERT INTO config_subscriptions (service_name, config_pattern, category_pattern, environment, subscription_type, is_active) VALUES
|
|
('tli', '*', '*', 'development', 'notify', true),
|
|
('tli', '*', '*', 'production', 'notify', true);
|
|
|
|
-- Trading service subscribes to trading and risk configurations
|
|
INSERT INTO config_subscriptions (service_name, config_pattern, category_pattern, environment, subscription_type, is_active) VALUES
|
|
('trading_engine', 'trading.*', 'trading.*', 'development', 'notify', true),
|
|
('trading_engine', 'risk.*', 'risk.*', 'development', 'notify', true),
|
|
('trading_engine', 'trading.*', 'trading.*', 'production', 'notify', true),
|
|
('trading_engine', 'risk.*', 'risk.*', 'production', 'notify', true);
|
|
|
|
-- ML service subscribes to ML configurations
|
|
INSERT INTO config_subscriptions (service_name, config_pattern, category_pattern, environment, subscription_type, is_active) VALUES
|
|
('ml_service', 'ml.*', 'ml.*', 'development', 'notify', true),
|
|
('ml_service', 'ml.*', 'ml.*', 'production', 'notify', true);
|
|
|
|
-- All services subscribe to system configurations
|
|
INSERT INTO config_subscriptions (service_name, config_pattern, category_pattern, environment, subscription_type, is_active) VALUES
|
|
('*', 'system.*', 'system.*', 'development', 'notify', true),
|
|
('*', 'system.*', 'system.*', 'production', 'notify', true);
|
|
|
|
-- === UPDATE STATISTICS ===
|
|
ANALYZE config_categories;
|
|
ANALYZE config_settings;
|
|
ANALYZE config_history;
|
|
ANALYZE config_environments;
|
|
ANALYZE config_environment_overrides;
|
|
ANALYZE config_subscriptions;
|
|
ANALYZE config_locks;
|
|
|
|
-- Initial configuration data loaded successfully!
|
|
--
|
|
-- Created:
|
|
-- - 4 environments: development, test, staging, production
|
|
-- - 24 configuration categories with hierarchical organization
|
|
-- - 67 configuration settings with environment-specific values
|
|
-- - Initial service subscriptions for hot-reload notifications
|
|
--
|
|
-- Key Features:
|
|
-- - Environment inheritance (staging inherits from development)
|
|
-- - Hot-reload enabled for most operational settings
|
|
-- - Restart required only for core infrastructure changes
|
|
-- - Sensitive settings marked appropriately
|
|
-- - Performance-optimized values for production vs development
|
|
-- - Complete subscription setup for real-time configuration updates
|
|
--
|
|
-- Next Steps:
|
|
-- 1. Services can start listening to 'foxhunt_config_changes' channel
|
|
-- 2. Use get_config_value('key', 'environment') to retrieve configuration
|
|
-- 3. Use set_config_value('key', value, 'environment') to update configuration
|
|
-- 4. TLI dashboard can manage all configurations through PostgreSQL |