Files
mostovik-backend/CHANGELOG.md
Aleksandr Meshchriakov f121445313 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
2026-01-21 11:47:26 +01:00

4.0 KiB
Raw Permalink Blame History

Changelog

Все значимые изменения в проекте документируются в этом файле.

Формат основан на Keep a Changelog.


[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