7.6 KiB
Перепроверка педагогического ревью
Дата: 2026-09-28. Исходная версия: f6b450c. После независимого ревью замечания проверены по текстам, Compose и исполнением примеров в Apache Airflow 2.9.2.
Оценка значимости и решения
Основные задания используют готовые DAG и правильные параметры учебной БД. Подтвержденные ошибки относятся к примерам теоретических глав: они мешают студенту, который переносит код из главы в стенд. Оценка их как блокировки всей основной практики была бы завышенной.
| Находка | Что подтвердилось | Решение |
|---|---|---|
| Параметры Connections из другого стенда | В главе 7 предлагались postgres / airflow / airflow, хотя Compose и практика используют postgres-training / training / student |
Исправлены поля формы. Добавлен полный DAG проверки подключения и наблюдаемый результат в БД |
| Задачи без привязки к DAG | Примеры greeting_dag и template_tracking_example падают при объявлении зависимостей; template_example создает DAG без задач |
Добавлены привязки и объяснение. Примеры шаблонов дополнены импортами и настройками, чтобы их можно было запускать целиком |
| Неподготовленный итоговый пример главы 9 | Нет исходного CSV и подготовки схем БД, расходятся имена Variable. После подстановки Variable пример падает при создании TaskGroup | Вместо отдельного пайплайна глава направляет к существующему resource_management_dag.py и блоку 8. Пример самой TaskGroup сделан самостоятельным; схема согласована с кодом |
| Слишком широкое чтение перед упражнениями | Для XCom перед блоком 4 была указана вся глава 9 | В таблице маршрута даны ссылки на нужные разделы. Callback отмечен как подготовка к дополнительному 7.B |
| Дополнительный опыт с Clear | Нехватка понимания повторов у студентов не подтверждена. Основные задания уже показывают новые запуски и retry; в 4.1 есть объяснение различия повторной загрузки и нового CSV | Обязательная практика сохранена: 16 основных и 18 дополнительных заданий. Опыт с Clear имеет смысл добавлять после наблюдения за студентами, если они путают эти случаи |
Воспроизведение исходных ошибок
Код извлечен из Python-блоков глав на f6b450c и исполнен в одноразовом контейнере образа airflow-manual-practice-check:2.9.2, ранее собранного из Dockerfile стенда. Версия внутри контейнера: 2.9.2.
В неполные примеры главы 7 переданы недостающие импорты и default_args, чтобы проверить именно привязку задач. Для итогового примера главы 9 Variable.get заменен на тестовое значение строки подключения: это позволило дойти до создания TaskGroup без подготовки посторонних данных.
| Пример | Результат до правок |
|---|---|
greeting_dag |
AirflowException: Tried to create relationships between tasks that don't have DAGs yet |
template_example |
Разбор без исключения, список задач пуст |
template_tracking_example |
То же исключение при создании зависимостей |
customer_pipeline_enhanced |
AirflowException: TaskGroup can only be used inside a dag |
Проверка исправленных примеров
Полные Python-блоки текущих глав исполнены без дополнений к коду. Затем вызван DAG.test() для логической даты 2024-01-02 UTC; SQL-пример дополнительно запущен для 2024-01-03 UTC.
Окружение: тот же образ Airflow 2.9.2, отдельная SQLite для метаданных и отдельная PostgreSQL 16 с базой training. Подключение my_postgres_conn передано через окружение с полями из инструкции. Контейнеры работали во внутренней сети без опубликованных портов. Каталог репозитория смонтирован только для чтения. Временные контейнеры, сеть и данные удалены после проверки.
| Пример | Проверенный результат |
|---|---|
greeting_dag |
Две успешные задачи; функция приветствия исполнилась |
template_example |
Одна успешная задача; результат Bash - 2024-01-02 |
template_tracking_example |
Две успешные задачи; результаты Bash - 2024-01-02 и Processing for 2024-01-02 |
connection_example |
Оба запуска успешны; to_regclass возвращает connection_demo_users, таблица содержит 0 строк |
task_group_example |
Все семь задач успешны; проверены полные идентификаторы и шесть зависимостей, показанных на схеме |
Все шесть DAG Run завершились успешно. Ссылки на файлы и разделы проверены после преобразования Markdown в HTML. Содержание упражнений после таблицы маршрута совпадает с исходной версией.
Границы проверки
DAG.test() подтверждает разбор графа, выполнение задач, подстановку шаблонов и работу SQL. Этот прогон не проверяет работу планировщика по расписанию, форму Connections и отображение графов в UI. Основные DAG стенда не менялись; прежний протокол практики остается отдельной проверкой их поведения.
Трудность и время прохождения на студентах не измерялись. Педагогическое предположение о пользе нового опыта с Clear остается гипотезой, а не открытой ошибкой реализации.