92 lines
4.0 KiB
Markdown
92 lines
4.0 KiB
Markdown
# 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
|