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:
91
CHANGELOG.md
Normal file
91
CHANGELOG.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# Changelog
|
||||
|
||||
Все значимые изменения в проекте документируются в этом файле.
|
||||
|
||||
Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/).
|
||||
|
||||
---
|
||||
|
||||
## [0.2.0] - 2026-01-21
|
||||
|
||||
### Добавлено
|
||||
|
||||
#### Core Module (`apps.core`)
|
||||
- **Model Mixins** (`mixins.py`):
|
||||
- `TimestampMixin` — автоматические `created_at`, `updated_at`
|
||||
- `UUIDPrimaryKeyMixin` — UUID вместо auto-increment ID
|
||||
- `SoftDeleteMixin` — мягкое удаление с `is_deleted`, `deleted_at`
|
||||
- `AuditMixin` — отслеживание `created_by`, `updated_by`
|
||||
- `OrderableMixin` — поле `order` для сортировки
|
||||
- `StatusMixin` — статусы draft/active/inactive/archived
|
||||
- `SlugMixin` — URL-friendly идентификаторы
|
||||
|
||||
- **Base Services** (`services.py`):
|
||||
- `BaseService` — базовый CRUD сервис
|
||||
- `BaseReadOnlyService` — только чтение
|
||||
- `TransactionMixin` — управление транзакциями
|
||||
- `BulkOperationsMixin` — массовые операции (bulk_create_chunked, bulk_update_or_create, bulk_delete, bulk_update_fields)
|
||||
- `QueryOptimizerMixin` — декларативная оптимизация запросов (select_related, prefetch_related, only, defer)
|
||||
- `BackgroundJobService` — управление фоновыми задачами
|
||||
|
||||
- **Base ViewSets** (`viewsets.py`):
|
||||
- `BaseViewSet` — базовый CRUD ViewSet с пагинацией, фильтрацией, логированием
|
||||
- `ReadOnlyViewSet` — только чтение
|
||||
- `OwnerViewSet` — фильтрация по владельцу
|
||||
- `BulkMixin` — массовые операции через API (bulk_create, bulk_update, bulk_delete)
|
||||
|
||||
- **Background Job Tracking** (`models.py`):
|
||||
- Модель `BackgroundJob` для отслеживания Celery задач
|
||||
- API endpoints: `GET /api/v1/jobs/`, `GET /api/v1/jobs/{task_id}/`
|
||||
- Статусы: pending, started, success, failure, revoked, retry
|
||||
- Прогресс выполнения и результаты
|
||||
|
||||
- **Management Commands** (`management/commands/base.py`):
|
||||
- `BaseAppCommand` — базовый класс для команд
|
||||
- Поддержка `--dry-run`, `--silent`
|
||||
- Прогресс-бар, измерение времени, логирование
|
||||
|
||||
- **Прочее**:
|
||||
- `exceptions.py` — кастомные исключения API
|
||||
- `permissions.py` — базовые permissions (IsOwner, IsAdminOrReadOnly и др.)
|
||||
- `pagination.py` — CursorPagination
|
||||
- `filters.py` — BaseFilterSet
|
||||
- `cache.py` — декораторы кэширования
|
||||
- `tasks.py` — BaseTask для Celery
|
||||
- `logging.py` — структурированное логирование
|
||||
- `middleware.py` — RequestIDMiddleware
|
||||
- `signals.py` — SignalDispatcher
|
||||
- `response.py` — унифицированные API ответы
|
||||
- `openapi.py` — декоратор для документации
|
||||
|
||||
#### Тестирование
|
||||
- Переход на `factory_boy` + `faker` (вместо model_bakery + uuid)
|
||||
- Фабрики: `UserFactory`, `ProfileFactory`
|
||||
- 297 тестов
|
||||
|
||||
#### Конфигурация
|
||||
- API versioning: `/api/v1/`
|
||||
- Отдельный `test.py` для настроек тестов
|
||||
- Обновлён `pyproject.toml`
|
||||
- Правила разработки в `.qoder/rules/main.md`
|
||||
|
||||
### Изменено
|
||||
- Структура тестов перенесена в `/tests/apps/`
|
||||
- Удалён `conftest.py` (pytest не используется)
|
||||
- Обновлены URLs с namespace
|
||||
|
||||
### Удалено
|
||||
- `ruff.toml` (конфигурация перенесена в pyproject.toml)
|
||||
- `CI_CD_SUMMARY.md`
|
||||
- `custom_test_runner.py`
|
||||
|
||||
---
|
||||
|
||||
## [0.1.0] - 2026-01-20
|
||||
|
||||
### Добавлено
|
||||
- Начальная структура проекта
|
||||
- Приложение `user` с JWT аутентификацией
|
||||
- Базовые модели User и Profile
|
||||
- Docker конфигурация
|
||||
- Pre-commit hooks
|
||||
Reference in New Issue
Block a user