# Образец конфигурации healthlog.
#
# Реальный config.toml не коммитится (в нём токены), права 0600.
# Все поля необязательны: без файла сервис поднимается на умолчаниях, что
# удобно для локального запуска. Умолчание каждого поля указано ниже.

[server]
addr          = ":8080"   # адрес прослушивания; ":8080" — все интерфейсы (нужно, чтобы телефон достучался по локальной сети)
read_timeout  = "5m"      # на всё чтение запроса вместе с телом; Go-duration. Щедро: экспорт истории — десятки мегабайт по мобильной сети
# ВНИМАНИЕ: write_timeout в Go покрывает НЕ только отправку ответа. Он ставится
# до вызова обработчика и потому включает чтение тела: значение меньше
# read_timeout молча обрывает медленную загрузку. Маршрут приёма поэтому держит
# собственный бюджет (read_timeout + write_timeout), а это значение остаётся
# защитой от застрявшей записи ответа на остальных маршрутах.
write_timeout = "30s"     # на отправку ответа прочих маршрутов; Go-duration

[auth]
# Токены проверяются как `Authorization: Bearer <токен>`.
# Health Auto Export умеет слать произвольные заголовки — токен задаётся в
# настройках автоматизации.
# ПУСТОЙ СПИСОК = ПРОВЕРКА ВЫКЛЮЧЕНА. Так можно в доверенной локальной сети;
# сервис предупреждает об этом на старте записями `write auth disabled` и
# `read auth disabled`.
#
# Цена у контуров РАЗНАЯ, и это стоит помнить: открытый приём означает мусор во
# входе, открытое чтение — выгрузку всей истории здоровья любому, кто нашёл
# порт. Перед выкладкой наружу `read_tokens` обязан быть непуст.
write_tokens = []         # токены на приём данных
read_tokens  = []         # токены на чтение: каталог `GET /api/v1/metrics`

[storage]
# ВНИМАНИЕ: умолчания в коде (./healthlog.db и ./raw) остались от прежней
# раскладки, а данные с 2026-08-01 живут в ./data. Запуск без конфига заведёт
# ПУСТУЮ базу в корне репозитория рядом с настоящей. Умолчания подтянутся к
# ./data первой же задачей, трогающей конфиг; до тех пор запускай с этим файлом.
db_path     = "./data/healthlog.db"  # файл SQLite; каталог должен существовать
archive_dir = "./data/raw"           # корень сырого архива; создаётся при старте

[ingest]
# ВНИМАНИЕ: параметр РЕТРОАКТИВЕН. Тем же пределом читаются тела из архива при
# пересборке (`healthlog reindex`), поэтому понижение выбрасывает из
# пересобранной витрины все уже принятые тела крупнее нового значения — они
# начнут отказывать на каждом прогоне. Понижать только вместе с проверкой, что
# таких тел в архиве нет.
max_body_mb = 64          # максимальный размер тела запроса, МиБ; целое > 0. Больше — 413

[log]
level  = "info"           # debug | info | warn | error
format = "json"           # json | text (text удобен при локальной отладке)
