Обзор архитектуры ПО Narmak
Краткий визуальный обзор архитектуры, полученный на основе анализа кодовой базы (backend: narmak_v2, frontend: narmak-nx-angular-main). Подробное описание — в architecture-registration.md.
1. Общая схема системы
Система построена по клиент-серверной архитектуре: несколько Angular-приложений общаются с единым Django REST API; часть задач выполняется асинхронно (Celery) и через внешние сервисы.
2. Backend: структура Django (narmak_v2)
Модульный монолит: приложения в app/ сгруппированы по доменам/фичам. Отдельного слоя репозиториев нет — доступ к данным через модели и сервисы.
3. Backend: маршрутизация API v2
Префиксы путей из narmak/api_url_v2.py: включения по приложениям и регистрация ViewSet в общем роутере.
4. Frontend: структура Nx workspace (narmak-nx-angular-main)
Несколько приложений и общие библиотеки; main-office — основное рабочее место с feature-based маршрутизацией.
5. Frontend: маршруты main-office (lazy-loaded фичи)
Маршруты из app-routing.module.ts: базовый layout с AuthGuard, дочерние пути загружаются лениво.
6. Поток данных: от клиента к БД
Упрощённая последовательность: клиент → Nginx → Django → сервис/модели → PostgreSQL; асинхронные задачи — через Celery и Redis.
7. Паттерны в коде (примеры)
| Паттерн | Где используется |
|---|---|
| Strategy | app/document/service/related_document/strategies.py — перенос позиций между документами (SupplyDemandTransferStrategy, ProcessingOrderTransferStrategy и др.) |
| Facade | app/document/service/related_document/creator.py — RelatedDocumentCreatorService скрывает создание связанного документа и выбор стратегии |
| Router + ViewSet | DRF SimpleRouter в api_url_v2.py — регистрация ресурсов API |
| Service layer | document, manufacture, company_structure, legal_dossier, warehouse_zones, employee_debt, qcheck |
8. Технологический стек (кратко)
| Слой | Технологии |
|---|---|
| Backend | Python 3.10+, Django 5.1, DRF, Celery, Channels (Daphne), Redis, PostgreSQL |
| Frontend | Angular 18, Nx 22, PrimeNG, Taiga UI, Akita, Formly |
| API | REST (api/v2), Token Auth, drf-yasg (Swagger) |
| Инфра | Docker (web, celery, redis, gotenberg, pgbouncer), Nginx |
| Интеграции | DaData, Wildberries, Ozon, Telegram, Gotenberg (PDF) |
Связанные документы
- architecture-registration.md — полная архитектурная документация (C4, развёртывание, безопасность, модули).
- PROJECT-EVOLUTION.md — история развития проекта по кварталам.
- adr/ — архитектурные решения (ADR).