Используемые продукты и протоколы
На этой странице перечислены все внешние продукты, библиотеки и протоколы, используемые в проекте, с кратким объяснением назначения каждого.
Серверная часть
| Продукт |
Версия |
Назначение |
| Python |
3.12 |
Основной язык серверной части |
| FastAPI |
— |
Каркас для построения REST-адресов серверной части. Обеспечивает автоматическую проверку входных данных и формирование документации по адресам |
| Uvicorn |
— |
Веб-сервер для запуска приложения FastAPI. Обрабатывает входящие HTTP-запросы |
| Pydantic |
— |
Описание и проверка структур данных (схем запросов и ответов) |
| Motor |
— |
Асинхронный драйвер для работы с MongoDB из Python. Позволяет не блокировать обработку запросов при обращении к базе данных |
| Celery |
— |
Система распределённых задач. Используется для выполнения длительных операций (поиск по реестру) в фоновом режиме |
| pdf2image |
— |
Преобразование страниц PDF в изображения для последующего распознавания |
| pytesseract |
— |
Оптическое распознавание символов (OCR). Извлекает текст из изображений страниц |
| openpyxl |
— |
Чтение и запись файлов Excel. Используется для импорта реестров и выгрузки результатов |
Пользовательский интерфейс
| Продукт |
Версия |
Назначение |
| React |
19 |
Библиотека для построения пользовательского интерфейса |
| TypeScript |
— |
Язык программирования с проверкой типов. Помогает обнаруживать ошибки до запуска программы |
| Vite |
— |
Инструмент сборки пользовательского интерфейса. Обеспечивает быструю сборку и горячую перезагрузку при разработке |
| React Query (TanStack Query) |
— |
Управление серверным состоянием: отправка запросов, кэширование ответов, автоматическое обновление данных |
| Zustand |
— |
Хранилище локального состояния интерфейса (фильтры, выбранные элементы, состояние модальных окон) |
| Tailwind CSS |
— |
Набор готовых стилей для оформления интерфейса |
| Radix UI (shadcn/ui) |
— |
Набор доступных компонентов интерфейса: кнопки, таблицы, выпадающие списки, модальные окна |
| Axios |
— |
Библиотека для отправки HTTP-запросов к серверной части |
Хранение данных
| Продукт |
Версия |
Назначение |
| MongoDB |
7 |
Документная база данных. Хранит сведения о документах, реестрах, группах, настройках и заданиях. Выбрана из-за гибкой схемы --- разные типы документов могут иметь разный набор полей |
| MinIO |
— |
S3-совместимое хранилище файлов. Хранит исходные PDF, изображения страниц и превью документов. Позволяет работать с файлами по тем же правилам, что и облачное хранилище Amazon S3, но на собственном сервере |
| Redis |
7 |
Хранилище в оперативной памяти. Используется как брокер сообщений для передачи задач между серверной частью и фоновым обработчиком Celery |
Внешние сервисы
| Продукт |
Назначение |
| Claude (Anthropic) |
Языковая модель для интеллектуальной обработки документов: разделение многостраничных файлов на отдельные документы, определение типа, извлечение ключевых полей. Поддерживает два режима --- немедленный и пакетный (со скидкой 50 %) |
| Google Cloud Vision |
Дополнительный сервис оптического распознавания символов. Включается по необходимости через настройку GCP_VISION_ENABLED. Используется как альтернатива встроенному распознавателю pytesseract для повышения качества извлечения текста |
Инфраструктура
| Продукт |
Назначение |
| Docker |
Контейнеризация всех компонентов. Каждый сервис работает в изолированном контейнере со своими зависимостями |
| Docker Compose |
Описание и управление набором контейнеров. Один файл docker-compose.yml определяет все сервисы, их связи, ограничения ресурсов и порядок запуска |
| nginx |
Веб-сервер и обратный прокси. Принимает входящие HTTPS-запросы, раздаёт статические файлы интерфейса, проксирует обращения к серверной части |
| Let's Encrypt / certbot |
Автоматический выпуск и обновление SSL-сертификатов для HTTPS |
| MkDocs Material |
Генератор сайта документации из файлов в формате Markdown. Используется для создания этого сайта |
Протоколы и форматы
| Протокол / формат |
Где используется |
| HTTP / HTTPS |
Взаимодействие между браузером и сервером, между nginx и серверной частью |
| REST |
Архитектурный стиль серверных адресов. Все обращения к серверной части выполняются через REST-адреса с передачей данных в формате JSON |
| JSON |
Формат обмена данными между пользовательским интерфейсом и серверной частью |
| S3 (Amazon S3) |
Протокол взаимодействия с хранилищем файлов MinIO |
| WebSocket |
Не используется. Обновление данных на экране выполняется через периодические запросы (polling) |