Files
state-corp-backend/README.md
Aleksandr Meshchriakov e9d7f24aaa
Some checks failed
CI/CD Pipeline / Run Tests (push) Failing after 0s
CI/CD Pipeline / Code Quality Checks (push) Failing after 1m43s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
first commit
2026-01-21 12:07:35 +01:00

9.3 KiB
Raw Permalink Blame History

State-Corp / Отчётность Организаций

Backend для системы Отчётность Организаций (State-Corp).

Технологический стек

  • Python: 3.11.2
  • Django: 3.2.25
  • Django REST Framework: 3.14.0
  • PostgreSQL: 15.10
  • Redis: 7.x
  • Celery: 5.3.6
  • Scrapy: 2.11.2
  • Gunicorn: 21.2.0
  • Apache: 2.4.57

Структура проекта

state-corp-backend/
├── src/                    # Исходный код Django
│   ├── config/            # Конфигурация Django
│   │   ├── settings/      # Настройки (base, dev, prod, test)
│   │   ├── celery.py     # Конфигурация Celery
│   │   └── urls.py       # URL маршруты
│   ├── apps/              # Django приложения
│   │   └── user/         # Приложение пользователей
│   └── manage.py         # Управление Django
├── tests/                  # Тесты (в корне проекта)
│   ├── apps/user/         # Тесты для user app
│   ├── conftest.py       # Конфигурация pytest
│   └── README.md         # Документация по тестам
├── docker/                # Docker конфигурации  
├── deploy/                # Файлы развертывания
├── pyproject.toml         # Конфигурация проекта и инструментов
├── Makefile              # Команды для разработки
└── docker-compose.yml    # Docker Compose для разработки

Быстрый старт (локальная разработка)

1. Установка зависимостей

# Установка uv (если не установлен)
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.cargo/env

# Создание виртуального окружения с uv
uv venv .venv
source .venv/bin/activate

# Установка зависимостей через uv
uv pip install -e ".[dev]"

# Или через Makefile
make install

# Настройка окружения разработки (pre-commit hooks)
make setup-dev

2. Настройка окружения

# Копирование файла окружения
cp .env.example .env

# Редактирование .env файла по необходимости
nano .env

3. Запуск с Docker Compose (рекомендуется)

# Запуск всех сервисов
docker-compose up -d

# Проверка состояния контейнеров
docker-compose ps

# Просмотр логов
docker-compose logs -f web

4. Ручная настройка (без Docker)

Запуск баз данных:

# PostgreSQL
sudo systemctl start postgresql

# Redis
sudo systemctl start redis

Миграции и запуск:

cd src

# Миграции
python manage.py makemigrations
python manage.py migrate

# Создание суперпользователя
python manage.py createsuperuser

# Запуск разработческого сервера
python manage.py runserver

# Запуск Celery worker (в отдельном терминале)
celery -A config worker --loglevel=info

# Запуск Celery beat (в отдельном терминале)
celery -A config beat --loglevel=info

API Endpoints

Основной префикс: /api/

Data Processor

  • GET/POST /api/data-sources/ - Источники данных
  • GET/POST /api/data-pipelines/ - ETL пайплайны
  • GET /api/extracted-data/ - Извлеченные данные
  • GET /api/processing-logs/ - Логи обработки

Web Scraping

  • GET/POST /api/scraping-jobs/ - Задачи скрапинга
  • GET /api/scraped-items/ - Скрапленные данные
  • GET/POST /api/spider-configurations/ - Конфигурации пауков
  • GET/POST /api/proxy-servers/ - Прокси сервера

Аутентификация

  • POST /api/api-token-auth/ - Получение API токена

Развертывание на сервере Astra Linux

Автоматическое развертывание

# Сделать скрипт исполняемым
chmod +x deploy/scripts/deploy.sh

# Запуск скрипта развертывания
sudo ./deploy/scripts/deploy.sh

Ручное развертывание

  1. Установка системных зависимостей:
sudo apt-get update
sudo apt-get install python3.11 python3.11-venv postgresql-15 redis-server nginx
  1. Настройка проекта:
# Клонирование репозитория
git clone ваш_репозиторий.git /var/www/project
cd /var/www/project

# Создание виртуального окружения
python3.11 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Настройка базы данных
sudo -u postgres psql -c "CREATE DATABASE project_prod;"
sudo -u postgres psql -c "CREATE USER project_user WITH PASSWORD 'secure_password';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE project_prod TO project_user;"
  1. Конфигурация systemd:
sudo cp deploy/systemd/*.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable gunicorn celery-worker celery-beat
  1. Настройка Apache:
sudo cp deploy/apache/project.conf /etc/apache2/sites-available/project.conf
sudo a2ensite project.conf
sudo a2enmod ssl rewrite headers expires
sudo a2dissite 000-default
sudo systemctl restart apache2

Мониторинг и логирование

Логи приложения

# Логи Django
tail -f logs/django.log

# Логи Celery
tail -f logs/celery.log

# Системные логи
journalctl -u gunicorn -f
journalctl -u celery-worker -f

Мониторинг Celery

# Запуск Flower (в отдельном терминале)
celery -A config flower

# Доступ через браузер: http://localhost:5555

Разработка

Запуск тестов

# Запуск всех тестов
make test

# Запуск с покрытием
make test-cov

# Запуск только быстрых тестов
make test-fast

# Запуск тестов конкретного модуля
make test TARGET=user

# Линтинг и форматирование
make lint
make format

# Проверка типов
make type-check

# Проверка безопасности
make security-check

Создание миграций

# Через Makefile
make migrate

# Или напрямую
cd src
python manage.py makemigrations
python manage.py migrate

# Создание суперпользователя
make createsuperuser

Работа с задачами Celery

# В коде Python
from apps.data_processor.tasks import process_extracted_data
from apps.scraping.tasks import run_scraping_job

# Запуск асинхронно
result = process_extracted_data.delay()
print(result.id)  # ID задачи

Конфигурация инструментов

Все конфигурации инструментов разработки централизованы в файле pyproject.toml:

  • pytest: настройки тестирования
  • coverage: отчеты о покрытии кода
  • ruff: линтинг и форматирование
  • black: форматирование кода
  • isort: сортировка импортов
  • mypy: проверка типов
  • bandit: проверка безопасности

Полезные команды Make

# Качество кода
make lint          # Проверка линтерами
make format        # Форматирование кода
make type-check    # Проверка типов
make security-check # Проверка безопасности
make pre-commit    # Запуск всех pre-commit hooks

# Тестирование
make test          # Все тесты
make test-cov      # Тесты с покрытием
make test-fast     # Только быстрые тесты

# Разработка
make shell         # Django shell
make migrate       # Миграции
make clean         # Очистка временных файлов

Безопасность

  • Все секретные ключи хранятся в переменных окружения
  • Используется HTTPS в продакшене
  • Настроены заголовки безопасности в Apache
  • Регулярное обновление зависимостей

Поддержка

Для вопросов и поддержки обращайтесь к документации Django и используемым библиотекам:

Лицензия

MIT License