Files
bakery-ia/.env.sample

422 lines
11 KiB
Plaintext
Raw Normal View History

2025-07-19 21:44:52 +02:00
# ================================================================
# UPDATED .env.example FILE
# .env.example
# ================================================================
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# ENVIRONMENT CONFIGURATION
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# Environment: development, staging, production, testing
ENVIRONMENT=development
DEBUG=true
LOG_LEVEL=INFO
SERVICE_VERSION=1.0.0
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# DATABASE CONFIGURATION
# Each service has its own dedicated database
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# Auth Service Database
AUTH_DATABASE_URL=postgresql+asyncpg://auth_user:auth_pass123@auth-db:5432/auth_db
2025-07-19 17:49:03 +02:00
2025-07-19 21:44:52 +02:00
# Training Service Database
TRAINING_DATABASE_URL=postgresql+asyncpg://training_user:training_pass123@training-db:5432/training_db
# Forecasting Service Database
FORECASTING_DATABASE_URL=postgresql+asyncpg://forecasting_user:forecasting_pass123@forecasting-db:5432/forecasting_db
# Data Service Database
DATA_DATABASE_URL=postgresql+asyncpg://data_user:data_pass123@data-db:5432/data_db
# Tenant Service Database
TENANT_DATABASE_URL=postgresql+asyncpg://tenant_user:tenant_pass123@tenant-db:5432/tenant_db
# Notification Service Database
NOTIFICATION_DATABASE_URL=postgresql+asyncpg://notification_user:notification_pass123@notification-db:5432/notification_db
# Database Connection Pool Settings
DB_POOL_SIZE=10
DB_MAX_OVERFLOW=20
DB_POOL_TIMEOUT=30
DB_POOL_RECYCLE=3600
DB_ECHO=false
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# REDIS CONFIGURATION
# Each service uses a different Redis database
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
REDIS_URL=redis://redis:6379
REDIS_MAX_CONNECTIONS=50
2025-07-19 17:49:03 +02:00
2025-07-19 21:44:52 +02:00
# Redis Database Assignments:
# 0 - Auth Service
# 1 - Training Service
# 2 - Forecasting Service
# 3 - Data Service
# 4 - Tenant Service
# 5 - Notification Service
# 6 - Gateway Service
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# RABBITMQ CONFIGURATION
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
RABBITMQ_URL=amqp://bakery:forecast123@rabbitmq:5672/
RABBITMQ_EXCHANGE=bakery_events
RABBITMQ_QUEUE_PREFIX=bakery
RABBITMQ_RETRY_ATTEMPTS=3
RABBITMQ_RETRY_DELAY=5
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# AUTHENTICATION & SECURITY
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# JWT Configuration (CHANGE IN PRODUCTION!)
JWT_SECRET_KEY=your-super-secret-jwt-key-change-in-production-very-long-and-secure
JWT_ALGORITHM=HS256
JWT_ACCESS_TOKEN_EXPIRE_MINUTES=30
JWT_REFRESH_TOKEN_EXPIRE_DAYS=7
# Service-to-Service Authentication
SERVICE_API_KEY=service-api-key-change-in-production
ENABLE_SERVICE_AUTH=false
2025-07-19 17:49:03 +02:00
2025-07-19 21:44:52 +02:00
# Password Requirements
PASSWORD_MIN_LENGTH=8
PASSWORD_REQUIRE_UPPERCASE=true
PASSWORD_REQUIRE_LOWERCASE=true
PASSWORD_REQUIRE_NUMBERS=true
PASSWORD_REQUIRE_SYMBOLS=false
# Security Settings
BCRYPT_ROUNDS=12
MAX_LOGIN_ATTEMPTS=5
LOCKOUT_DURATION_MINUTES=30
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# CORS & API CONFIGURATION
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
CORS_ORIGINS=http://localhost:3000,http://localhost:3001,http://127.0.0.1:3000
CORS_ALLOW_CREDENTIALS=true
# Rate Limiting
RATE_LIMIT_ENABLED=true
RATE_LIMIT_REQUESTS=100
RATE_LIMIT_WINDOW=60
RATE_LIMIT_BURST=10
# API Documentation
API_DOCS_ENABLED=true
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# SERVICE URLS
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
GATEWAY_URL=http://gateway:8000
AUTH_SERVICE_URL=http://auth-service:8000
TRAINING_SERVICE_URL=http://training-service:8000
FORECASTING_SERVICE_URL=http://forecasting-service:8000
DATA_SERVICE_URL=http://data-service:8000
TENANT_SERVICE_URL=http://tenant-service:8000
NOTIFICATION_SERVICE_URL=http://notification-service:8000
# HTTP Client Settings
HTTP_TIMEOUT=30
HTTP_RETRIES=3
HTTP_RETRY_DELAY=1.0
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# EXTERNAL APIS & INTEGRATIONS
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# Spanish Weather Service (AEMET)
AEMET_API_KEY=your-aemet-api-key-here
AEMET_TIMEOUT=30
AEMET_RETRY_ATTEMPTS=3
# Madrid Open Data Platform
MADRID_OPENDATA_API_KEY=your-madrid-opendata-key-here
MADRID_OPENDATA_TIMEOUT=30
# Email Configuration (Gmail example)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-email-app-password
SMTP_TLS=true
SMTP_SSL=false
DEFAULT_FROM_EMAIL=noreply@bakeryforecast.es
DEFAULT_FROM_NAME=Bakery Forecast
# WhatsApp API (Twilio example)
WHATSAPP_API_KEY=your-whatsapp-api-key-here
WHATSAPP_BASE_URL=https://api.twilio.com
WHATSAPP_FROM_NUMBER=whatsapp:+14155238886
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# ML & AI CONFIGURATION
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# Model Storage
2025-07-19 17:49:03 +02:00
MODEL_STORAGE_PATH=/app/models
2025-07-19 21:44:52 +02:00
MODEL_STORAGE_BACKEND=local
MODEL_BACKUP_ENABLED=true
MODEL_VERSIONING_ENABLED=true
# Training Configuration
2025-07-19 17:49:03 +02:00
MAX_TRAINING_TIME_MINUTES=30
2025-07-19 21:44:52 +02:00
MAX_CONCURRENT_TRAINING_JOBS=3
2025-07-19 17:49:03 +02:00
MIN_TRAINING_DATA_DAYS=30
2025-07-19 21:44:52 +02:00
TRAINING_BATCH_SIZE=1000
# Prophet Configuration
2025-07-19 17:49:03 +02:00
PROPHET_SEASONALITY_MODE=additive
2025-07-19 21:44:52 +02:00
PROPHET_CHANGEPOINT_PRIOR_SCALE=0.05
PROPHET_SEASONALITY_PRIOR_SCALE=10.0
PROPHET_HOLIDAYS_PRIOR_SCALE=10.0
2025-07-19 17:49:03 +02:00
2025-07-19 21:44:52 +02:00
# Prediction Caching
2025-07-19 17:49:03 +02:00
PREDICTION_CACHE_TTL_HOURS=6
2025-07-19 21:44:52 +02:00
WEATHER_CACHE_TTL_HOURS=1
TRAFFIC_CACHE_TTL_HOURS=1
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# BUSINESS CONFIGURATION
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# Forecasting Limits
MAX_FORECAST_DAYS=30
MIN_HISTORICAL_DAYS=60
PREDICTION_CONFIDENCE_THRESHOLD=0.8
2025-07-19 17:49:03 +02:00
2025-07-19 21:44:52 +02:00
# Spanish Business Context
TIMEZONE=Europe/Madrid
LOCALE=es_ES.UTF-8
CURRENCY=EUR
BUSINESS_HOUR_START=7
BUSINESS_HOUR_END=20
2025-07-19 17:49:03 +02:00
2025-07-19 21:44:52 +02:00
# Spanish Holidays & Seasonal Adjustments
ENABLE_SPANISH_HOLIDAYS=true
ENABLE_MADRID_HOLIDAYS=true
SCHOOL_CALENDAR_ENABLED=true
# Weather Impact Modeling
WEATHER_IMPACT_ENABLED=true
TEMPERATURE_THRESHOLD_COLD=10.0
TEMPERATURE_THRESHOLD_HOT=30.0
RAIN_IMPACT_FACTOR=0.7
# Business Adjustments
WEEKEND_ADJUSTMENT_FACTOR=0.8
HOLIDAY_ADJUSTMENT_FACTOR=0.5
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# TENANT & SUBSCRIPTION CONFIGURATION
2025-07-19 17:49:03 +02:00
# ================================================================
2025-07-19 21:44:52 +02:00
# Default Settings
DEFAULT_PLAN=basic
TRIAL_PERIOD_DAYS=14
2025-07-19 17:49:03 +02:00
2025-07-19 21:44:52 +02:00
# Plan Limits
BASIC_PLAN_LOCATIONS=1
BASIC_PLAN_PREDICTIONS_PER_DAY=100
BASIC_PLAN_DATA_RETENTION_DAYS=90
PREMIUM_PLAN_LOCATIONS=5
PREMIUM_PLAN_PREDICTIONS_PER_DAY=1000
PREMIUM_PLAN_DATA_RETENTION_DAYS=365
ENTERPRISE_PLAN_LOCATIONS=50
ENTERPRISE_PLAN_PREDICTIONS_PER_DAY=10000
ENTERPRISE_PLAN_DATA_RETENTION_DAYS=1095
# Billing (disabled by default)
BILLING_ENABLED=false
BILLING_CURRENCY=EUR
BILLING_CYCLE_DAYS=30
SPANISH_TAX_RATE=0.21
# Resource Limits
MAX_API_CALLS_PER_MINUTE=100
MAX_STORAGE_MB=1024
MAX_CONCURRENT_REQUESTS=10
# ================================================================
# MONITORING & OBSERVABILITY
# ================================================================
# Logging Configuration
LOG_FORMAT=json
LOG_FILE_ENABLED=false
LOG_FILE_PATH=/app/logs
LOG_ROTATION_SIZE=100MB
LOG_RETENTION_DAYS=30
# Metrics & Monitoring
PROMETHEUS_ENABLED=true
PROMETHEUS_PORT=9090
# Tracing (disabled by default)
JAEGER_ENABLED=false
JAEGER_AGENT_HOST=localhost
JAEGER_AGENT_PORT=6831
# Health Checks
HEALTH_CHECK_TIMEOUT=30
HEALTH_CHECK_INTERVAL=30
# ================================================================
# DATA RETENTION & CLEANUP
# ================================================================
2025-07-19 17:49:03 +02:00
DATA_RETENTION_DAYS=365
2025-07-19 21:44:52 +02:00
LOG_RETENTION_DAYS=90
METRIC_RETENTION_DAYS=90
TEMP_FILE_CLEANUP_HOURS=24
# Service-specific Data Retention
AUTH_DATA_RETENTION_DAYS=365
RAW_DATA_RETENTION_DAYS=90
PROCESSED_DATA_RETENTION_DAYS=365
# ================================================================
# DEVELOPMENT & TESTING
# ================================================================
# Development Features
AUTO_RELOAD=false
PROFILING_ENABLED=false
MOCK_EXTERNAL_APIS=false
# Testing Configuration
TESTING=false
TEST_DATABASE_URL=postgresql+asyncpg://test_user:test_pass@test-db:5432/test_db
# Data Collection Intervals
WEATHER_COLLECTION_INTERVAL_HOURS=1
TRAFFIC_COLLECTION_INTERVAL_HOURS=1
EVENTS_COLLECTION_INTERVAL_HOURS=6
# Data Quality
DATA_VALIDATION_ENABLED=true
OUTLIER_DETECTION_ENABLED=true
DATA_COMPLETENESS_THRESHOLD=0.8
# Geolocation (Madrid, Spain)
DEFAULT_LATITUDE=40.4168
DEFAULT_LONGITUDE=-3.7038
LOCATION_RADIUS_KM=50.0
# ================================================================
# NOTIFICATION CONFIGURATION
# ================================================================
# Notification Types
ENABLE_EMAIL_NOTIFICATIONS=true
ENABLE_WHATSAPP_NOTIFICATIONS=true
ENABLE_PUSH_NOTIFICATIONS=false
# Notification Queuing
MAX_RETRY_ATTEMPTS=3
RETRY_DELAY_SECONDS=60
NOTIFICATION_BATCH_SIZE=100
# Rate Limiting
EMAIL_RATE_LIMIT_PER_HOUR=1000
WHATSAPP_RATE_LIMIT_PER_HOUR=100
# Localization
DEFAULT_LANGUAGE=es
DATE_FORMAT=%d/%m/%Y
TIME_FORMAT=%H:%M
# Templates
EMAIL_TEMPLATES_PATH=/app/templates/email
WHATSAPP_TEMPLATES_PATH=/app/templates/whatsapp
# Delivery & Analytics
IMMEDIATE_DELIVERY=true
SCHEDULED_DELIVERY_ENABLED=true
DELIVERY_TRACKING_ENABLED=true
OPEN_TRACKING_ENABLED=true
CLICK_TRACKING_ENABLED=true
# ================================================================
# COMPLIANCE & GDPR
# ================================================================
# GDPR Compliance
GDPR_COMPLIANCE_ENABLED=true
CONSENT_REQUIRED=true
DATA_EXPORT_ENABLED=true
DATA_DELETION_ENABLED=true
PRIVACY_POLICY_URL=/privacy
# Email Verification
EMAIL_VERIFICATION_REQUIRED=true
EMAIL_VERIFICATION_EXPIRE_HOURS=24
# Account Security
ACCOUNT_LOCKOUT_ENABLED=true
PASSWORD_HISTORY_COUNT=5
SESSION_TIMEOUT_MINUTES=60
CONCURRENT_SESSIONS_LIMIT=3
# ================================================================
# PERFORMANCE & OPTIMIZATION
# ================================================================
# Caching
REALTIME_FORECASTING_ENABLED=true
FORECAST_UPDATE_INTERVAL_HOURS=6
# Batch Processing
BATCH_PROCESSING_ENABLED=true
BATCH_SIZE=1000
PARALLEL_PROCESSING_WORKERS=4
FORECAST_BATCH_SIZE=100
# Circuit Breaker (Gateway)
CIRCUIT_BREAKER_ENABLED=true
CIRCUIT_BREAKER_FAILURE_THRESHOLD=5
CIRCUIT_BREAKER_RECOVERY_TIMEOUT=60
# Load Balancing (Gateway)
ENABLE_LOAD_BALANCING=true
LOAD_BALANCER_ALGORITHM=round_robin
# Request Limits
MAX_REQUEST_SIZE=10485760
REQUEST_TIMEOUT=30
# ================================================================
# BUSINESS INTELLIGENCE & ALERTS
# ================================================================
# Alert Thresholds
HIGH_DEMAND_THRESHOLD=1.5
LOW_DEMAND_THRESHOLD=0.5
STOCKOUT_RISK_THRESHOLD=0.9
# Model Validation
CROSS_VALIDATION_ENABLED=true
VALIDATION_SPLIT_RATIO=0.2
MIN_MODEL_ACCURACY=0.7
# Data Processing
DATA_PREPROCESSING_ENABLED=true
SEASONAL_DECOMPOSITION_ENABLED=true
# Distributed Training (Future scaling)
DISTRIBUTED_TRAINING_ENABLED=false
TRAINING_WORKER_COUNT=1
# Support & Contact
SUPPORT_EMAIL=soporte@bakeryforecast.es
INVOICE_LANGUAGE=es