Files
Mini-ERP-app/PROJECT_STRUCTURE.md
2025-08-27 12:47:23 +04:00

11 KiB
Raw Blame History

📁 Структура проекта 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