2025-09-27 11:18:13 +02:00
|
|
|
apiVersion: v1
|
|
|
|
|
kind: ConfigMap
|
|
|
|
|
metadata:
|
|
|
|
|
name: bakery-config
|
2025-10-15 16:12:49 +02:00
|
|
|
namespace: bakery-ia
|
2025-09-27 11:18:13 +02:00
|
|
|
labels:
|
|
|
|
|
app.kubernetes.io/name: bakery-ia
|
|
|
|
|
app.kubernetes.io/component: config
|
|
|
|
|
data:
|
2025-09-27 12:10:43 +02:00
|
|
|
# ENVIRONMENT & BUILD SETTINGS
|
|
|
|
|
# ================================================================
|
2025-10-15 16:12:49 +02:00
|
|
|
ENVIRONMENT: "development"
|
2025-09-27 12:10:43 +02:00
|
|
|
DEBUG: "false"
|
2025-09-27 11:18:13 +02:00
|
|
|
LOG_LEVEL: "INFO"
|
2025-09-30 08:12:45 +02:00
|
|
|
|
2026-01-08 12:58:00 +01:00
|
|
|
# Observability Settings - SigNoz enabled
|
2026-01-09 23:14:12 +01:00
|
|
|
# Note: Detailed OTEL configuration is in the OBSERVABILITY section below
|
2026-01-08 12:58:00 +01:00
|
|
|
ENABLE_TRACING: "true"
|
|
|
|
|
ENABLE_METRICS: "true"
|
|
|
|
|
ENABLE_LOGS: "true"
|
2026-01-09 23:14:12 +01:00
|
|
|
ENABLE_OTEL_METRICS: "true"
|
|
|
|
|
ENABLE_SYSTEM_METRICS: "true"
|
|
|
|
|
OTEL_LOGS_EXPORTER: "otlp"
|
2025-10-21 19:50:07 +02:00
|
|
|
|
2025-09-30 08:12:45 +02:00
|
|
|
# Database initialization settings
|
2025-10-01 12:17:59 +02:00
|
|
|
# IMPORTANT: Services NEVER run migrations - they only verify DB is ready
|
|
|
|
|
# Migrations are handled by dedicated migration jobs
|
|
|
|
|
# DB_FORCE_RECREATE only affects migration jobs, not services
|
2025-09-30 08:12:45 +02:00
|
|
|
DB_FORCE_RECREATE: "false"
|
2025-09-27 12:10:43 +02:00
|
|
|
BUILD_DATE: "2024-01-20T10:00:00Z"
|
|
|
|
|
VCS_REF: "latest"
|
|
|
|
|
IMAGE_TAG: "latest"
|
2026-01-19 11:55:17 +01:00
|
|
|
DOMAIN: "bakewise.ai"
|
2025-09-27 12:10:43 +02:00
|
|
|
AUTO_RELOAD: "false"
|
2025-09-27 11:18:13 +02:00
|
|
|
PROFILING_ENABLED: "false"
|
|
|
|
|
MOCK_EXTERNAL_APIS: "false"
|
|
|
|
|
TESTING: "false"
|
|
|
|
|
|
2025-09-27 12:10:43 +02:00
|
|
|
# ================================================================
|
|
|
|
|
# SERVICE DISCOVERY (KUBERNETES INTERNAL)
|
|
|
|
|
# ================================================================
|
2025-09-27 11:18:13 +02:00
|
|
|
REDIS_HOST: "redis-service"
|
|
|
|
|
REDIS_PORT: "6379"
|
|
|
|
|
RABBITMQ_HOST: "rabbitmq-service"
|
|
|
|
|
RABBITMQ_PORT: "5672"
|
|
|
|
|
RABBITMQ_MANAGEMENT_PORT: "15672"
|
|
|
|
|
RABBITMQ_VHOST: "/"
|
|
|
|
|
|
2025-09-27 12:10:43 +02:00
|
|
|
# Database Hosts (Kubernetes Services)
|
2025-09-27 11:18:13 +02:00
|
|
|
AUTH_DB_HOST: "auth-db-service"
|
|
|
|
|
TENANT_DB_HOST: "tenant-db-service"
|
|
|
|
|
TRAINING_DB_HOST: "training-db-service"
|
|
|
|
|
FORECASTING_DB_HOST: "forecasting-db-service"
|
|
|
|
|
SALES_DB_HOST: "sales-db-service"
|
|
|
|
|
EXTERNAL_DB_HOST: "external-db-service"
|
|
|
|
|
NOTIFICATION_DB_HOST: "notification-db-service"
|
|
|
|
|
INVENTORY_DB_HOST: "inventory-db-service"
|
|
|
|
|
RECIPES_DB_HOST: "recipes-db-service"
|
|
|
|
|
SUPPLIERS_DB_HOST: "suppliers-db-service"
|
|
|
|
|
POS_DB_HOST: "pos-db-service"
|
|
|
|
|
ORDERS_DB_HOST: "orders-db-service"
|
|
|
|
|
PRODUCTION_DB_HOST: "production-db-service"
|
2025-10-30 21:08:07 +01:00
|
|
|
PROCUREMENT_DB_HOST: "procurement-db-service"
|
|
|
|
|
ORCHESTRATOR_DB_HOST: "orchestrator-db-service"
|
2025-09-27 11:18:13 +02:00
|
|
|
ALERT_PROCESSOR_DB_HOST: "alert-processor-db-service"
|
2025-11-05 13:34:56 +01:00
|
|
|
AI_INSIGHTS_DB_HOST: "ai-insights-db-service"
|
2025-11-30 09:12:40 +01:00
|
|
|
DISTRIBUTION_DB_HOST: "distribution-db-service"
|
2026-01-17 22:42:40 +01:00
|
|
|
DEMO_SESSION_DB_HOST: "demo-session-db-service"
|
|
|
|
|
|
|
|
|
|
# MinIO Configuration
|
|
|
|
|
MINIO_ENDPOINT: "minio.bakery-ia.svc.cluster.local:9000"
|
|
|
|
|
MINIO_USE_SSL: "true"
|
|
|
|
|
MINIO_MODEL_BUCKET: "training-models"
|
|
|
|
|
MINIO_CONSOLE_PORT: "9001"
|
|
|
|
|
MINIO_API_PORT: "9000"
|
|
|
|
|
MINIO_REGION: "us-east-1"
|
|
|
|
|
MINIO_MODEL_LIFECYCLE_DAYS: "90"
|
|
|
|
|
MINIO_CACHE_TTL_SECONDS: "3600"
|
2025-09-27 11:18:13 +02:00
|
|
|
|
2025-09-27 12:10:43 +02:00
|
|
|
# Database Configuration
|
2025-09-27 11:18:13 +02:00
|
|
|
DB_PORT: "5432"
|
|
|
|
|
AUTH_DB_NAME: "auth_db"
|
|
|
|
|
TENANT_DB_NAME: "tenant_db"
|
|
|
|
|
TRAINING_DB_NAME: "training_db"
|
|
|
|
|
FORECASTING_DB_NAME: "forecasting_db"
|
|
|
|
|
SALES_DB_NAME: "sales_db"
|
|
|
|
|
EXTERNAL_DB_NAME: "external_db"
|
|
|
|
|
NOTIFICATION_DB_NAME: "notification_db"
|
|
|
|
|
INVENTORY_DB_NAME: "inventory_db"
|
|
|
|
|
RECIPES_DB_NAME: "recipes_db"
|
|
|
|
|
SUPPLIERS_DB_NAME: "suppliers_db"
|
|
|
|
|
POS_DB_NAME: "pos_db"
|
|
|
|
|
ORDERS_DB_NAME: "orders_db"
|
|
|
|
|
PRODUCTION_DB_NAME: "production_db"
|
2025-10-30 21:08:07 +01:00
|
|
|
PROCUREMENT_DB_NAME: "procurement_db"
|
|
|
|
|
ORCHESTRATOR_DB_NAME: "orchestrator_db"
|
2025-09-27 11:18:13 +02:00
|
|
|
ALERT_PROCESSOR_DB_NAME: "alert_processor_db"
|
2025-11-05 13:34:56 +01:00
|
|
|
AI_INSIGHTS_DB_NAME: "ai_insights_db"
|
2025-11-30 09:12:40 +01:00
|
|
|
DISTRIBUTION_DB_NAME: "distribution_db"
|
2025-09-27 12:10:43 +02:00
|
|
|
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
|
2025-09-27 11:18:13 +02:00
|
|
|
|
2025-09-27 12:10:43 +02:00
|
|
|
# ================================================================
|
|
|
|
|
# SERVICE URLS (KUBERNETES INTERNAL)
|
|
|
|
|
# ================================================================
|
|
|
|
|
GATEWAY_URL: "http://gateway-service:8000"
|
2025-09-27 11:18:13 +02:00
|
|
|
AUTH_SERVICE_URL: "http://auth-service:8000"
|
|
|
|
|
TENANT_SERVICE_URL: "http://tenant-service:8000"
|
|
|
|
|
TRAINING_SERVICE_URL: "http://training-service:8000"
|
|
|
|
|
FORECASTING_SERVICE_URL: "http://forecasting-service:8000"
|
|
|
|
|
SALES_SERVICE_URL: "http://sales-service:8000"
|
|
|
|
|
EXTERNAL_SERVICE_URL: "http://external-service:8000"
|
|
|
|
|
NOTIFICATION_SERVICE_URL: "http://notification-service:8000"
|
|
|
|
|
INVENTORY_SERVICE_URL: "http://inventory-service:8000"
|
|
|
|
|
RECIPES_SERVICE_URL: "http://recipes-service:8000"
|
|
|
|
|
SUPPLIERS_SERVICE_URL: "http://suppliers-service:8000"
|
|
|
|
|
POS_SERVICE_URL: "http://pos-service:8000"
|
|
|
|
|
ORDERS_SERVICE_URL: "http://orders-service:8000"
|
|
|
|
|
PRODUCTION_SERVICE_URL: "http://production-service:8000"
|
2025-12-05 20:07:01 +01:00
|
|
|
ALERT_PROCESSOR_SERVICE_URL: "http://alert-processor:8000"
|
2025-10-31 11:54:19 +01:00
|
|
|
ORCHESTRATOR_SERVICE_URL: "http://orchestrator-service:8000"
|
2025-11-05 13:34:56 +01:00
|
|
|
AI_INSIGHTS_SERVICE_URL: "http://ai-insights-service:8000"
|
2025-11-30 09:12:40 +01:00
|
|
|
DISTRIBUTION_SERVICE_URL: "http://distribution-service:8000"
|
2025-09-27 11:18:13 +02:00
|
|
|
|
2025-09-27 12:10:43 +02:00
|
|
|
# ================================================================
|
|
|
|
|
# AUTHENTICATION & SECURITY SETTINGS
|
|
|
|
|
# ================================================================
|
|
|
|
|
JWT_ALGORITHM: "HS256"
|
2025-09-29 07:54:25 +02:00
|
|
|
JWT_ACCESS_TOKEN_EXPIRE_MINUTES: "240"
|
2025-09-27 12:10:43 +02:00
|
|
|
JWT_REFRESH_TOKEN_EXPIRE_DAYS: "7"
|
|
|
|
|
ENABLE_SERVICE_AUTH: "false"
|
|
|
|
|
PASSWORD_MIN_LENGTH: "8"
|
|
|
|
|
PASSWORD_REQUIRE_UPPERCASE: "true"
|
|
|
|
|
PASSWORD_REQUIRE_LOWERCASE: "true"
|
|
|
|
|
PASSWORD_REQUIRE_NUMBERS: "true"
|
|
|
|
|
PASSWORD_REQUIRE_SYMBOLS: "false"
|
|
|
|
|
BCRYPT_ROUNDS: "12"
|
|
|
|
|
MAX_LOGIN_ATTEMPTS: "5"
|
|
|
|
|
LOCKOUT_DURATION_MINUTES: "30"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# CORS & API CONFIGURATION
|
|
|
|
|
# ================================================================
|
2025-10-01 16:25:53 +02:00
|
|
|
CORS_ORIGINS: "https://bakery.yourdomain.com,http://frontend-service:3000"
|
2025-09-27 12:10:43 +02:00
|
|
|
CORS_ALLOW_CREDENTIALS: "true"
|
|
|
|
|
RATE_LIMIT_ENABLED: "true"
|
|
|
|
|
RATE_LIMIT_REQUESTS: "100"
|
|
|
|
|
RATE_LIMIT_WINDOW: "60"
|
|
|
|
|
RATE_LIMIT_BURST: "10"
|
|
|
|
|
API_DOCS_ENABLED: "true"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# HTTP CLIENT SETTINGS
|
|
|
|
|
# ================================================================
|
|
|
|
|
HTTP_TIMEOUT: "30000"
|
|
|
|
|
HTTP_RETRIES: "3"
|
|
|
|
|
HTTP_RETRY_DELAY: "1.0"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# EXTERNAL API CONFIGURATION
|
|
|
|
|
# ================================================================
|
|
|
|
|
AEMET_BASE_URL: "https://opendata.aemet.es/opendata"
|
2025-10-09 14:11:02 +02:00
|
|
|
AEMET_TIMEOUT: "90"
|
|
|
|
|
AEMET_RETRY_ATTEMPTS: "5"
|
2025-09-27 12:10:43 +02:00
|
|
|
MADRID_OPENDATA_BASE_URL: "https://datos.madrid.es"
|
|
|
|
|
MADRID_OPENDATA_TIMEOUT: "30"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# PAYMENT CONFIGURATION
|
|
|
|
|
# ================================================================
|
2025-10-01 16:25:53 +02:00
|
|
|
STRIPE_PUBLISHABLE_KEY: "pk_live_your_stripe_publishable_key_here"
|
2025-09-27 12:10:43 +02:00
|
|
|
SQUARE_APPLICATION_ID: "your-square-application-id"
|
2025-10-01 16:25:53 +02:00
|
|
|
SQUARE_ENVIRONMENT: "production"
|
|
|
|
|
TOAST_ENVIRONMENT: "production"
|
|
|
|
|
LIGHTSPEED_ENVIRONMENT: "production"
|
2025-09-27 12:10:43 +02:00
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# EMAIL CONFIGURATION
|
|
|
|
|
# ================================================================
|
2026-01-19 13:57:50 +01:00
|
|
|
SMTP_HOST: "mailu-postfix.bakery-ia.svc.cluster.local"
|
2025-09-27 12:10:43 +02:00
|
|
|
SMTP_PORT: "587"
|
|
|
|
|
SMTP_TLS: "true"
|
|
|
|
|
SMTP_SSL: "false"
|
2026-01-19 11:55:17 +01:00
|
|
|
DEFAULT_FROM_EMAIL: "noreply@bakewise.ai"
|
2025-09-27 12:10:43 +02:00
|
|
|
DEFAULT_FROM_NAME: "Bakery-Forecast"
|
2026-01-19 11:55:17 +01:00
|
|
|
EMAIL_FROM_ADDRESS: "alerts@bakewise.ai"
|
2025-09-27 12:10:43 +02:00
|
|
|
EMAIL_FROM_NAME: "Bakery Alert System"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# WHATSAPP CONFIGURATION
|
|
|
|
|
# ================================================================
|
|
|
|
|
WHATSAPP_BASE_URL: "https://api.twilio.com"
|
|
|
|
|
WHATSAPP_FROM_NUMBER: "whatsapp:+14155238886"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# ALERT SYSTEM CONFIGURATION
|
|
|
|
|
# ================================================================
|
|
|
|
|
ALERT_PROCESSOR_INSTANCES: "2"
|
|
|
|
|
ALERT_PROCESSOR_MAX_MEMORY: "512M"
|
|
|
|
|
ALERT_BATCH_SIZE: "10"
|
|
|
|
|
ALERT_PROCESSING_TIMEOUT: "30"
|
|
|
|
|
EMAIL_ENABLED: "true"
|
|
|
|
|
WHATSAPP_ENABLED: "true"
|
|
|
|
|
SSE_ENABLED: "true"
|
|
|
|
|
PUSH_NOTIFICATIONS_ENABLED: "false"
|
|
|
|
|
ALERT_DEDUPLICATION_WINDOW_MINUTES: "15"
|
|
|
|
|
RECOMMENDATION_DEDUPLICATION_WINDOW_MINUTES: "60"
|
|
|
|
|
|
2025-11-27 15:52:40 +01:00
|
|
|
# Alert Enrichment Configuration (Unified Alert Service)
|
|
|
|
|
# Priority scoring weights (must sum to 1.0)
|
|
|
|
|
BUSINESS_IMPACT_WEIGHT: "0.4"
|
|
|
|
|
URGENCY_WEIGHT: "0.3"
|
|
|
|
|
USER_AGENCY_WEIGHT: "0.2"
|
|
|
|
|
CONFIDENCE_WEIGHT: "0.1"
|
|
|
|
|
|
|
|
|
|
# Priority thresholds (0-100 scale)
|
|
|
|
|
CRITICAL_THRESHOLD: "90"
|
|
|
|
|
IMPORTANT_THRESHOLD: "70"
|
|
|
|
|
STANDARD_THRESHOLD: "50"
|
|
|
|
|
|
|
|
|
|
# Timing intelligence
|
|
|
|
|
BUSINESS_HOURS_START: "6"
|
|
|
|
|
BUSINESS_HOURS_END: "22"
|
|
|
|
|
PEAK_HOURS_START: "7"
|
|
|
|
|
PEAK_HOURS_END: "11"
|
|
|
|
|
PEAK_HOURS_EVENING_START: "17"
|
|
|
|
|
PEAK_HOURS_EVENING_END: "19"
|
|
|
|
|
|
|
|
|
|
# Alert grouping
|
|
|
|
|
GROUPING_TIME_WINDOW_MINUTES: "15"
|
|
|
|
|
MAX_ALERTS_PER_GROUP: "5"
|
|
|
|
|
|
|
|
|
|
# Email digest
|
|
|
|
|
DIGEST_SEND_TIME: "18:00"
|
|
|
|
|
|
2025-09-27 12:10:43 +02:00
|
|
|
# ================================================================
|
|
|
|
|
# CHECK FREQUENCIES (CRON EXPRESSIONS)
|
|
|
|
|
# ================================================================
|
|
|
|
|
STOCK_CHECK_FREQUENCY: "*/5"
|
|
|
|
|
EXPIRY_CHECK_FREQUENCY: "*/2"
|
|
|
|
|
TEMPERATURE_CHECK_FREQUENCY: "*/2"
|
|
|
|
|
PRODUCTION_DELAY_CHECK_FREQUENCY: "*/5"
|
|
|
|
|
CAPACITY_CHECK_FREQUENCY: "*/10"
|
|
|
|
|
INVENTORY_OPTIMIZATION_FREQUENCY: "*/30"
|
|
|
|
|
EFFICIENCY_RECOMMENDATIONS_FREQUENCY: "*/30"
|
|
|
|
|
ENERGY_RECOMMENDATIONS_FREQUENCY: "0"
|
|
|
|
|
WASTE_REDUCTION_FREQUENCY: "0"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# MODEL STORAGE & TRAINING
|
|
|
|
|
# ================================================================
|
2026-01-17 22:42:40 +01:00
|
|
|
# Model storage is handled by MinIO (see MinIO Configuration section)
|
|
|
|
|
MODEL_STORAGE_BACKEND: "minio"
|
2025-09-27 12:10:43 +02:00
|
|
|
MODEL_BACKUP_ENABLED: "true"
|
|
|
|
|
MODEL_VERSIONING_ENABLED: "true"
|
|
|
|
|
MAX_TRAINING_TIME_MINUTES: "30"
|
|
|
|
|
MAX_CONCURRENT_TRAINING_JOBS: "3"
|
|
|
|
|
MIN_TRAINING_DATA_DAYS: "30"
|
|
|
|
|
TRAINING_BATCH_SIZE: "1000"
|
2025-09-27 11:18:13 +02:00
|
|
|
|
2025-09-27 12:10:43 +02:00
|
|
|
# ================================================================
|
|
|
|
|
# OPTIMIZATION SETTINGS
|
|
|
|
|
# ================================================================
|
|
|
|
|
ENABLE_HYPERPARAMETER_OPTIMIZATION: "true"
|
|
|
|
|
ENABLE_PRODUCT_SPECIFIC_PARAMS: "true"
|
|
|
|
|
ENABLE_DYNAMIC_PARAM_SELECTION: "true"
|
|
|
|
|
OPTUNA_N_TRIALS: "50"
|
|
|
|
|
OPTUNA_CV_FOLDS: "3"
|
|
|
|
|
OPTUNA_TIMEOUT_MINUTES: "10"
|
|
|
|
|
HIGH_VOLUME_THRESHOLD: "1.0"
|
|
|
|
|
INTERMITTENT_THRESHOLD: "0.6"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# PROPHET PARAMETERS
|
|
|
|
|
# ================================================================
|
|
|
|
|
PROPHET_SEASONALITY_MODE: "additive"
|
|
|
|
|
PROPHET_CHANGEPOINT_PRIOR_SCALE: "0.05"
|
|
|
|
|
PROPHET_SEASONALITY_PRIOR_SCALE: "10.0"
|
|
|
|
|
PROPHET_HOLIDAYS_PRIOR_SCALE: "10.0"
|
|
|
|
|
PROPHET_DAILY_SEASONALITY: "true"
|
|
|
|
|
PROPHET_WEEKLY_SEASONALITY: "true"
|
|
|
|
|
PROPHET_YEARLY_SEASONALITY: "true"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# BUSINESS CONFIGURATION
|
|
|
|
|
# ================================================================
|
|
|
|
|
SERVICE_VERSION: "1.0.0"
|
|
|
|
|
TIMEZONE: "Europe/Madrid"
|
|
|
|
|
LOCALE: "es_ES.UTF-8"
|
|
|
|
|
CURRENCY: "EUR"
|
|
|
|
|
BUSINESS_HOUR_START: "7"
|
|
|
|
|
BUSINESS_HOUR_END: "20"
|
|
|
|
|
ENABLE_SPANISH_HOLIDAYS: "true"
|
|
|
|
|
ENABLE_MADRID_HOLIDAYS: "true"
|
|
|
|
|
SCHOOL_CALENDAR_ENABLED: "true"
|
|
|
|
|
WEATHER_IMPACT_ENABLED: "true"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# MONITORING & LOGGING
|
|
|
|
|
# ================================================================
|
|
|
|
|
LOG_FORMAT: "json"
|
|
|
|
|
LOG_FILE_ENABLED: "false"
|
|
|
|
|
LOG_FILE_PATH: "/app/logs"
|
|
|
|
|
LOG_ROTATION_SIZE: "100MB"
|
|
|
|
|
LOG_RETENTION_DAYS: "30"
|
|
|
|
|
HEALTH_CHECK_TIMEOUT: "30"
|
|
|
|
|
HEALTH_CHECK_INTERVAL: "30"
|
2026-01-08 12:58:00 +01:00
|
|
|
|
|
|
|
|
# Monitoring Configuration - SigNoz
|
2026-01-09 06:57:18 +01:00
|
|
|
SIGNOZ_ROOT_URL: "https://monitoring.bakery-ia.local"
|
2025-09-27 12:10:43 +02:00
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# DATA COLLECTION SETTINGS
|
|
|
|
|
# ================================================================
|
|
|
|
|
WEATHER_COLLECTION_INTERVAL_HOURS: "1"
|
|
|
|
|
TRAFFIC_COLLECTION_INTERVAL_HOURS: "1"
|
|
|
|
|
EVENTS_COLLECTION_INTERVAL_HOURS: "6"
|
|
|
|
|
DATA_VALIDATION_ENABLED: "true"
|
|
|
|
|
OUTLIER_DETECTION_ENABLED: "true"
|
|
|
|
|
DATA_COMPLETENESS_THRESHOLD: "0.8"
|
|
|
|
|
DEFAULT_LATITUDE: "40.4168"
|
|
|
|
|
DEFAULT_LONGITUDE: "-3.7038"
|
|
|
|
|
LOCATION_RADIUS_KM: "50.0"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# NOTIFICATION SETTINGS
|
|
|
|
|
# ================================================================
|
|
|
|
|
ENABLE_EMAIL_NOTIFICATIONS: "true"
|
|
|
|
|
ENABLE_WHATSAPP_NOTIFICATIONS: "true"
|
|
|
|
|
ENABLE_PUSH_NOTIFICATIONS: "false"
|
|
|
|
|
MAX_RETRY_ATTEMPTS: "3"
|
|
|
|
|
RETRY_DELAY_SECONDS: "60"
|
|
|
|
|
NOTIFICATION_BATCH_SIZE: "100"
|
|
|
|
|
EMAIL_RATE_LIMIT_PER_HOUR: "1000"
|
|
|
|
|
WHATSAPP_RATE_LIMIT_PER_HOUR: "100"
|
|
|
|
|
DEFAULT_LANGUAGE: "es"
|
|
|
|
|
DATE_FORMAT: "%d/%m/%Y"
|
|
|
|
|
TIME_FORMAT: "%H:%M"
|
|
|
|
|
EMAIL_TEMPLATES_PATH: "/app/templates/email"
|
|
|
|
|
WHATSAPP_TEMPLATES_PATH: "/app/templates/whatsapp"
|
|
|
|
|
IMMEDIATE_DELIVERY: "true"
|
|
|
|
|
SCHEDULED_DELIVERY_ENABLED: "true"
|
|
|
|
|
DELIVERY_TRACKING_ENABLED: "true"
|
|
|
|
|
OPEN_TRACKING_ENABLED: "true"
|
|
|
|
|
CLICK_TRACKING_ENABLED: "true"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# FORECASTING SETTINGS
|
|
|
|
|
# ================================================================
|
|
|
|
|
MAX_FORECAST_DAYS: "30"
|
|
|
|
|
MIN_HISTORICAL_DAYS: "60"
|
|
|
|
|
PREDICTION_CONFIDENCE_THRESHOLD: "0.8"
|
|
|
|
|
PREDICTION_CACHE_TTL_HOURS: "6"
|
|
|
|
|
FORECAST_BATCH_SIZE: "100"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# BUSINESS RULES
|
|
|
|
|
# ================================================================
|
|
|
|
|
WEEKEND_ADJUSTMENT_FACTOR: "0.8"
|
|
|
|
|
HOLIDAY_ADJUSTMENT_FACTOR: "0.5"
|
|
|
|
|
TEMPERATURE_THRESHOLD_COLD: "10.0"
|
|
|
|
|
TEMPERATURE_THRESHOLD_HOT: "30.0"
|
|
|
|
|
RAIN_IMPACT_FACTOR: "0.7"
|
|
|
|
|
HIGH_DEMAND_THRESHOLD: "1.5"
|
|
|
|
|
LOW_DEMAND_THRESHOLD: "0.5"
|
|
|
|
|
STOCKOUT_RISK_THRESHOLD: "0.9"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# CACHE SETTINGS
|
|
|
|
|
# ================================================================
|
2025-10-19 19:22:37 +02:00
|
|
|
REDIS_TLS_ENABLED: "true"
|
2025-09-27 12:10:43 +02:00
|
|
|
REDIS_MAX_MEMORY: "512mb"
|
|
|
|
|
REDIS_MAX_CONNECTIONS: "50"
|
|
|
|
|
REDIS_DB: "1"
|
|
|
|
|
WEATHER_CACHE_TTL_HOURS: "1"
|
|
|
|
|
TRAFFIC_CACHE_TTL_HOURS: "1"
|
|
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
|
# FRONTEND CONFIGURATION
|
|
|
|
|
# ================================================================
|
|
|
|
|
VITE_APP_TITLE: "PanIA Dashboard"
|
|
|
|
|
VITE_APP_VERSION: "1.0.0"
|
2025-09-27 17:19:00 +02:00
|
|
|
VITE_API_URL: "/api"
|
2025-09-27 12:10:43 +02:00
|
|
|
VITE_ENVIRONMENT: "production"
|
|
|
|
|
|
2025-10-18 16:03:23 +02:00
|
|
|
# Pilot Program Configuration
|
|
|
|
|
VITE_PILOT_MODE_ENABLED: "true"
|
|
|
|
|
VITE_PILOT_COUPON_CODE: "PILOT2025"
|
|
|
|
|
VITE_PILOT_TRIAL_MONTHS: "3"
|
2026-01-13 22:22:38 +01:00
|
|
|
VITE_STRIPE_PUBLISHABLE_KEY: "pk_test_51QuxKyIzCdnBmAVTGM8fvXYkItrBUILz6lHYwhAva6ZAH1HRi0e8zDRgZ4X3faN0zEABp5RHjCVBmMJL3aKXbaC200fFrSNnPl"
|
2025-10-18 16:03:23 +02:00
|
|
|
|
2025-09-27 12:10:43 +02:00
|
|
|
# ================================================================
|
2025-10-15 16:12:49 +02:00
|
|
|
# LOCATION SETTINGS (Nominatim Geocoding)
|
2025-09-27 12:10:43 +02:00
|
|
|
# ================================================================
|
2025-10-15 16:12:49 +02:00
|
|
|
NOMINATIM_SERVICE_URL: "http://nominatim-service:8080"
|
2025-09-27 12:10:43 +02:00
|
|
|
NOMINATIM_PBF_URL: "http://download.geofabrik.de/europe/spain-latest.osm.pbf"
|
|
|
|
|
NOMINATIM_MEMORY_LIMIT: "8G"
|
2025-10-09 14:11:02 +02:00
|
|
|
NOMINATIM_CPU_LIMIT: "4"
|
|
|
|
|
|
2025-10-15 16:12:49 +02:00
|
|
|
# ================================================================
|
2026-01-08 12:58:00 +01:00
|
|
|
# OBSERVABILITY - SigNoz (Unified Monitoring)
|
2025-10-15 16:12:49 +02:00
|
|
|
# ================================================================
|
2026-01-09 23:14:12 +01:00
|
|
|
# OpenTelemetry Configuration - Direct to SigNoz OTel Collector
|
|
|
|
|
#
|
|
|
|
|
# ENDPOINT CONFIGURATION:
|
|
|
|
|
# - OTEL_EXPORTER_OTLP_ENDPOINT: Base gRPC endpoint (host:port format, NO http:// prefix)
|
|
|
|
|
# Used by traces and metrics (gRPC) by default
|
|
|
|
|
# Format: "host:4317" (gRPC port)
|
|
|
|
|
#
|
|
|
|
|
# PROTOCOL USAGE:
|
|
|
|
|
# - Traces: gRPC (port 4317) - High performance, low latency
|
|
|
|
|
# - Metrics: gRPC (port 4317) - Efficient batch export
|
|
|
|
|
# - Logs: HTTP (port 4318) - Required for OTLP log protocol
|
|
|
|
|
#
|
|
|
|
|
# The monitoring library automatically handles:
|
|
|
|
|
# - Converting gRPC endpoint (4317) to HTTP endpoint (4318) for logs
|
|
|
|
|
# - Adding proper paths (/v1/traces, /v1/metrics, /v1/logs)
|
|
|
|
|
# - Protocol prefixes (http:// for HTTP, none for gRPC)
|
|
|
|
|
#
|
|
|
|
|
# Base OTLP endpoint (gRPC format - used by traces and metrics)
|
2026-01-09 11:18:20 +01:00
|
|
|
OTEL_EXPORTER_OTLP_ENDPOINT: "signoz-otel-collector.bakery-ia.svc.cluster.local:4317"
|
2026-01-09 23:14:12 +01:00
|
|
|
|
|
|
|
|
# Protocol configuration (gRPC is recommended for better performance)
|
2026-01-08 12:58:00 +01:00
|
|
|
OTEL_EXPORTER_OTLP_PROTOCOL: "grpc"
|
2026-01-09 23:14:12 +01:00
|
|
|
|
|
|
|
|
# Optional: Signal-specific endpoint overrides (if different from base)
|
|
|
|
|
# OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: "signoz-otel-collector.bakery-ia.svc.cluster.local:4317"
|
|
|
|
|
# OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: "signoz-otel-collector.bakery-ia.svc.cluster.local:4317"
|
|
|
|
|
# OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: "http://signoz-otel-collector.bakery-ia.svc.cluster.local:4318"
|
|
|
|
|
|
2026-01-17 22:42:40 +01:00
|
|
|
# Gateway telemetry proxy configuration
|
|
|
|
|
SIGNOZ_OTEL_COLLECTOR_URL: "http://signoz-otel-collector.bakery-ia.svc.cluster.local:4318"
|
|
|
|
|
|
2026-01-09 23:14:12 +01:00
|
|
|
# Optional: Protocol overrides per signal
|
|
|
|
|
# OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: "grpc"
|
|
|
|
|
# OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: "grpc"
|
|
|
|
|
# Note: Logs always use HTTP protocol regardless of this setting
|
|
|
|
|
|
|
|
|
|
# Resource attributes (added to all telemetry signals)
|
2025-10-15 16:12:49 +02:00
|
|
|
OTEL_SERVICE_NAME: "bakery-ia"
|
2026-01-08 12:58:00 +01:00
|
|
|
OTEL_RESOURCE_ATTRIBUTES: "deployment.environment=development"
|
|
|
|
|
|
2026-01-09 23:14:12 +01:00
|
|
|
# SigNoz service endpoints (for UI and API access)
|
2026-01-09 07:26:11 +01:00
|
|
|
SIGNOZ_ENDPOINT: "http://signoz.bakery-ia.svc.cluster.local:8080"
|
2026-01-09 06:57:18 +01:00
|
|
|
SIGNOZ_FRONTEND_URL: "https://monitoring.bakery-ia.local"
|
2025-10-15 16:12:49 +02:00
|
|
|
|
2026-01-19 11:55:17 +01:00
|
|
|
# ================================================================
|
|
|
|
|
# DISTRIBUTION & ROUTING OPTIMIZATION SETTINGS
|
|
|
|
|
# ================================================================
|
|
|
|
|
VRP_TIME_LIMIT_SECONDS: "30"
|
|
|
|
|
VRP_DEFAULT_VEHICLE_CAPACITY_KG: "1000"
|
|
|
|
|
VRP_AVERAGE_SPEED_KMH: "30"
|
|
|
|
|
|
2025-10-30 21:08:07 +01:00
|
|
|
# ================================================================
|
2026-01-08 12:58:00 +01:00
|
|
|
# REPLENISHMENT PLANNING SETTINGS
|
2025-10-30 21:08:07 +01:00
|
|
|
# ================================================================
|
|
|
|
|
REPLENISHMENT_PROJECTION_HORIZON_DAYS: "7"
|
|
|
|
|
REPLENISHMENT_SERVICE_LEVEL: "0.95"
|
|
|
|
|
REPLENISHMENT_BUFFER_DAYS: "1"
|
|
|
|
|
|
|
|
|
|
# Safety Stock
|
|
|
|
|
SAFETY_STOCK_SERVICE_LEVEL: "0.95"
|
|
|
|
|
SAFETY_STOCK_METHOD: "statistical"
|
|
|
|
|
|
|
|
|
|
# MOQ
|
|
|
|
|
MOQ_CONSOLIDATION_WINDOW_DAYS: "7"
|
|
|
|
|
MOQ_ALLOW_EARLY_ORDERING: "true"
|
|
|
|
|
|
|
|
|
|
# Supplier Selection
|
|
|
|
|
SUPPLIER_PRICE_WEIGHT: "0.40"
|
|
|
|
|
SUPPLIER_LEAD_TIME_WEIGHT: "0.20"
|
|
|
|
|
SUPPLIER_QUALITY_WEIGHT: "0.20"
|
|
|
|
|
SUPPLIER_RELIABILITY_WEIGHT: "0.20"
|
|
|
|
|
SUPPLIER_DIVERSIFICATION_THRESHOLD: "1000"
|
|
|
|
|
SUPPLIER_MAX_SINGLE_PERCENTAGE: "0.70"
|
|
|
|
|
|
|
|
|
|
# Circuit Breakers
|
|
|
|
|
CIRCUIT_BREAKER_FAILURE_THRESHOLD: "5"
|
|
|
|
|
CIRCUIT_BREAKER_TIMEOUT_DURATION: "60"
|
|
|
|
|
CIRCUIT_BREAKER_SUCCESS_THRESHOLD: "2"
|
|
|
|
|
|
|
|
|
|
# Saga
|
|
|
|
|
SAGA_TIMEOUT_SECONDS: "600"
|
|
|
|
|
SAGA_ENABLE_COMPENSATION: "true"
|
|
|
|
|
|
2025-10-09 14:11:02 +02:00
|
|
|
# ================================================================
|
|
|
|
|
# EXTERNAL DATA SERVICE V2 SETTINGS
|
|
|
|
|
# ================================================================
|
|
|
|
|
EXTERNAL_ENABLED_CITIES: "madrid"
|
|
|
|
|
EXTERNAL_RETENTION_MONTHS: "6" # Reduced from 24 to avoid memory issues during init
|
|
|
|
|
EXTERNAL_CACHE_TTL_DAYS: "7"
|
2025-10-30 21:08:07 +01:00
|
|
|
EXTERNAL_REDIS_URL: "rediss://redis-service:6379/0?ssl_cert_reqs=none"
|