fix(course): правки по итогам слепого ревью лаб 07/08 (#22)

Зачем: два слепых ревью (Codex CODE-1..9, Claude TASK-1..2) и
перепроверки нашли дефекты в лабах и метадоках; финал лабы 08
переделан по решению пользователя.

Что:
- канонический сброс в README курса теперь снимает DAG'и с паузы
  (все создаются на паузе);
- имя дашборда исправлено на «E-commerce Analytics Dashboard»;
- финал лабы 08: вместо мифа «users == sessions на статике» —
  вернувшийся пользователь через границу заморозки и измеренное
  обещание свежести; §2 велит записать границы и время (§6 их требует);
- CONTEXT.md: эталонный мир — замороженный живой,
  4 056 пользователей / 26 083 визита, возвраты уже есть;
- уроки 5–6 ведут в обязательный маршрут, живое упражнение
  урока 5 требует канонический сброс;
- контрактные тесты: убран якорь на удалённую команду; добавленные
  на триаже тесты-цитаты срезаны до устойчивых инвариантов
  (прозаический легаси-жанр — issue #24);
- handoff обновлён до текущего состояния.

Проверка: make test (219 generator + 31 contract) и make lint зелёные;
SQL вернувшегося пользователя проверен на эфемерном ClickHouse 25.1
(на полном наборе — в #23).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-23 14:48:02 +03:00
co-authored by Claude Opus 4.8
parent 1dd79a3287
commit cbf8b2d770
8 changed files with 167 additions and 99 deletions
+6 -4
View File
@@ -35,10 +35,12 @@
1. Выполни `make clean`. Команда удалит данные стенда и метаданные Superset: сохранённые
в нём настройки и дашборды тоже придётся создать заново.
2. Выполни `make up`, открой Airflow на `http://localhost:8080` (`admin/admin`) и дождись
успешного завершения двух DAG-ов по порядку:
- `ddl_init` — запусти с пустой формой;
- `world_init` — после него запусти с пустой формой.
2. Выполни `make up` и открой Airflow на `http://localhost:8080` (`admin/admin`).
На свежем стенде DAG-и стоят на паузе. Подготовь и запусти их по порядку:
- `ddl_init` сними паузу и запусти с пустой формой;
- `etl_pipeline` — только сними паузу: его вызовет следующий DAG;
- `world_init` — сними паузу и запусти с пустой формой после успешного
`ddl_init`.
3. Когда `world_init` завершится успешно и витрины DM будут готовы, выполни
`make superset-init`.