58 Commits
Author SHA1 Message Date
ddmitry 6d96097d50 Merge pull request 'Обновить практику Airflow: основной маршрут и задания по желанию' (#1) from work/airflow-practice-refresh into main 2026-09-28 17:20:49 +03:00
ddadmin 26730c6483 docs(practice): согласовать теорию с учебным стендом 2026-09-28 09:44:28 -04:00
ddadmin f6b450c922 docs(practice): перенести задания в корень репозитория 2026-09-28 09:19:48 -04:00
ddadmin 1277bff690 docs(practice): уточнить инструкции по результатам прохождения
Уточнены порядок CSV/COPY, расположение логов callbacks, шаблонов и управления TaskGroup. Сохранены условия проверки, результаты 69 контрольных запусков и одного диагностического, SHA-256 DAG и снимки UI. Все этапы плана закрыты.

Основной и дополнительный маршруты проверены на Airflow 2.9.2. SMTP проверен локальным приемником, включая отказ доставки; внешняя почта и Windows отдельно не проверялись. Тестовые контейнеры и тома удалены.
2026-09-28 09:10:09 -04:00
ddadmin d8dfe83651 docs(practice): разделить основной маршрут и задания по желанию
Восемь блоков с явным началом, последовательными изменениями и наблюдаемыми результатами. Дополнительные упражнения имеют отдельные зависимости и условия возврата. Обновлены README, справочник DAG и пример уведомлений.

Проверены ссылки, якоря, отрисовка Markdown и основные сценарии в Airflow 2.9.2. Проверки дополнительных упражнений продолжаются и фиксируются в плане.
2026-09-28 08:49:02 -04:00
ddadmin cf1b770a65 fix(dags): сделать учебные сценарии воспроизводимыми
Управляемые ветки и ошибки, зависимости общих обработчиков, сохранение SQL-результата и фактическое чтение результатов Extract. Добавлен пример пулов и XCom; DQ-сводка сохраняет отказ при all_done.

Проверено на Airflow 2.9.2: импорт и запуск девяти исходных DAG, выбор веток, повтор и окончательные отказы обеих рабочих задач, отрицательный DQ-сценарий и восстановление, фильтрация Extract и ожидание слотов.
2026-09-28 08:46:50 -04:00
ddadmin 623d5861c1 docs(practice): добавить план обновления практики 2026-09-28 08:00:01 -04:00
ddadminandClaude Opus 5.5 13e310248c chore(repo): влита ветка main с GitHub после переезда на Gitea
- Зачем: при переносе на Gitea потерялись два коммита из GitHub main,
  а задания уже требовали импортировать pandas внутри функций.
- Что:
  - 72d5968: pandas импортируется внутри функций, исправлен баг
    с occupations, добавлены docstring, удалён educational-setup-plan.md.
  - 5020781: добавлен CLAUDE.md со ссылкой на AGENTS.md.
  - Изменения educational-tasks.md из a94d31d уже были внесены в ab1b61f.
- Проверка: py_compile и DagBag — 8 DAG загружаются без ошибок.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-27 15:12:05 -04:00
ddadmin ab1b61f396 docs(airflow): обновлены практические задания
- Зачем:
  - упражнения должны быть понятнее и соответствовать ожидаемому уровню сложности.
- Что:
  - добавлены подсказки и описания подводных камней.
  - упрощены задания по отчетам, мониторингу и логированию.
- Проверка:
  - git diff --check.
2026-07-26 23:58:10 +03:00
ddadmin 50207811a8 chore(repo): добавлен CLAUDE.md со ссылкой на AGENTS.md
- Зачем:
  - чтобы инструменты и агенты могли находить единый файл с инструкциями для репозитория.
- Что:
  - добавлен файл CLAUDE.md.
  - в файл помещена ссылка на AGENTS.md как точку входа в актуальные правила.
- Проверка:
  - git status --short.
2026-03-27 21:49:22 +03:00
ddadminandClaude Opus 4.6 a94d31db06 docs(tasks): переработаны учебные задания по обратной связи менти
- Зачем:
  - менти жаловался на слабую детализацию заданий, непонятные формулировки
    («ключевые метрики бизнеса», «мониторинг и логирование») и нереалистичное время.
- Что:
  - убрано время выполнения из всех заданий.
  - добавлены лаконичные подсказки: куда смотреть, какой API использовать, подводные камни.
  - переписано задание 2 для data_processing_dag (было «дашборд с HTML» → «расширение текстового отчёта»).
  - переписано задание 3 для error_handling_dag (было абстрактный «мониторинг» → конкретное «logging вместо print»).
- Проверка:
  - вычитка документа, проверка что подсказки не содержат готовых решений.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 23:07:24 +03:00
ddadminandClaude Opus 4.6 72d5968d01 refactor(dags): перенесён pandas в функции, исправлен баг occupations, добавлены docstring
- Зачем:
  - обратная связь от менти: pandas в шапке DAG замедляет парсинг scheduler,
    отсутствие описаний затрудняет изучение, баг с неиспользуемой переменной.
- Что:
  - import pandas as pd перенесён из шапки внутрь функций (file_operations, csv_to_postgres, data_processing).
  - исправлен баг: переменная occupations в file_operations_dag.py теперь включена в DataFrame.
  - добавлены docstring с описанием шагов DAG для csv_to_postgres.py, csv_to_postgres_dq.py, data_processing_dag.py.
  - расширен docstring file_operations_dag.py.
  - удалён educational-setup-plan.md (технический файл, не для менти).
- Проверка:
  - airflow DagBag: все 8 DAG загружаются без ошибок.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 22:50:55 +03:00
ddadmin eaea33e761 docs(airflow): выровнены формулировки для CSV и DQ сценариев
- Зачем:
  - убрать мелкие противоречия между спецификациями, учебным планом и заданиями.
  - сделать сценарий csv_to_postgres и csv_to_postgres_dq понятнее для студентов.
- Что:
  - уточнено, что csv_to_postgres отвечает за загрузку и предпросмотр данных, а DQ вынесен в отдельный DAG.
  - добавлены явные указания про каталог data/output и соединение postgres_training.
  - исправлены ссылки на задачу data_quality_summary в учебных заданиях.
- Проверка:
  - git diff -- airflow-docker/dag-specifications.md airflow-docker/educational-setup-plan.md airflow-docker/educational-tasks.md.
2026-03-08 21:44:16 +03:00
ddadmin af6b0a9fae refactor(manual): упрощение архитектуры учебного пайплайна и документации
- Зачем:
  - сделать примеры более доступными для начинающих, убрав лишнюю архитектурную сложность (хелперы, внешние SQL файлы).
  - сфокусировать обучение на самом Airflow, а не на структуре Python-проекта.
- Что:
  - консолидирована логика: DDL и вспомогательные функции перенесены из helpers/ и sql/ напрямую в csv_to_postgres.py и csv_to_postgres_dq.py.
  - удалена избыточная инфраструктура: папки sql/, tests/, helpers/ и файл requirements.txt больше не содержат специфичных для этого пайплайна файлов.
  - упрощена работа с БД: использование PostgresHook напрямую в задачах вместо кастомных оберток.
  - исправлен порт PostgreSQL для метаданных Airflow (5433 → 5434) в README.md и educational-setup-plan.md.
  - изменен путь генерации CSV на /opt/airflow/data/output в csv_to_postgres.py.
  - добавлен шаблон data/*.csv в .gitignore.
  - обновлен комментарий в sql_basic_dag.py о создании соединения.
  - исправлено описание практического задания в educational-tasks.md.
  - добавлены переводы строк в конце файлов csv_to_postgres.py и educational-setup-plan.md.
- Проверка:
  - запуск DAG-ов csv_to_postgres и csv_to_postgres_dq в Airflow UI.
2026-03-08 21:38:59 +03:00
ddadmin 24ee9f65f0 docs(manual): обновлена структура проекта и добавлены задания
- Зачем:
  - необходимо отразить в документации новый пайплайн загрузки CSV в PostgreSQL.
  - студентам нужны конкретные задания для закрепления навыков ETL и Data Quality.
- Что:
  - обновлен README.md: добавлено описание новых DAG-ов, папок sql/ и tests/, актуализирован путь обучения.
  - обновлен educational-tasks.md: добавлены 4 новых задания (ETL, PostgresOperator, DQ проверки, Trigger Rules) и обновлен блок оценки прогресса.
- Проверка:
  - визуальная проверка файлов README.md и educational-tasks.md в репозитории.
2026-03-08 20:31:08 +03:00
ddadmin 69c9532bb2 chore(gitignore): добавлен venv/ в .gitignore
- Зачем:
  - исключение локального виртуального окружения из git
- Что:
  - добавлена запись venv/ в .gitignore
- Проверка:
  - git status не должен показывать папку venv/
2026-03-08 20:19:02 +03:00
ddadmin 5a3e78c9b8 docs(dags): обновлена документация для csv_to_postgres пайплайна
- Зачем:
  - отражение изменений после миграции с Greenplum на PostgreSQL
  - добавление описания новых DAG-ов для обучения
- Что:
  - удалено устаревшее упоминание Greenplum в educational-setup-plan.md
  - добавлено описание csv_to_postgres.py в educational-setup-plan.md
  - добавлено описание csv_to_postgres.py и csv_to_postgres_dq.py в dag-specifications.md
  - обновлена нумерация DAG-ов в dag-specifications.md
- Проверка:
  - просмотр файлов dag-specifications.md и educational-setup-plan.md
2026-03-08 20:15:24 +03:00
ddadmin 8028711f0c refactor(dags): миграция CSV-пайплайна с Greenplum на PostgreSQL
- Зачем:
  - адаптация пайплайна для работы с чистым PostgreSQL вместо Greenplum
  - обеспечение совместимости с учебным стендом на базе Docker Compose
- Что:
  - переименованы файлы (greenplum -> postgres)
  - обновлены DAG-файлы: замена get_gp_conn на get_postgres_conn, адаптация DDL под PostgreSQL
  - обновлён helpers/postgres.py: замена функций и переменных окружения
  - добавлен pytest в requirements.txt для запуска тестов
  - создан tests/conftest.py с функцией patch_postgres_hook
  - обновлён tests/test_postgres_helpers.py: исправлены импорты
  - добавлено монтирование папки tests в docker-compose.yml
  - адаптирован sql/base/orders_ddl.sql под PostgreSQL
- Проверка:
  - docker-compose exec airflow-webserver pytest /opt/airflow/tests/test_postgres_helpers.py
2026-03-08 19:51:15 +03:00
ddadmin f703d8e96d feat(greenplum): добавлен CSV-пайплайн и проверки качества данных
- Зачем:
  - Необходим пример загрузки данных из CSV в Greenplum через Airflow
  - Добавлены проверки качества данных для валидации загруженных данных
- Что:
  - создан DAG csv_to_greenplum для генерации и загрузки CSV в таблицу orders
  - создан DAG csv_to_greenplum_dq для проверок качества данных
  - создан DAG ddl_greenplum_base для применения DDL таблицы orders
  - добавлен модуль helpers/greenplum с функциями подключения и валидации
  - добавлен SQL-скрипт sql/base/orders_ddl.sql для создания таблицы
  - добавлены unit-тесты test_greenplum_helpers.py
- Проверка:
  - запуск DAG csv_to_greenplum в Airflow UI
  - запуск тестов pytest tests/test_greenplum_helpers.py
2026-03-08 19:08:47 +03:00
ddadmin 7072f88e27 Merge branch 'feature/MermaidDiagrams' 2026-03-05 22:23:18 +03:00
ddadmin 88727de538 docs(concepts): добавлена наглядная Mermaid-диаграмма взаимосвязей компонентов
- Зачем:
  - старая ссылка на изображение была нерабочей, пользователю не хватало визуализации связей DAG, задач и операторов.
- Что:
  - добавлена Mermaid-диаграмма в стиле flowchart LR.
  - визуализирована структура DAG как контейнера с последовательностью задач.
  - показана связь каждой задачи с её технической реализацией (Operator/Sensor) через пунктирные линии.
- Проверка:
  - визуальный осмотр рендеринга Mermaid в Markdown-превью.
2026-03-05 22:22:17 +03:00
ddadmin 1eb2213d61 Обновлена архитектурная диаграмма 2025-12-06 22:12:36 +03:00
ddadmin 5bcb737c23 Удаление неиспользуемых файлов 2025-12-06 21:48:30 +03:00
ddadmin e5f8f00e42 Merge branch 'feature/MermaidDiagrams' 2025-12-06 21:44:50 +03:00
ddadmin 5a0e1ae6cc Новые задания по pool, xcom, taskgroup 2025-12-06 21:44:17 +03:00
ddadmin fc5b235279 Обновление метаданных для роботов 2025-12-06 21:39:30 +03:00
ddadmin eaae2e1beb Актуализация версии Ariflow 2025-12-06 21:36:35 +03:00
ddadmin 97241b5b03 Переименование раздела 2025-12-06 21:36:21 +03:00
ddadmin a2bbceaebc Добавлена пропущенная иллюстрация 2025-12-06 20:33:36 +03:00
ddadmin f84f08b50f Стилистические правки 2025-12-06 20:29:07 +03:00
ddadmin 093ab58d7d Мелкие правки/уточнения 2025-12-06 19:41:12 +03:00
ddadmin 06c731f0b6 Раздел 7 - переработка текста 2025-12-06 19:35:45 +03:00
ddadmin 306eec90e8 Стилевые правки 2025-12-06 19:13:19 +03:00
ddadmin 116134a85e Вычитка и переработка раздела 5 2025-12-06 18:29:06 +03:00
ddadmin 4e89c10c3e Обновленный раздел 4 - актуализация по версии 2025-12-06 17:43:45 +03:00
ddadmin e28ea045a2 Раздел 3 2025-12-06 16:30:16 +03:00
ddadmin 045132a088 Еще одна диаграмма 2025-12-06 14:51:28 +03:00
ddadmin f811226648 Первые 2 раздела 2025-12-06 14:50:13 +03:00
ddadmin 2d3eb8eab4 шаблон под idea 2025-12-06 13:56:29 +03:00
ddadmin 4a3d5e2423 В введении к учебнику рассказано о практическом стенде 2025-11-04 16:21:24 +03:00
ddadmin f12acc23d5 Добавление учебных заданий 2025-11-04 14:24:15 +03:00
ddadmin 399df8a941 Отключен автозапуск 2025-11-04 14:00:13 +03:00
ddadmin a84c4a599f Отмена автозапуска + комментарии 2025-11-04 13:57:33 +03:00
ddadmin e23918ab8a Правка оформления 2025-11-04 13:46:39 +03:00
ddadmin d193f61000 Отмена запуска по расписанию 2025-11-04 13:46:29 +03:00
ddadmin fee2382069 Стабилизация файловой системы 2025-11-04 13:43:43 +03:00
ddadmin ca9a32080d Сделана более реалистичная генерация демо данных по людям 2025-11-04 13:38:20 +03:00
ddadmin 52fb50441a Переименована таблица, фикс багов 2025-11-04 12:38:35 +03:00
ddadmin bfc2696057 Автосоздание connection в Airflow 2025-11-03 22:52:19 +03:00
ddadmin d8f0a58563 Зависимости запуска контейнеров
Влияение на стабильность запуска airflow после инициализации
2025-11-03 22:27:11 +03:00