Files
airflow-manual/airflow-docker/AGENTS.md
T

186 lines
5.5 KiB
Markdown

# AGENTS.md - Guide for AI Agents
## 🎯 Purpose
This file provides guidance for AI agents working on the educational Airflow setup. It contains information about code style, debugging approaches, and project structure.
## 📁 Project Structure Overview
```
airflow-docker/
├── docker-compose.yml # Docker configuration and environment
├── dags/ # DAG files for learning
│ ├── hello_world_dag.py # Basic Python operators
│ ├── sql_basic_dag.py # SQL operations
│ ├── file_operations_dag.py # File processing
│ ├── data_processing_dag.py # ETL pipeline
│ ├── branching_dag.py # Conditional logic
│ └── error_handling_dag.py # Error handling
├── data/ # Data for exercises
│ ├── input/ # Input data
│ └── output/ # Processing results
├── logs/ # Airflow logs
└── README.md # Main documentation
```
## 🎓 Learning Progression for Students
### Basic Concepts
- **DAG Structure**: Understanding basic DAG components
- **Python Operators**: PythonOperator, BashOperator basics
- **Task Dependencies**: Setting up task execution order
### Data Integration
- **PostgreSQL Connections**: Database connectivity
- **SQL Operations**: CRUD operations in tasks
- **File Processing**: CSV operations and data transformation
### Advanced Features
- **Conditional Logic**: BranchPythonOperator usage
- **Error Handling**: Task retries and failure management
## 🔧 Code Style Guidelines
### Python Code Style
- Use 4-space indentation
- Follow PEP 8 conventions
- Include comprehensive docstrings in Russian
- Use descriptive variable names in English
### DAG File Structure
```python
"""
Описание DAG на русском языке
Уровень: Начальный/Средний/Продвинутый
"""
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.python import PythonOperator
# Default arguments for DAG
default_args = {
'owner': 'student',
'depends_on_past': False,
'start_date': datetime(2023, 1, 1),
'email_on_failure': False,
'retries': 1,
'retry_delay': timedelta(minutes=5)
}
# DAG definition
dag = DAG(
'example_dag',
default_args=default_args,
description='Описание функциональности DAG',
schedule_interval=timedelta(days=1),
catchup=False,
tags=['educational', 'beginner']
)
```
## 🐛 Debugging Approaches
### Common Issues and Solutions
#### 1. DAG Not Appearing in UI
- Check DAG file location (`dags/` directory)
- Verify Python syntax and imports
- Check scheduler logs: `docker-compose logs airflow-scheduler`
- Ensure DAG has valid start_date
#### 2. Database Connection Errors
- Verify PostgreSQL services are running
- Check connection strings in environment variables
- Confirm database health checks
#### 3. Task Failures
- Check task logs in Airflow UI
- Verify required Python packages are installed
- Check database permissions and credentials
#### 4. Import Errors
- Ensure all required imports are available
- Check `requirements.txt` for missing dependencies
### Log Analysis
```bash
# Airflow scheduler logs
docker-compose logs airflow-scheduler
# Airflow webserver logs
docker-compose logs airflow-webserver
# PostgreSQL logs
docker-compose logs postgres-training
docker-compose logs postgres-metadata
```
## 📚 Key Files to Examine
### Configuration Files
- [`docker-compose.yml`](docker-compose.yml) - Main Docker configuration and environment variables
- [`requirements.txt`](requirements.txt) - Python dependencies
### Sample Data Files
- [`customers.csv`](data/input/customers.csv) - Customer data for exercises
- [`orders.csv`](data/input/orders.csv) - Order data for practical work
## 🛠️ Development Workflow
### Adding New DAGs
1. Create Python file in `dags/` directory
2. Ensure proper DAG structure and imports
3. File will be automatically discovered by scheduler
### Testing Changes
1. Restart services after major changes
2. Monitor scheduler logs for DAG processing
3. Use Airflow UI for monitoring and debugging
## 💡 Best Practices for AI Agents
### When Making Changes
- Always read the file first using `read_file`
- Use `apply_diff` for surgical edits
- Test DAG execution in Airflow UI
## 🎓 Educational Focus Areas
### For Beginners
- Focus on clear, commented code
- Include expected output descriptions
- Provide common pitfalls and solutions
### Code Quality Checks
- Validate DAG structure before deployment
- Test with sample data first
- Provide clear error messages and handling
### Progressive Complexity
- Start with simple print statements
- Progress to database operations
- Advance to error handling and conditional logic
## 🔍 Troubleshooting Checklist
### Before Reporting Issues
- [ ] Services are running: `docker-compose ps`
- [ ] DAG files are in correct location
- [ ] Environment variables are properly set
- [ ] Database connections are established
- [ ] Task dependencies are correctly set
- [ ] Required Python packages are installed
- [ ] DAG syntax is correct
- [ ] No import errors in DAG files
### Performance Monitoring
- Check task execution times in Airflow UI
- Monitor resource usage in Docker
- Review logs for warnings or errors
## 📝 Documentation Standards
### For New DAGs
- Include comprehensive docstring in Russian
- Describe learning objectives clearly
- Provide step-by-step task explanations