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
@@ -48,7 +48,15 @@ def test_order_class_counters_cover_only_closed_days(inventory: dict):
|
||||
rows = [row for row in inventory["days"] if "orders" in row]
|
||||
|
||||
assert [row["day"] for row in rows] == [0]
|
||||
assert set(rows[0]["orders"]) == {"match", "cancelled", "amount_delta"}
|
||||
assert set(rows[0]["orders"]) == {
|
||||
"match",
|
||||
"cancelled",
|
||||
"lost_event",
|
||||
"duplicate_event",
|
||||
"amount_delta",
|
||||
}
|
||||
assert rows[0]["orders"]["lost_event"] > 0
|
||||
assert rows[0]["orders"]["duplicate_event"] > 0
|
||||
today = day_module.stream(CANONICAL_SEED, rows[0]["day"])
|
||||
assert sum(rows[0]["orders"].values()) == len(today.orders)
|
||||
|
||||
|
||||
Reference in new issue
Block a user