feat(generator): потеря и дубль purchase (B, D) и счетчики описи
- Зачем:
- трекер стенда был полным, и правило «деньги — по бэкенду» держалось
на слове; классы B и D делают недосчет и пересчет трекера
наблюдаемыми (этап 6, #184).
- Что:
- подпоток BEACONS: точечная потеря purchase (~3%) и сюжетный дубль
(~2%) швом после _purchases, с гарантией моста идентичностей и
условием допуска дубля по паузе до следующего визита;
- опись считает пять классов по приоритету спеки; фильтр
classes_vs_inventory расширен, нулевой класс читается нулем;
- fate.md, seeds.md, dm.md и orders/README.md приведены к имени
BEACONS и строгому правилу допуска.
- Проверка:
- make lint, make typecheck, make test (433 passed) и make inventory
из generator/ — хеши слепков не изменились;
- на стенде: make smoke, make check-clickhouse, make check-services
зеленые; в dq_summary classes_vs_inventory и sessions_vs_reference
pass, витрина сверки показывает lost_event и duplicate_event.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c49f39f01f
commit
c28f724706
19 files changed
+433
-114
No files matched your search
@@ -16,11 +16,10 @@
|
||||
и `LATECOMERS` решения не переживают — они названы по классам витрины, а
|
||||
компонент называет часть мира; новые стороны занимают те же позиции.
|
||||
Заказная сторона названа при реализации — подпоток `ORDERS` на позиции 2;
|
||||
событийная получит имя вместе с содержимым на этапе 6, до тех пор позиция 3
|
||||
занята мёртвым именем прежней нарезки. Отклонено: *один компонент на всю
|
||||
судьбу* — правка событийной механики молча меняла бы байты слепка;
|
||||
*компонент на класс* — пять имён под ручки калибровки, которые крутятся
|
||||
разом.
|
||||
событийная — `BEACONS` на позиции 3: маячок счетчика либо не долетает, либо
|
||||
отправляется повторно. Отклонено: *один компонент на всю судьбу* — правка
|
||||
событийной механики молча меняла бы байты слепка; *компонент на класс* —
|
||||
пять имён под ручки калибровки, которые крутятся разом.
|
||||
|
||||
**Правило формы, без которого разделение не работает: броски заказной стороны
|
||||
делаются на полную длину дня, а не на отобранных заказах.** Иначе длина броска
|
||||
@@ -108,12 +107,13 @@
|
||||
покупку. Довод не в связности легенды: точечный дубль ломал бы урок соседнего
|
||||
класса — разрыв воронки, на котором держится потеря, сжался бы втрое; при
|
||||
сюжетном разрыв снова равен доле потерь. `purchaseID`, суммы и позиции у дубля
|
||||
один в один — посчитал наивно, удвоил выручку. Дубль случается только там, где
|
||||
до следующего визита куки остаётся запас сверх таймаута: иначе сборка сессий у
|
||||
менти разошлась бы с `VisitID` — сломался бы эталон, ради которого `VisitID`
|
||||
в потоке лежит. Задержка дубля — секунды-минуты, короче таймаута визита,
|
||||
поэтому `VisitID` тот же. Полночь режет дубль парой — просмотр вместе с
|
||||
покупкой, по тому же правилу, что у подтверждения с торговым хвостом.
|
||||
один в один — посчитал наивно, удвоил выручку. Дубль случается только там,
|
||||
где пауза до следующего визита куки длиннее таймаута и задержки дубля вместе:
|
||||
иначе сборка сессий у менти разошлась бы с `VisitID` — сломался бы эталон,
|
||||
ради которого `VisitID` в потоке лежит. Задержка дубля —
|
||||
секунды-минуты, короче таймаута визита, поэтому `VisitID` тот же. Полночь
|
||||
режет дубль парой — просмотр вместе с покупкой, по тому же правилу, что у
|
||||
подтверждения с торговым хвостом.
|
||||
Отклонено: *обе точечные* — дубль затирает урок потери; *обе сюжетные* —
|
||||
потеря перестаёт быть видна со стороны трекера.
|
||||
|
||||
|
||||
Reference in new issue
Block a user