feat(labs): четыре расследования выручки и учебный доступ #255

Merged
ddmitry merged 7 commits from labs/revenue-investigations into main 2026-09-22 12:13:35 +03:00
Owner

В разделе «Почему выручка не сходится» появились четыре лабораторные после ступени 1. Шесть исходных сюжетов объединены в расследования, результат которых — проверенные запросы и решения о подготовке данных для витрин.

  • Потерянные покупки: сверка полноты по номерам заказов, выбор источника витрины и условия окончательной проверки.
  • Повторы: расчет с одной строкой на заказ, проверка ключа и полноты набора номеров, выбор места устранения повторов.
  • Расхождение сумм: сверка позиций без потери товаров и копеек, выбор исходных полей, отделение ошибки своего разбора от различия данных источников.
  • Изменения во времени: наблюдение через Airflow, сохранение состояний в две свои таблицы ClickHouse и SQL-сравнение по датам; обоснование окна пересчета и требований к истории расчетов и оплаты.

Вопросы задают сравнения и способы проверки, а выводы учащийся делает по своим данным. Обновлены индекс и программа. В AGENTS.md убрано устаревшее назначение Opus автором читаемых материалов.

Для сохранения наблюдений добавлен учебный пользователь student: чтение всех источников и создание, заполнение и удаление таблиц только в default. Рабочие слои остаются для него доступны только на чтение. Исправлено описание округления productPrice в схеме и собранной из нее справке.

Для существующего стенда нужно добавить CLICKHOUSE_STUDENT_PASSWORD из .env.example в .env и пересоздать две ноды ClickHouse с сохранением томов, как описано в настройке стенда.

Продолжает идеи #186, #187 и #188. Их исходные тикеты закрыты после включения в программу.

Проверка

  • На ClickHouse 26.3.17.56 под analyst проверены запросы первых трех работ. Сверка находит семь заказов без события. Расчет по заказам сохраняет 211 уникальных номеров из 217 событий и устраняет завышение на 17 959,50 ₽. Сверка позиций сохраняет товар без пары стоимостью 789,90 ₽.
  • При исходной проверке на Airflow 3.3.0 выполнены восемь последовательных пар world_next_day → etl_pipeline; сохранены девять наблюдений заказов 10 июня. Пришли 23 опоздавших заказа, наблюдались четыре перехода paid → cancelled; денежные сверки и DQ прошли.
  • На сохраненной истории проверены новые инженерные выводы: расчет дня без обновлений оставляет 283 785,74 ₽, добавление только новых заказов — 359 022,80 ₽, тогда как окончательная выручка составляет 1 024 251,01 ₽. После закрытия окна состояние 265 заказов и выручка не меняются. У семи отмененных заказов оплаты в наблюдениях нет — материал для проверки границ истории.
  • Под student проверены DDL из лабораторной, INSERT SELECT, сохранение пустого первого наблюдения и SQL-сравнение всех восьми переходов ранее снятой истории. На обеих нодах чтение DDS работает, а попытки вставки в STG, ODS, DDS, DM и dic получают ACCESS_DENIED. Созданные проверкой таблицы удалены.
  • make config-test, make lint в корне и generator/, 54 локальные ссылки и git diff --check прошли. Независимое техническое ревью дефектов не нашло; выполнен проход на сокращение.

Запуски проверены через API Airflow и SQL. Полный проход учащегося через интерфейсы Airflow и DBeaver не выполнялся. Исходная проверка продвинула мир до 18 июня; для смены акцента новые модельные дни не запускались.

