alchemistry

Рецепты в машинном виде

JSON-файлы рецептов: нужны для пересчёта пропорций и для проверок CI. Сами
рецепты с пояснениями и диагностикой — в ../docs/, формат полей —
в ../tools/README.md.

recipes/
├── chocolate/   dark-70.json  milk.json  white.json  ruby.json
├── twix/        wafer-short-dough.json  wafer-meringue.json
│                wafer-coconut.json  caramel.json  caramel-salted.json
└── cookies/     milk-cookies.json  honey.json  potato-crisp.json
    snacks/      potato-chips.json

Использование

bash
python tools/recalc.py --list recipes/                              # список с выходом
python tools/recalc.py recipes/chocolate/dark-70.json                # один рецепт
python tools/recalc.py recipes/chocolate/dark-70.json --scale 2      # пересчитать
python tools/recalc.py recipes/twix/caramel.json --yield 500         # на нужный выход
python tools/recalc.py recipes/twix/wafer-short-dough.json --table md --share
python tools/recalc.py --validate recipes/                          # проверить все

Имена файлов

<изделие>[-<вариант>].json, латиницей, без транслита:
chocolate/dark-70.json, twix/wafer-meringue.json, twix/caramel-salted.json,
cookies/milk-cookies.json.

НеправильноПравильно
docs/shokolad/docs/chocolate/
docs/baza/docs/base/
recipes/tvix/recipes/twix/
chocolate/molochny.jsonchocolate/milk.json
twix/01-korzh.mdtwix/01-wafer.md

Транслит не используется нигде: ни в папках, ни в именах файлов, ни в именах
веток. Причина практическая — кириллица в путях ломает вывод в консоли, а пути
к рецептам фигурируют в CI.

Содержимое файлов — русский. Бренды и термины без русского аналога пишутся как
в оригинале: twix, melanger, ruby, meringue. Термины, у которых русский
аналог есть, — по-русски: конширование, темперирование, карамель.

Добавить рецепт

  1. Создай JSON в нужной папке.
  2. Проверь: python tools/recalc.py --validate recipes/
  3. Свяжи его из markdown-рецепта в ../docs/.

allow_loss

Карамель и сиропы увариваются: сырья 422 г, на выходе ~300 г. Это физика, а
не ошибка, и для таких рецептов ставится флаг:

json
"yield": 300,
"allow_loss": true

Без него --validate ругается на расхождение суммы с выходом.