# 📁 Структура проекта ERP MVP ``` erp-mvp/ ├── 📁 core-service/ # Go Backend (Core API) │ ├── 📁 cmd/ │ │ └── main.go # Точка входа приложения │ ├── 📁 internal/ │ │ ├── 📁 api/ # HTTP API handlers │ │ ├── 📁 config/ # Конфигурация │ │ ├── 📁 database/ # Работа с БД │ │ ├── 📁 grpc/ # gRPC клиенты/серверы │ │ ├── 📁 logger/ # Логирование │ │ ├── 📁 models/ # Модели данных │ │ ├── 📁 redis/ # Redis клиент │ │ └── 📁 services/ # Бизнес-логика │ ├── 📁 pkg/ # Публичные пакеты │ ├── 📁 proto/ # Сгенерированные Protocol Buffers │ ├── go.mod # Go зависимости │ ├── go.sum # Go checksums │ └── Dockerfile # Docker образ │ ├── 📁 doc-service/ # Python Document Service │ ├── 📁 app/ │ │ ├── 📁 api/ # FastAPI роуты │ │ │ ├── routes/ │ │ │ └── middleware/ │ │ ├── 📁 core/ # Основная логика │ │ │ ├── redis_client.py │ │ │ └── logging.py │ │ ├── 📁 models/ # Pydantic модели │ │ │ └── document.py │ │ ├── 📁 services/ # Сервисы генерации документов │ │ │ ├── pdf_service.py │ │ │ ├── excel_service.py │ │ │ └── qr_service.py │ │ ├── 📁 templates/ # Jinja2 шаблоны │ │ ├── config.py # Конфигурация │ │ └── main.py # Точка входа │ ├── 📁 output/ # Генерируемые документы │ ├── requirements.txt # Python зависимости │ └── Dockerfile # Docker образ │ ├── 📁 frontend/ # Angular PWA Frontend │ ├── 📁 src/ │ │ ├── 📁 app/ │ │ │ ├── 📁 components/ # Angular компоненты │ │ │ │ ├── header/ │ │ │ │ ├── qr-scanner/ │ │ │ │ ├── location-details/ │ │ │ │ ├── item-list/ │ │ │ │ └── search/ │ │ │ ├── 📁 services/ # Angular сервисы │ │ │ │ ├── api.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ └── auth.interceptor.ts │ │ │ ├── 📁 store/ # NgRx store │ │ │ │ ├── app.reducers.ts │ │ │ │ ├── app.effects.ts │ │ │ │ └── app.actions.ts │ │ │ ├── 📁 models/ # TypeScript модели │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ └── app-routing.module.ts │ │ ├── 📁 assets/ # Статические ресурсы │ │ ├── 📁 environments/ # Конфигурация окружений │ │ ├── index.html │ │ ├── main.ts │ │ ├── styles.scss │ │ └── manifest.webmanifest # PWA манифест │ ├── package.json # Node.js зависимости │ ├── angular.json # Angular конфигурация │ ├── nginx.conf # Nginx конфигурация │ └── Dockerfile # Docker образ │ ├── 📁 proto/ # Protocol Buffers │ ├── core.proto # Core Service API │ ├── document.proto # Document Service API │ └── events.proto # Event-driven сообщения │ ├── 📁 docker/ # Docker конфигурации │ ├── 📁 postgres/ │ │ └── init.sql # Инициализация БД │ ├── 📁 prometheus/ │ │ └── prometheus.yml # Prometheus конфигурация │ └── 📁 grafana/ │ └── provisioning/ # Grafana дашборды │ ├── docker-compose.yml # Основной compose файл ├── README.md # Основная документация ├── STARTUP.md # Инструкции по запуску └── PROJECT_STRUCTURE.md # Этот файл ``` ## 🔧 Технологический стек ### Core Service (Go) - **Framework:** Gin (HTTP сервер) - **Database:** PostgreSQL (основная БД) - **Cache:** Redis (кэширование) - **Auth:** JWT (аутентификация) - **gRPC:** Protocol Buffers (межсервисная коммуникация) - **Logging:** logrus/zerolog (структурированное логирование) - **Monitoring:** Prometheus (метрики) ### Document Service (Python) - **Framework:** FastAPI (веб-фреймворк) - **PDF:** reportlab, weasyprint (генерация PDF) - **Excel:** openpyxl (работа с Excel) - **Word:** python-docx (работа с Word) - **QR:** qrcode (генерация QR-кодов) - **Templates:** Jinja2 (шаблонизация) - **Cache:** Redis (кэширование документов) - **gRPC:** grpcio (межсервисная коммуникация) ### Frontend (Angular) - **Framework:** Angular 17+ (SPA фреймворк) - **PWA:** @angular/service-worker (Progressive Web App) - **UI:** Angular Material (компоненты UI) - **Styling:** Tailwind CSS (утилитарные стили) - **QR Scanner:** @zxing/ngx-scanner (сканирование QR) - **State:** NgRx (управление состоянием) - **HTTP:** HttpClient (API запросы) ### Infrastructure - **Containerization:** Docker + Docker Compose - **Database:** PostgreSQL 15 (основная БД) - **Cache:** Redis 7 (кэширование) - **Gateway:** Traefik (опционально) - **Monitoring:** Prometheus + Grafana (опционально) - **Web Server:** Nginx (для frontend) ## 🚀 Архитектура ### Микросервисная архитектура ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Angular PWA │ │ Go Core │ │ PostgreSQL │ │ (Frontend) │◄──►│ Service │◄──►│ (Database) │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ │ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ │ QR Scanner │ │ Python Doc │ │ (Camera) │ │ Service │ └─────────────────┘ └─────────────────┘ │ ▼ ┌─────────────────┐ │ Redis Cache │ │ (Documents) │ └─────────────────┘ ``` ### Коммуникация между сервисами - **Frontend ↔ Core Service:** REST API (HTTP/JSON) - **Frontend ↔ Document Service:** REST API (HTTP/JSON) - **Core Service ↔ Document Service:** gRPC (Protocol Buffers) - **Все сервисы ↔ Redis:** Redis Protocol (кэширование) ## 📊 База данных ### Основные таблицы - **organizations** - Организации/компании - **users** - Пользователи системы - **storage_locations** - Места хранения - **items** - Товары/материалы - **item_placements** - Размещение товаров - **operations** - Операции с товарами ### Индексы - Организация-scope индексы для всех таблиц - Индексы по типам и категориям - Временные индексы для аналитики ## 🔐 Безопасность ### Аутентификация - JWT токены с refresh механизмом - Organization-scope на всех данных - Middleware для проверки прав доступа ### Валидация - Входная валидация всех параметров - SQL injection protection - XSS protection в frontend ### HTTPS - Обязательное использование HTTPS в продакшене - Secure cookies для JWT - CORS настройки для PWA ## 📱 PWA Особенности ### Service Worker - Кэширование статических ресурсов - Offline fallback для базовых функций - Background sync для операций ### QR Scanner - WebRTC для доступа к камере - Real-time распознавание QR-кодов - Fallback на ручной ввод ### Установка - Manifest для установки как нативное приложение - Splash screen и иконки - Автоматические обновления ## 🚀 Развертывание ### Docker Compose - Все сервисы в отдельных контейнерах - Автоматическая инициализация БД - Готовые образы для быстрого старта ### Мониторинг - Prometheus для сбора метрик - Grafana для визуализации - Structured logging для всех сервисов ### Масштабирование - Горизонтальное масштабирование сервисов - Load balancing через Traefik - Кэширование через Redis