feat(generator): добавлено опоздание заказов в слепках
- Зачем: - менти должен увидеть, как запоздавшая выгрузка меняет открытое окно, не подделывая аудит источника. - Что: - заказам назначена задержка D, D+1 или D+2 последним броском подпотока ORDERS. - назначенный планом заказ приезжает сразу, а Woven передаёт эту гарантию именованным полем. - обновлены документы, проверки границ механики и эталонные хеши слепков. - Проверка: - make lint, make typecheck и make test в generator: 436 тестов прошли. - make config-test: конфигурация прошла проверку. - world_live_day и следующий etl_pipeline перевели заказ 20260608-0001 из awaiting_order в match.
This commit is contained in:
1 parent
58e944aa87
commit
8db1c58c12
11 files changed
+186
-54
No files matched your search
@@ -45,7 +45,7 @@ from numpy.typing import NDArray
|
||||
|
||||
from clickstream_generator import catalog, schema, world
|
||||
from clickstream_generator.day import Day
|
||||
from clickstream_generator.orders import Orders, at_boundary
|
||||
from clickstream_generator.orders import Orders, arrived, at_boundary
|
||||
|
||||
_ARRAY_PREFIX = "Array("
|
||||
|
||||
@@ -72,9 +72,10 @@ def events(day: Day, limit: int | None = None) -> list[bytes]:
|
||||
def orders(window: Sequence[Orders], day: int) -> list[bytes]:
|
||||
"""Канонические байты слепка дня `day`: по документу JSON на заказ.
|
||||
|
||||
`window` — заказы дней окна, от раннего дня к позднему: слепок несёт их
|
||||
подряд, и порядок строк выходит порядком рождения заказов, он же
|
||||
возрастание `order_id`. Какие это дни, решает `orders.window`.
|
||||
`window` — заказы дней окна, от раннего дня к позднему. Уже приехавшие
|
||||
заказы слепок несёт подряд, поэтому порядок строк остаётся порядком
|
||||
рождения, он же возрастание `order_id`. Какие это дни, решает
|
||||
`orders.window`.
|
||||
|
||||
Деньги уезжают строками с ровно двумя знаками, а не числами: у заказа они
|
||||
станут `Decimal`, и дробь двоичного числа была бы потерей точности до
|
||||
@@ -97,7 +98,8 @@ def orders(window: Sequence[Orders], day: int) -> list[bytes]:
|
||||
delivery = rows.delivery.tolist()
|
||||
total = rows.total.tolist()
|
||||
|
||||
for number, order_id in enumerate(rows.order_id):
|
||||
for number in np.flatnonzero(arrived(rows, day)).tolist():
|
||||
order_id = rows.order_id[number]
|
||||
payloads.append(
|
||||
orjson.dumps(
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user