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

View File

@@ -1,120 +0,0 @@
# CI/CD Pipeline Summary
## Что было сделано
### 1. Реализован Gitea Actions Pipeline
Создан файл конфигурации: `.gitea/workflows/ci-cd.yml`
Этапы pipeline:
- **lint** - проверка кода с помощью ruff
- **test** - запуск тестов Django с PostgreSQL и Redis
- **build** - сборка Docker образов (web и celery)
- **push** - пуш образов в Gitea Container Registry
### 2. Настройка зависимостей
- Созданы файлы `requirements.txt` и `requirements-dev.txt` из `pyproject.toml`
- Удалены проблемные зависимости (ipdb, pdbpp) из-за конфликтов
- Обновлена конфигурация ruff для игнорирования Django-специфичных ошибок
### 3. Исправления в коде
- Обновлен `ruff.toml` для корректной работы с Django
- Добавлен `TEST_RUNNER` в настройки Django
- Исправлен кастомный test runner
### 4. Docker-образы
- Проверена сборка обоих образов:
- `mostovik-web` - основное приложение
- `mostovik-celery` - worker и beat сервисы
## Как использовать
### 1. Настройка Gitea
В настройках репозитория установите:
**Secrets:**
```
GITEA_USERNAME = ваш_пользователь
GITEA_TOKEN = ваш_токен_доступа
```
**Variables:**
```
GITEA_REGISTRY_URL = адресашего_gitea_registry
```
### 2. Локальная проверка
Перед коммитом запускайте:
```bash
# Линтинг
uv run ruff check .
uv run ruff format . --check
# Тесты (если нужно)
uv run python run_tests.py
# Pre-commit
pre-commit run --all-files
```
### 3. Pipeline запускается автоматически
- При пуше в ветки `main` и `develop`
- При создании Pull Request'ов
## Особенности реализации
### Линтинг
- Используется **ruff** как основной линтер
- Проверяются все файлы проекта
- Автоматическое форматирование отключено в CI (только проверка)
### Тестирование
- Запускаются в изолированном окружении
- Используются сервисы PostgreSQL и Redis
- Для обхода проблем с ipdb используется специальный скрипт `run_tests.py`
### Сборка Docker
- Используются существующие Dockerfile'ы
- Кэширование слоев для ускорения сборки
- Multi-stage сборка не используется (по требованиям проекта)
### Пуш образов
- Только для веток `main` и `develop`
- Теги:
- `latest` для основной ветки
- `{branch-name}` для feature-веток
- `{commit-sha}` для каждого коммита
## Безопасность
- Все токены хранятся в Secrets
- Переменные окружения не попадают в логи
- Используются минимальные права для сервисов
## Мониторинг
Pipeline можно отслеживать в интерфейсе Gitea:
`Repository → Actions`
Каждый job имеет подробные логи для диагностики проблем.
## Возможные проблемы и решения
### 1. Ошибки линтинга
```bash
# Локальное исправление
uv run ruff check . --fix
uv run ruff format .
```
### 2. Проблемы с тестами
- Проверьте запущены ли PostgreSQL и Redis
- Убедитесь в корректности переменных окружения
- Проверьте наличие миграций
### 3. Ошибки сборки Docker
```bash
# Локальная проверка
docker build -f docker/Dockerfile.web -t test-web .
docker build -f docker/Dockerfile.celery -t test-celery .
```
## Поддержка
Документация по настройке находится в `docs/ci-cd-setup.md`