Руководство по разработке

Структура проекта

SE-XP/
├── hw_checker/           # Django приложение (продукт)
│   ├── assignments/      # Основное приложение
│   │   ├── models.py    # Модели: Course, Homework, Submission
│   │   ├── views.py     # Views для студентов и преподавателей
│   │   ├── forms.py     # Формы
│   │   ├── tests.py     # Тесты
│   │   ├── decorators.py # Декораторы доступа
│   │   └── templates/   # HTML шаблоны
│   └── hw_checker/      # Настройки Django
├── docs/                # Sphinx документация
├── requirements.txt     # Зависимости продакшена
├── requirements-dev.txt # Зависимости разработки
├── Makefile            # Команды для разработки
└── .github/workflows/  # CI/CD

Команды разработки

Makefile предоставляет удобные команды для разработки:

Установка зависимостей

make install    # Установить все зависимости

Работа с базой данных

make migrate    # Применить миграции
make makemigrations  # Создать новые миграции

Запуск сервера

make run        # Запустить сервер разработки

Тестирование

make test       # Запустить все тесты

Или вручную:

cd hw_checker
python manage.py test

# С подробным выводом
python manage.py test --verbosity=2

# Конкретное приложение
python manage.py test assignments

Текущее покрытие: базовые тесты безопасности и функциональности

Линтинг и форматирование

# Автоформатирование (запускайте перед коммитом)
make format

# Или вручную:
cd hw_checker
black .
isort --profile black .

# Проверка стиля
make lint

# Или вручную:
flake8 hw_checker/
pylint hw_checker/assignments/

Предупреждение

CI проверяет все автоматически. Pull request не будет смержен, если есть ошибки линтера.

Сборка документации

# Локальная сборка
cd docs
make html
open _build/html/index.html  # macOS
# или
xdg-open _build/html/index.html  # Linux

# Онлайн-документация автоматически публикуется
# на GitHub Pages при коммите в main

Очистка

make clean      # Очистить временные файлы

Помощь

make help       # Список всех команд

Создание новых фич

1. Создайте ветку

git checkout -b feature/amazing-feature

2. Напишите тесты (TDD)

  • Сначала пишем failing test

  • Потом реализуем функционал

  • Проверяем, что тест проходит

3. Напишите код

  • Следуйте PEP 8

  • Добавьте docstrings (Google Style)

  • Простой дизайн (YAGNI)

4. Проверьте качество

make format  # Автоформатирование
make lint    # Проверка стиля
make test    # Запуск тестов

5. Создайте Pull Request

  • Опишите изменения

  • Ссылка на issue (если есть)

  • Дождитесь code review

  • CI должен пройти успешно

Стандарты кодирования

Смотрите раздел Руководство для разработчиков для подробных стандартов кодирования.

Полезные команды Django

Создание суперпользователя

python manage.py createsuperuser

Создание новых миграций

python manage.py makemigrations

Запуск интерактивной оболочки

python manage.py shell

Сборка статических файлов

python manage.py collectstatic

Проверка настроек

python manage.py check