В разделе «Почему выручка не сходится» появились четыре лабораторные после ступени 1. Шесть исходных сюжетов объединены в расследования, результат которых — проверенные запросы и решения о подготовке данных для витрин. - Потерянные покупки: сверка полноты по номерам заказов, выбор источника витрины и условия окончательной проверки. - Повторы: расчет с одной строкой на заказ, проверка ключа и полноты набора номеров, выбор места устранения повторов. - Расхождение сумм: сверка позиций без потери товаров и копеек, выбор исходных полей, отделение ошибки своего разбора от различия данных источников. - Изменения во времени: наблюдение через Airflow, сохранение состояний в две свои таблицы ClickHouse и SQL-сравнение по датам; обоснование окна пересчета и требований к истории расчетов и оплаты. Вопросы задают сравнения и способы проверки, а выводы учащийся делает по своим данным. Обновлены индекс и программа. В AGENTS.md убрано устаревшее назначение Opus автором читаемых материалов. Для сохранения наблюдений добавлен учебный пользователь `student`: чтение всех источников и создание, заполнение и удаление таблиц только в `default`. Рабочие слои остаются для него доступны только на чтение. Исправлено описание округления `productPrice` в схеме и собранной из нее справке. Для существующего стенда нужно добавить `CLICKHOUSE_STUDENT_PASSWORD` из `.env.example` в `.env` и пересоздать две ноды ClickHouse с сохранением томов, как описано в [настройке стенда](https://git.dementev.space/ddmitry/clickstream-data-platform/src/commit/bb8605eed7d80e7d3ceef94deee77a0710f7d78e/docs/architecture/stand.md#user-content-применение-настроек). Продолжает идеи #186, #187 и #188. Их исходные тикеты закрыты после включения в программу. ### Проверка - На ClickHouse 26.3.17.56 под `analyst` проверены запросы первых трех работ. Сверка находит семь заказов без события. Расчет по заказам сохраняет 211 уникальных номеров из 217 событий и устраняет завышение на 17 959,50 ₽. Сверка позиций сохраняет товар без пары стоимостью 789,90 ₽. - При исходной проверке на Airflow 3.3.0 выполнены восемь последовательных пар `world_next_day` → `etl_pipeline`; сохранены девять наблюдений заказов 10 июня. Пришли 23 опоздавших заказа, наблюдались четыре перехода `paid` → `cancelled`; денежные сверки и DQ прошли. - На сохраненной истории проверены новые инженерные выводы: расчет дня без обновлений оставляет 283 785,74 ₽, добавление только новых заказов — 359 022,80 ₽, тогда как окончательная выручка составляет 1 024 251,01 ₽. После закрытия окна состояние 265 заказов и выручка не меняются. У семи отмененных заказов оплаты в наблюдениях нет — материал для проверки границ истории. - Под `student` проверены DDL из лабораторной, `INSERT SELECT`, сохранение пустого первого наблюдения и SQL-сравнение всех восьми переходов ранее снятой истории. На обеих нодах чтение DDS работает, а попытки вставки в STG, ODS, DDS, DM и `dic` получают `ACCESS_DENIED`. Созданные проверкой таблицы удалены. - `make config-test`, `make lint` в корне и `generator/`, 54 локальные ссылки и `git diff --check` прошли. Независимое техническое ревью дефектов не нашло; выполнен проход на сокращение. Запуски проверены через API Airflow и SQL. Полный проход учащегося через интерфейсы Airflow и DBeaver не выполнялся. Исходная проверка продвинула мир до 18 июня; для смены акцента новые модельные дни не запускались.
ddmitry added 4 commits 2026-09-22 10:59:49 +03:00
Зачем: оценка моделей изменилась, назначение Opus автором текстов устарело.
Что: автор задачи сам пишет и редактирует материалы, если владелец не назначил иное.
Проверка: git diff --check; проверены AGENTS.md, CLAUDE.md и docs/agents.
Зачем: превратить шесть идей факультативов в связный раздел из четырех работ.
Что: определены результаты работ и наблюдение за заказами через Airflow.
Проверка: git diff --check; порядок обновления данных сверен с кодом дагов.
Зачем: дать практику сверки событий покупки с заказами магазина.
Что: задания о потерях событий, повторах покупок и расхождении состава корзин.
Проверка: запросы под analyst на ClickHouse 26.3.17.56; счетчики, суммы и точный разбор JSON сошлись. make lint и независимая техническая проверка пройдены.
Зачем: связать опоздания и отмены с изменением уже рассчитанного отчета.
Что: лабораторная с сохранением состояний заказов, ссылки в индексе и программе; убраны повторы в описании раздела.
Проверка: восемь однодневных world_next_day и etl_pipeline на Airflow 3.3.0; изменения сумм сошлись до копейки, закрытый день неизменен, DQ пройдены. Проверены 54 локальные ссылки, SQL-примеры и git diff --check.
ddmitry added 1 commit 2026-09-22 11:18:28 +03:00
Зачем: учащемуся нужен понятный путь от наблюдений к выводу без готового ответа в задании.

Что: уточнены сравнения в четырех расследованиях; готовые объяснения заменены вопросами к строкам, расчетам и сохраненным состояниям.

Проверка: проверены 54 локальные ссылки и git diff --check; формулировки сверены с устройством источников и витрин.
ddmitry changed title from docs(labs): добавлены четыре расследования выручки to docs(labs): добавлены четыре расследования выручки для DE 2026-09-22 11:29:00 +03:00
ddmitry added 1 commit 2026-09-22 11:29:02 +03:00
Зачем: результатом лабораторных должны быть обоснованные решения о подготовке данных для витрин.

Что: добавлены проверяемые результаты сверки полноты, выбора ключа, точного разбора и правила пересчета; обновлены программа и индекс, убран подсчет долей потерь.

Проверка: SELECT-запросы под analyst, расчеты по сохраненной истории девяти наблюдений, 54 локальные ссылки, git diff --check и независимое техническое ревью.
ddmitry changed title from docs(labs): добавлены четыре расследования выручки для DE to feat(labs): четыре расследования выручки и учебный доступ 2026-09-22 11:57:56 +03:00
ddmitry added 1 commit 2026-09-22 11:57:56 +03:00
Зачем: студенту нужен понятный путь от сохраненного состояния к SQL-сравнению без доступа технической учетной записи к изменению хранилища.

Что: добавлен student с чтением источников и записью только в default; лабораторная сохраняет заказы и итоги в две локальные таблицы. Обновлены настройка доступа и программа, уточнено округление productPrice.

Проверка: DDL и INSERT SELECT под student, пустое наблюдение, восемь переходов сохраненной истории и запрет вставки в пять прикладных баз на обеих нодах. config-test, lint стенда и генератора, 54 ссылки, независимое ревью.
ddmitry merged commit c1d3a6db9b into main 2026-09-22 12:13:35 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ddmitry/clickstream-data-platform#255