feat(core): add core module with mixins, services, and background jobs

- Add Model Mixins: TimestampMixin, SoftDeleteMixin, AuditMixin, etc.
- Add Base Services: BaseService, BulkOperationsMixin, QueryOptimizerMixin
- Add Base ViewSets with bulk operations
- Add BackgroundJob model for Celery task tracking
- Add BaseAppCommand for management commands
- Add permissions, pagination, filters, cache, logging
- Migrate tests to factory_boy + faker
- Add CHANGELOG.md
- 297 tests passing
This commit is contained in:
2026-01-21 11:47:26 +01:00
parent 06b30fca02
commit f121445313
72 changed files with 9258 additions and 594 deletions

109
README.md
View File

@@ -17,21 +17,24 @@
## Структура проекта
```
src/
├── config/ # Конфигурация Django
│ ├── settings/ # Настройки (base, dev, prod)
│ ├── celery.py # Конфигурация Celery
└── urls.py # URL маршруты
├── apps/
│ ├── data_processor/ # Приложение обработки данных
├── scraping/ # Приложение веб-скрапинга
│ └── api/ # API endpoints
── manage.py # Управление Django
docker/ # Docker конфигурации
deploy/ # Файлы развертывания
requirements.txt # Основные зависимости
requirements-dev.txt # Зависимости для разработки
mostovik-backend/
├── src/ # Исходный код Django
│ ├── config/ # Конфигурация Django
│ ├── settings/ # Настройки (base, dev, prod, test)
│ ├── celery.py # Конфигурация Celery
│ │ └── urls.py # URL маршруты
│ ├── apps/ # Django приложения
│ └── user/ # Приложение пользователей
│ └── manage.py # Управление Django
── tests/ # Тесты (в корне проекта)
│ ├── apps/user/ # Тесты для user app
│ ├── conftest.py # Конфигурация pytest
│ └── README.md # Документация по тестам
├── docker/ # Docker конфигурации
├── deploy/ # Файлы развертывания
├── pyproject.toml # Конфигурация проекта и инструментов
├── Makefile # Команды для разработки
└── docker-compose.yml # Docker Compose для разработки
```
## Быстрый старт (локальная разработка)
@@ -44,12 +47,17 @@ curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.cargo/env
# Создание виртуального окружения с uv
uv venv venv
source venv/bin/activate
uv venv .venv
source .venv/bin/activate
# Установка зависимостей через uv
uv pip install -r requirements.txt
uv pip install -r requirements-dev.txt
uv pip install -e ".[dev]"
# Или через Makefile
make install
# Настройка окружения разработки (pre-commit hooks)
make setup-dev
```
### 2. Настройка окружения
@@ -207,20 +215,40 @@ celery -A config flower
### Запуск тестов
```bash
# Запуск всех тестов
pytest
make test
# Запуск с покрытием
pytest --cov=src
make test-cov
# Запуск линтеров
flake8 src/
black src/
# Запуск только быстрых тестов
make test-fast
# Запуск тестов конкретного модуля
make test TARGET=user
# Линтинг и форматирование
make lint
make format
# Проверка типов
make type-check
# Проверка безопасности
make security-check
```
### Создание миграций
```bash
# Через Makefile
make migrate
# Или напрямую
cd src
python manage.py makemigrations
python manage.py migrate
# Создание суперпользователя
make createsuperuser
```
### Работа с задачами Celery
@@ -234,6 +262,39 @@ result = process_extracted_data.delay()
print(result.id) # ID задачи
```
## Конфигурация инструментов
Все конфигурации инструментов разработки централизованы в файле `pyproject.toml`:
- **pytest**: настройки тестирования
- **coverage**: отчеты о покрытии кода
- **ruff**: линтинг и форматирование
- **black**: форматирование кода
- **isort**: сортировка импортов
- **mypy**: проверка типов
- **bandit**: проверка безопасности
### Полезные команды Make
```bash
# Качество кода
make lint # Проверка линтерами
make format # Форматирование кода
make type-check # Проверка типов
make security-check # Проверка безопасности
make pre-commit # Запуск всех pre-commit hooks
# Тестирование
make test # Все тесты
make test-cov # Тесты с покрытием
make test-fast # Только быстрые тесты
# Разработка
make shell # Django shell
make migrate # Миграции
make clean # Очистка временных файлов
```
## Безопасность
- Все секретные ключи хранятся в переменных окружения