Уточнены порядок CSV/COPY, расположение логов callbacks, шаблонов и управления TaskGroup. Сохранены условия проверки, результаты 69 контрольных запусков и одного диагностического, SHA-256 DAG и снимки UI. Все этапы плана закрыты.
Основной и дополнительный маршруты проверены на Airflow 2.9.2. SMTP проверен локальным приемником, включая отказ доставки; внешняя почта и Windows отдельно не проверялись. Тестовые контейнеры и тома удалены.
Восемь блоков с явным началом, последовательными изменениями и наблюдаемыми результатами. Дополнительные упражнения имеют отдельные зависимости и условия возврата. Обновлены README, справочник DAG и пример уведомлений.
Проверены ссылки, якоря, отрисовка Markdown и основные сценарии в Airflow 2.9.2. Проверки дополнительных упражнений продолжаются и фиксируются в плане.
Управляемые ветки и ошибки, зависимости общих обработчиков, сохранение SQL-результата и фактическое чтение результатов Extract. Добавлен пример пулов и XCom; DQ-сводка сохраняет отказ при all_done.
Проверено на Airflow 2.9.2: импорт и запуск девяти исходных DAG, выбор веток, повтор и окончательные отказы обеих рабочих задач, отрицательный DQ-сценарий и восстановление, фильтрация Extract и ожидание слотов.
- Зачем: при переносе на 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>
- Зачем:
- упражнения должны быть понятнее и соответствовать ожидаемому уровню сложности.
- Что:
- добавлены подсказки и описания подводных камней.
- упрощены задания по отчетам, мониторингу и логированию.
- Проверка:
- git diff --check.
- Зачем:
- чтобы инструменты и агенты могли находить единый файл с инструкциями для репозитория.
- Что:
- добавлен файл CLAUDE.md.
- в файл помещена ссылка на AGENTS.md как точку входа в актуальные правила.
- Проверка:
- git status --short.
- Зачем:
- менти жаловался на слабую детализацию заданий, непонятные формулировки
(«ключевые метрики бизнеса», «мониторинг и логирование») и нереалистичное время.
- Что:
- убрано время выполнения из всех заданий.
- добавлены лаконичные подсказки: куда смотреть, какой API использовать, подводные камни.
- переписано задание 2 для data_processing_dag (было «дашборд с HTML» → «расширение текстового отчёта»).
- переписано задание 3 для error_handling_dag (было абстрактный «мониторинг» → конкретное «logging вместо print»).
- Проверка:
- вычитка документа, проверка что подсказки не содержат готовых решений.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- обратная связь от менти: 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>
- Зачем:
- убрать мелкие противоречия между спецификациями, учебным планом и заданиями.
- сделать сценарий 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.
- Зачем:
- сделать примеры более доступными для начинающих, убрав лишнюю архитектурную сложность (хелперы, внешние 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.
- Зачем:
- необходимо отразить в документации новый пайплайн загрузки CSV в PostgreSQL.
- студентам нужны конкретные задания для закрепления навыков ETL и Data Quality.
- Что:
- обновлен README.md: добавлено описание новых DAG-ов, папок sql/ и tests/, актуализирован путь обучения.
- обновлен educational-tasks.md: добавлены 4 новых задания (ETL, PostgresOperator, DQ проверки, Trigger Rules) и обновлен блок оценки прогресса.
- Проверка:
- визуальная проверка файлов README.md и educational-tasks.md в репозитории.
- Зачем:
- исключение локального виртуального окружения из git
- Что:
- добавлена запись venv/ в .gitignore
- Проверка:
- git status не должен показывать папку venv/
- Зачем:
- отражение изменений после миграции с 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
- Зачем:
- адаптация пайплайна для работы с чистым 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
- Зачем:
- Необходим пример загрузки данных из 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
- Зачем:
- старая ссылка на изображение была нерабочей, пользователю не хватало визуализации связей DAG, задач и операторов.
- Что:
- добавлена Mermaid-диаграмма в стиле flowchart LR.
- визуализирована структура DAG как контейнера с последовательностью задач.
- показана связь каждой задачи с её технической реализацией (Operator/Sensor) через пунктирные линии.
- Проверка:
- визуальный осмотр рендеринга Mermaid в Markdown-превью.