docs(labs): добавлено наблюдение за выручкой до закрытия дня

Зачем: связать опоздания и отмены с изменением уже рассчитанного отчета.
Что: лабораторная с сохранением состояний заказов, ссылки в индексе и программе; убраны повторы в описании раздела.
Проверка: восемь однодневных world_next_day и etl_pipeline на Airflow 3.3.0; изменения сумм сошлись до копейки, закрытый день неизменен, DQ пройдены. Проверены 54 локальные ссылки, SQL-примеры и git diff --check.
This commit is contained in:
ddadmin committed 2026-09-22 03:58:42 -04:00
1 parent 2502277af1
commit 515f386e5f
3 files changed
+158 -29

No files matched your search

+14 -27
View File
@@ -161,34 +161,21 @@
изменение выручки и история отмен используют одну историю заказов, поэтому
для них выбрана общая работа вместо трех отдельных.
- **Куда пропали покупки (#186).** Учащийся сравнивает подтверждения и события
покупки, находит заказы без события и объясняет разрыв воронки конкретными
заказами.
- **Почему повтор покупки завышает выручку (#187).** Движок убирает технический
дубль строки, а повтор одной покупки приходится находить по деловому ключу.
Учащийся сравнивает сумму событий с суммой по уникальным покупкам и
подтверждает, что разница равна вкладу повторов. Другие причины расхождения
с выручкой магазина при этом остаются.
- **Какая позиция объясняет разницу в сумме.** Учащийся сопоставляет корзину
из сырого `ecommerce` с позициями заказа, находит удаленный товар и объясняет
разницу до копейки. Для точных цен нужен исходный JSON: в готовых массивах
событий цены округлены до рублей.
- **Почему вчерашняя выручка меняется сегодня (#188).** Учащийся наблюдает один
день по мере поступления слепков: появляются опоздавшие заказы, меняются
статусы и выручка. По сохраненным состояниям объясняет причины изменений,
определяет момент закрытия дня и отделяет доказанную оплату отмененного
заказа от случаев, в которых историю оплаты восстановить нельзя.
- **[Куда пропали покупки](../labs/optional/missing-purchases.md) (#186).**
Учащийся объясняет разрыв воронки заказами, для которых нет события покупки.
- **[Почему повтор покупки завышает выручку](../labs/optional/duplicate-purchases.md) (#187).**
Разность клиентских сумм объясняется повторными событиями одной покупки.
- **[Какая позиция объясняет разницу в сумме](../labs/optional/order-amount-difference.md).**
Сравнение позиций из исходного JSON и заказа объясняет расхождение до копейки.
- **[Почему вчерашняя выручка меняется сегодня](../labs/optional/revenue-over-time.md) (#188).**
История одного дня связывает опоздания, оплату и отмены с изменением выручки,
позволяет определить момент закрытия дня и границу знания об оплате.
В четвертой лабораторной учащийся сам собирает историю одного дня оформления
заказов. Перед наблюдением он ставит `world_live` на паузу и дожидается
завершения начатых прогонов. Затем продвигает
мир по одному модельному дню через `world_next_day` и после каждого запуска
выполняет `etl_pipeline`. Только после завершения конвейера сохраняет дату
слепка, состояния отдельных заказов и выручку выбранного дня. Эти результаты
позволяют сравнить наблюдения даже после удаления сырых слепков. Готовые
слепки и сочетание готового примера с собственным наблюдением отклонены:
учащийся может получить нужную историю на стенде и сам увидеть, как новые
данные меняют уже рассчитанный отчет.
В четвертой лабораторной выбрано собственное наблюдение: учащийся продвигает
мир по одному дню через Airflow и сохраняет результаты после обновления витрин.
Готовые слепки и сочетание готового примера с собственным наблюдением
отклонены: нужную историю можно получить на стенде и самому увидеть,
как новые данные меняют уже рассчитанный отчет.
День считается закрытым после получения и обработки последнего слепка
семидневного окна изменяемости; этот слепок доставляется следующим модельным