Перейти к основному содержимому

Обзор архитектуры

DocAI построен на основе микросервисной архитектуры с разделением на frontend, backend и воркеры.

Диаграмма системы

Компоненты

Frontend (Next.js)

  • Фреймворк: Next.js 15 с App Router
  • UI: React 19, Tailwind CSS
  • Аутентификация: NextAuth с Credentials Provider
  • API клиент: Автогенерация из OpenAPI схемы

Backend (Django)

  • Фреймворк: Django 5.1
  • API: Django REST Framework
  • Аутентификация: JWT (SimpleJWT)
  • Admin: Django Unfold
  • Документация: drf-spectacular (Swagger)

Асинхронная обработка (Celery)

  • Брокер: Redis
  • Задачи: OCR, классификация, извлечение данных
  • Scheduler: Celery Beat

База данных

  • СУБД: PostgreSQL 14
  • ORM: Django ORM
  • Миграции: Django Migrations

Поток обработки документа

Модели данных

Request (Запрос)

Представляет один запрос на обработку (может содержать несколько файлов).

class Request:
id: UUID
user: User (optional)
status: PENDING | COMPLETED | PARTIAL_FAILURE
created_at: DateTime

Task (Задача)

Одна задача обработки для одного файла.

class Task:
id: UUID
request: Request
document: Document
status: PENDING | PROCESSING | COMPLETED | FAILED
document_name: str
error_message: str (optional)

Document (Документ)

Загруженный документ.

class Document:
id: UUID
document_type: DocumentType
file_path: File
request: Request

OcrResult (Результат OCR)

Результат OCR обработки.

class OcrResult:
id: UUID
task: Task
raw_text: str
fields: List[OcrResultField]

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

  • JWT токены с 30-дневным сроком действия
  • CORS настроен для разрешённых доменов
  • Валидация входных данных через serializers
  • Защита от CSRF в Django Admin