Skip to content

Конфигурация - Overview

В MARV конфигурация разделена на несколько логических блоков и файлов:

  • Основная конфигурация сервера - config.{MODE}.yml (блоки app, infrastructure, domain, observability).
  • Конфигурация ботов - bots.{MODE}.json (Telegram и др.)
  • Конфигурация продуктов/платежей - products.json

Где хранится и как читается:

  • Определение режима: используется gin.Mode():
    • debug (по умолчанию) - config.debug.yml, bots.debug.json
    • release - config.release.yml, bots.release.json
    • test - config.test.yml, bots.test.json
  • Имена файлов формируются в коде (infrastructure/config/factory.go), чтение происходит из рабочего каталога процесса.
  • Продукты всегда из products.json.
  • Валидация: основная конфигурация валидируется по схеме infrastructure/config/koanf/schemas/config.schema.json; для products - products.schema.json; для bots - bots.schema.json.

Важно:

  • Боты НЕ указываются в config.{MODE}.yml - для них отдельный файл bots.{MODE}.json.
  • Продукты также выделены в отдельный файл products.json (единый для режимов, если не решено иначе).
  • Любое значение из config.{MODE}.yml можно переопределить переменной окружения с префиксом MARV__.
    • Используйте двойное подчёркивание __ для обозначения вложенности (MARV__APP__SERVER__PORT=9090app.server.port).
    • Значения передаются как строки — Koanf приведёт их к нужному типу при unmarshal. Для time.Duration указывайте валидный формат (300s, 15m, 24h).

См. подробности в следующих подразделах.