Конфигурация - 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
- debug (по умолчанию) -
- Имена файлов формируются в коде (
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=9090→app.server.port). - Значения передаются как строки — Koanf приведёт их к нужному типу при unmarshal. Для
time.Durationуказывайте валидный формат (300s,15m,24h).
- Используйте двойное подчёркивание
См. подробности в следующих подразделах.
