Рефакторинг инфраструктуры и конфигурации проекта
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Successful in 1m52s
CI/CD Pipeline / Run Tests (push) Failing after 2m2s
CI/CD Pipeline / Build & Push Images (push) Has been skipped

- Перенесена структура Django-конфига в src/core и src/settings

- Унифицирована Docker-сборка и docker-compose для dev/prod

- Добавлены startup-checks (DB/Redis) и обновлены env-шаблоны

- Расширена OpenAPI-документация и ответы API

- Удалены устаревшие deploy/requirements/служебные скрипты

- Обновлены CI/CD, README и тесты
This commit is contained in:
2026-02-18 13:25:01 +01:00
parent 0f4af561de
commit d5d184537f
71 changed files with 1253 additions and 2318 deletions

71
src/settings/dev.py Normal file
View File

@@ -0,0 +1,71 @@
"""
Development settings - закрытый контур, без переменных окружения.
"""
import os
from .base import *
SECRET_KEY = "django-insecure-development-key-mostovik-2024"
DEBUG = True
ALLOWED_HOSTS = ["*"]
OPENAPI_USE_ENGLISH_TAGS = True
# JWT
SIMPLE_JWT["SIGNING_KEY"] = SECRET_KEY
def _normalize_local_host(host: str) -> str:
"""Нормализует host для локального запуска backend на хосте."""
if host == "host.docker.internal":
return "127.0.0.1"
return host
_postgres_host = _normalize_local_host(os.getenv("POSTGRES_HOST", "127.0.0.1"))
_redis_host = _normalize_local_host(os.getenv("REDIS_HOST", "127.0.0.1"))
# Database
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": os.getenv("POSTGRES_DB", "mostovik"),
"USER": os.getenv("POSTGRES_USER", "postgres"),
"PASSWORD": os.getenv("POSTGRES_PASSWORD", "postgres"),
# При локальном запуске backend (не в контейнере) подключаемся к портам,
# проброшенным docker-compose.service.yml
"HOST": _postgres_host,
"PORT": os.getenv("POSTGRES_PORT", "5432"),
}
}
# Celery
_default_redis_broker = f"redis://{_redis_host}:6379/0"
_default_redis_cache = f"redis://{_redis_host}:6379/1"
CELERY_BROKER_URL = os.getenv("CELERY_BROKER_URL", _default_redis_broker).replace(
"host.docker.internal", "127.0.0.1"
)
CELERY_RESULT_BACKEND = os.getenv(
"CELERY_RESULT_BACKEND", _default_redis_broker
).replace("host.docker.internal", "127.0.0.1")
CELERY_ACCEPT_CONTENT = ["json"]
CELERY_TASK_SERIALIZER = "json"
CELERY_RESULT_SERIALIZER = "json"
CELERY_TIMEZONE = "Europe/Moscow"
# Cache
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": os.getenv("REDIS_CACHE_URL", _default_redis_cache).replace(
"host.docker.internal", "127.0.0.1"
),
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
},
}
}
# Email
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"