feat(api): полное API для всех парсеров с документацией

This commit is contained in:
2026-02-01 15:19:21 +01:00
parent eacb1527c4
commit efa5c3ae34
8 changed files with 840 additions and 141 deletions

View File

@@ -1,22 +1,49 @@
"""
API v1 URL configuration.
All API endpoints are versioned under /api/v1/
Все API эндпоинты версионированы под /api/v1/
Структура:
- /api/v1/users/ - Аутентификация и пользователи
- /api/v1/jobs/ - Фоновые задачи
- /api/v1/minpromtorg/ - Минпромторг (сертификаты, производители)
- /api/v1/proverki/ - Единый реестр проверок
- /api/v1/zakupki/ - Государственные закупки
- /api/v1/fns/ - ФНС (бухгалтерская отчетность)
- /api/v1/system/ - Системные (логи, прокси) - только для админов
"""
from apps.core.views import BackgroundJobListView, BackgroundJobStatusView
from apps.parsers.urls import fns_urlpatterns
from apps.parsers.urls import (
fns_urlpatterns,
minpromtorg_urlpatterns,
proverki_urlpatterns,
system_urlpatterns,
zakupki_urlpatterns,
)
from django.urls import include, path
app_name = "api_v1"
# Фоновые задачи
jobs_urlpatterns = [
path("", BackgroundJobListView.as_view(), name="job-list"),
path("<str:task_id>/", BackgroundJobStatusView.as_view(), name="job-status"),
]
urlpatterns = [
# Аутентификация и пользователи
path("users/", include("apps.user.urls")),
path("fns/", include((fns_urlpatterns, "fns"))),
# Фоновые задачи
path("jobs/", include((jobs_urlpatterns, "jobs"))),
# Парсеры - Минпромторг
path("minpromtorg/", include((minpromtorg_urlpatterns, "minpromtorg"))),
# Парсеры - Единый реестр проверок
path("proverki/", include((proverki_urlpatterns, "proverki"))),
# Парсеры - Государственные закупки
path("zakupki/", include((zakupki_urlpatterns, "zakupki"))),
# Парсеры - ФНС бухгалтерская отчетность
path("fns/", include((fns_urlpatterns, "fns"))),
# Системные (только админы)
path("system/", include((system_urlpatterns, "system"))),
]

View File

@@ -344,6 +344,24 @@ if isinstance(CORS_ALLOWED_ORIGINS, str):
CORS_ALLOWED_ORIGINS = CORS_ALLOWED_ORIGINS.split(",")
CORS_ALLOW_CREDENTIALS = True
# =============================================================================
# SWAGGER SETTINGS (drf-yasg)
# =============================================================================
SWAGGER_SETTINGS = {
"SECURITY_DEFINITIONS": {
"Bearer": {
"type": "apiKey",
"name": "Authorization",
"in": "header",
"description": "JWT авторизация. Формат: Bearer <access_token>",
}
},
"USE_SESSION_AUTH": True,
"PERSIST_AUTH": True,
"REFETCH_SCHEMA_WITH_AUTH": True,
"REFETCH_SCHEMA_ON_LOGOUT": True,
}
# Logging configuration
LOGGING = {
"version": 1,

View File

@@ -17,8 +17,21 @@ schema_view = get_schema_view(
openapi.Info(
title="Mostovik API",
default_version="v1",
description="API documentation for Mostovik project",
terms_of_service="https://www.google.com/policies/terms/",
description="""
## API документация для проекта Mostovik
### Авторизация
Для доступа к защищённым эндпоинтам используйте JWT токен:
1. Получите токен через `POST /api/v1/users/login/`
2. Добавьте заголовок: `Authorization: Bearer <access_token>`
### Обновление токена
Используйте `POST /api/v1/users/token/refresh/` с refresh токеном.
### Парсеры
API предоставляет только чтение данных (GET, GET list).
Добавление и удаление записей происходит через парсеры и админку.
""",
contact=openapi.Contact(email="contact@mostovik.local"),
license=openapi.License(name="BSD License"),
),