Руководство по разработке
Структура проекта
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