Files
clickstream-data-platform/docs/architecture/orders/inventory.md
T
ddadmin 1267b45f47 feat(generator): добавлены счётчики классов заказов
Зачем:
- дать описи контрольные числа для закрытых дней заказного окна;
- зафиксировать словарь наблюдаемых классов без изменения самого мира.

Что:
- посчитаны match, cancelled и amount_delta с приоритетом отмены;
- счётчики добавлены только к дням с закрытым окном;
- опись, тесты и документация приведены к новому формату.

Проверка:
- make lint;
- make typecheck;
- make test — 429 passed;
- uv run pytest tests/test_inventory.py -q — 3 passed после ревью.
2026-08-25 11:35:31 -04:00

2.9 KiB

Что хранит опись

Резолюции развилок «Расхождения A–D и опоздания: механика, доли и что обещано» и «Места заказов в стартовом мире». Словарь описи — растяжка-хеш против опоры-счётчика — задан «Чем меряется генератор» в спеке генератора и термином «Опись мира» в CONTEXT.md.

Опись хранит только то, чего движение мира не меняет. Хеш кладём всегда, счётчик — только когда назван его читатель.

  • У каждого отправленного слепка — своя строка с хешем байтов. Байты слепка не покрыты хешами дней ни при каком раскладе подпотоков — это второй артефакт мира. Побайтовое обещание («слепок переснимается и даёт те же байты») опись начинает сторожить.
  • Счётчики классов расхождений — наблюдаемых, после приоритета, по итоговой судьбе заказов дня. В строке закрытого дня поле orders хранит число заказов каждого класса; пока окно открыто, поля нет. При N сыгранных днях закрыты N − 7 (день d закрывается слепком d + 6, а последний отправленный слепок несёт день N − 2). Для этих счётчиков запланирована проверка classes_vs_inventory из DQ-звена этапа 4.
  • Контрольные числа идентичности не заводятся вовсе: uniq известных пользователей и число двухкуковых пар растут, пока мир едет, — опоры из них не выходит; генератор сторожит хеш, транспорт — счёт событий.
  • Опись описывает мир, а не доставку. Работа генератора кончается на Kafka: дошли ли байты до ods.order — вопрос стенда и его проверок. Поэтому счёта строк у слепка в описи нет; понадобится проверка приёма заказов — число заведётся вместе с ней.