# Пример минимальной конфигурации Cascad360 (NFR-013)
# Скопируйте этот файл в config.yml и настройте параметры

app:
  name: Cascad360
  version: 1.0.9
  setup_completed: false  # Установите true после завершения первоначальной настройки
  setup_time: null

# Настройки веб-сервера
web:
  host: 0.0.0.0
  port: 5000
  public_port: 5001
  public_api_separate: false   # true — Admin API только на port, Public на public_port (FR-121)
  public_api_enabled: true
  debug: false

# Plugin Port Host (FR-111–117); zero overhead при enabled: false
plugin_ports:
  enabled: false
  port_range_min: 8000
  port_range_max: 8999
  max_listeners: 10
  reserved_ports:
    - 5000
    - 5001
    - 5050
  auto_start_on_boot: false
  default_host: 0.0.0.0
  hook_timeout_seconds: 30

# Настройки базы данных
database:
  driver: mysql  # mysql или psql
  host: localhost
  port: 3306
  database: cascad360
  username: cascad360_user
  password: cascad360_password  # ИЗМЕНИТЕ ПАРОЛЬ!
  charset: utf8mb4

# Конфигурация БД сервисов (FR-067, опционально)
# services_database:
#   default_config_path: /config/database.json  # путь к конфигу на стороне сервиса
#   cache_ttl_seconds: 300                      # кэш конфигурации (сек), null — без кэша
#   local_config_base_path: /app/services_config  # базовая директория для чтения конфига из файла

# Настройки логирования
logging:
  level: INFO  # DEBUG, INFO, WARNING, ERROR, CRITICAL
  format: json  # json или console
  console: true
  file: app.log

# Маршрутизация: правила задаются вручную в UI или при установке модулей.
routing:
  rules: []
  static_services: {}

# Масштабируемость (NFR-002). Single-node: memory; кластер: redis (backend — 1.0.7+)
scalability:
  coordination_backend: memory  # memory | redis | consul
  heartbeat_interval: 5
  instance_timeout: 15
  max_services: 10000
  service_index_enabled: true
  redis:
    url: redis://localhost:6379/0
    key_prefix: cascad360:instances

# Модули: опциональные модули (CRM и др.) отображаются только после установки из админки.
# База URL реестра модулей (для зеркал укажите свой домен).
# app:
#   module_registry_url: https://cascad360.ru
modules:
  installed: []  # после установки модуля сюда добавляется имя, например cascad360-module-crm

# Центр обновлений / Marketplace
updates:
  registry_url: https://cascad360.ru/registry
  download_base_url: https://cascad360.ru/downloads
  channel: stable
  execution_mode: dry_run  # dry_run | agent | in_process
  use_db_store: true
  in_process_state_dir: /var/lib/cascad360/in-process-updater
  in_process_install_root: /opt/cascad360
  in_process_apply_changes: false
  in_process_request_restart: true
  in_process_download_timeout_seconds: 180.0
  agent_socket: /run/cascad360-update-agent.sock
  agent_timeout_seconds: 10.0
  agent_poll_interval_seconds: 1.0
  agent_poll_timeout_seconds: 120.0
  mirror_urls: []
  trusted_publishers: []
  trusted_signature_cert_ids: []
  require_signed_artifacts: true
  allow_insecure_sources: false
  anti_rollback: true
  rollback_requires_reason: true
  rollback_reason_min_length: 12
  rollback_requires_confirmation: true

# API Explorer 1.0.5 (FR-096–FR-109)
api_explorer:
  enabled: true
  spec_cache_ttl_sec: 60
  filter_mode: hide          # hide | mark
  public_mutating: false
  swagger_ui_path: /static/swagger/
  overlays_dir: openapi-overlays/   # в бинарной поставке; dev: docs/technical/openapi-overlays/
  default_source_filter: all
  show_source_badges: true

# Безопасность (rate limit для Public API)
security:
  mail_rate_limit:
    send_per_minute: 30
    status_per_minute: 120
    window_seconds: 60

# Остальные настройки можно добавить позже через веб-интерфейс
# или скопировав из полного config.yml
