5.1 KiB
5.1 KiB
Repository Guidelines (для агентa и контрибьюторов)
Эта репа — учебный стенд для студентов (менти), которые только начинают с Airflow/Greenplum и Python. Пожалуйста, держите решения простыми, стабильными и хорошо объяснёнными.
Структура проекта
airflow/dags/— DAG-файлы (например,csv_to_greenplum.py,data_quality_greenplum.py).airflow/requirements.txt— зависимости, которые ставятся внутри контейнеров Airflow.sql/— DDL и вспомогательные SQL (например,sql/ddl_gp.sql).docker-compose.yml— Greenplum, Airflow, Postgres (мета-БД).Makefile— удобные команды для локальной работы..env(.example)— настройки окружения (реальные секреты не коммитим).
Команды (основные)
make up— поднять весь стек.make airflow-init— инициализировать мета-БД Airflow и создать пользователя.make logs— логи webserver и scheduler.make ddl-gp— применить DDL к Greenplum.make gp-psql— открытьpsqlв контейнере Greenplum отgpadmin.make down— остановить и удалить тома (данные будут потеряны).
Пример: make up && make airflow-init, затем открыть http://localhost:8080.
Локальное Python‑окружение
- Используем
uv: достаточноuv sync(илиmake dev-sync) — подтянет Python, создаст.venv, установит зависимости. make dev-setupполезен при смене версии Python (выполнитuv python install+uv python pinпередuv sync).- Проверки:
make test,make lint,make fmt(выполняются черезuv run). - Не используем
pip install --user; если что‑то попало в user‑site — удалитьpip uninstall <package>и проверитьpip list --user. - В IDE выбираем интерпретатор из
.venv.
Стиль кода
- Python: PEP 8, 4 пробела,
snake_case;dag_id—lower_snake_case. - Импорты: stdlib → third‑party → local, по одному модулю в строке.
- SQL: ключевые слова UPPERCASE, идентификаторы
snake_case, завершаем;. - Форматирование:
black(88 cols) иisort. Если не уверены — запуститеmake fmt. - Язык: комментарии, docstring и документацию — на русском; имена идентификаторов — на английском.
Тестирование
- Тесты лежат в
tests/(pytest). Запуск:make test. - Есть юнит‑тесты для
helpers/greenplum.pyи smoke‑тесты DAG‑структуры (tests/test_dags_smoke.py). - Smoke‑тесты DAG автоматически пропускаются, если Airflow не установлен в venv.
- Для ручного прогона стенда см.
TESTING.md(пошаговый чек‑лист для студентов).
Pull Requests
- Conventional Commits:
feat:,fix:,docs:,chore:,refactor:. Пример:feat(dags): load orders to Greenplum. - Держите изменения минимальными и локальными. Не переименовывайте Make‑таргеты без обновления документации.
- В описании PR добавляйте скрин DAG‑графа или логи задач, если менялась логика.
- При изменении схемы/поведения — обновляйте
README.mdиsql/ddl_gp.sql.
Безопасность и конфигурация
- Все настройки — через
.env; креды в коде не хардкодим. Частые переменные:GP_*,PG_*,AIRFLOW_*,CSV_*. make downудаляет тома — предупреждайте студентов, что данные пропадут.
Для агента (особенности аудитории)
- Пишите простыми словами. Добавляйте короткие комментарии к нетривиальной логике.
- Избегайте больших рефакторингов и сложных паттернов — студенты только начинают.
- Ошибки и логи — дружелюбные и понятные (лучше с подсказкой «что сделать дальше»).
- Перед релевантными правками валидируйте локально:
make up && make airflow-init, затем откройте DAG в UI и/или прогонитеmake test.