Обзор архитектуры
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