Files
healthlog/config.example.toml
T
av 5ae0c5ff81 reindex: пересборка витрины проигрыванием журнала
- `healthlog reindex` собирает витрину из журнала (тела архива + учёт
  доставок) в ОТДЕЛЬНЫЙ файл базы, строго по `(received_at, id)`; рабочую
  базу читает без наката миграций и не трогает вовсе. Подмену делает
  человек при остановленном сервисе: переименование поверх открытого
  дескриптора портит базу молча.
- Журналом считается архив, а не таблица доставок: тело без учётной записи
  заводится заново (метка из ULID, размер и хеш по распакованному телу),
  запись без тела переносится, но не сворачивается. Оракул сходимости
  встроен — два отпечатка и «объектов было/стало»; пустой журнал успехом не
  считается.
- Прогон живого архива переехал на новый пакет: второго проигрывателя
  журнала в проекте не осталось, а его утверждение о ключе сна перестало
  быть константой, протухающей с каждой доставкой.
2026-08-02 09:07:46 +03:00

40 lines
3.2 KiB
TOML

# Образец конфигурации healthlog.
#
# Реальный config.toml не коммитится (в нём токены), права 0600.
# Все поля необязательны: без файла сервис поднимается на умолчаниях, что
# удобно для локального запуска. Умолчание каждого поля указано ниже.
[server]
addr = ":8080" # адрес прослушивания; ":8080" — все интерфейсы (нужно, чтобы телефон достучался по локальной сети)
read_timeout = "5m" # на всё чтение запроса вместе с телом; Go-duration. Щедро: экспорт истории — десятки мегабайт по мобильной сети
write_timeout = "30s" # на отправку ответа; Go-duration
[auth]
# Токены проверяются как `Authorization: Bearer <токен>`.
# Health Auto Export умеет слать произвольные заголовки — токен задаётся в
# настройках автоматизации.
# ПУСТОЙ СПИСОК = ПРОВЕРКА ВЫКЛЮЧЕНА. Так можно в доверенной локальной сети;
# сервис предупреждает об этом на старте записью `write auth disabled`.
write_tokens = [] # токены на приём данных
read_tokens = [] # токены на чтение (read API появится позже)
[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 удобен при локальной отладке)